From c5d80ef1376807109d9c94759bbf32d2b90df6c2 Mon Sep 17 00:00:00 2001 From: Ekrem Seren Date: Mon, 9 Sep 2024 21:00:19 +0300 Subject: [PATCH 1/4] add verify cheque fix deployment module --- ignition/modules/cmAccountVerifyChequeFix.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 ignition/modules/cmAccountVerifyChequeFix.js diff --git a/ignition/modules/cmAccountVerifyChequeFix.js b/ignition/modules/cmAccountVerifyChequeFix.js new file mode 100644 index 0000000..c793257 --- /dev/null +++ b/ignition/modules/cmAccountVerifyChequeFix.js @@ -0,0 +1,16 @@ +const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules"); + +// Deploys a new CMAccount with the verifyCheque function as a view function +const CMACcountVerifyChequeFixModule = buildModule("CMAccountVerifyChequeFixModule", (m) => { + // Get the BookingTokenOperator library on Columbus testnet + bookingTokenOperator = m.contractAt("BookingTokenOperator", "0x10133935503b4f958f6dFF783b628ba25aC010E3"); + + // Deploy CMAccount implementation with the BookingTokenOperator library + const CMAccountImpl = m.contract("CMAccount", [], { + libraries: { BookingTokenOperator: bookingTokenOperator }, + }); + + return { CMAccountImpl }; +}); + +module.exports = CMACcountVerifyChequeFixModule; From cb3a700e6b0fdd85e44788a49cb598e4f7c58043 Mon Sep 17 00:00:00 2001 From: Ekrem Seren Date: Mon, 9 Sep 2024 21:00:46 +0300 Subject: [PATCH 2/4] add columbus deployment for the new cm account impl with verify fix --- ...queFixModule#BookingTokenOperator.dbg.json | 4 + ...yChequeFixModule#BookingTokenOperator.json | 32 + ...ntVerifyChequeFixModule#CMAccount.dbg.json | 4 + ...ccountVerifyChequeFixModule#CMAccount.json | 2400 + .../3b111d61ddba7bf9692f9367e87086f7.json | 272482 +++++++++++++++ .../9ce97939ae38a806f04fa641296260ce.json | 132746 +++++++ .../chain-501/deployed_addresses.json | 4 +- ignition/deployments/chain-501/journal.jsonl | 8 +- 8 files changed, 407678 insertions(+), 2 deletions(-) create mode 100644 ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.dbg.json create mode 100644 ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.json create mode 100644 ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.dbg.json create mode 100644 ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.json create mode 100644 ignition/deployments/chain-501/build-info/3b111d61ddba7bf9692f9367e87086f7.json create mode 100644 ignition/deployments/chain-501/build-info/9ce97939ae38a806f04fa641296260ce.json diff --git a/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.dbg.json b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.dbg.json new file mode 100644 index 0000000..c1a8700 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/3b111d61ddba7bf9692f9367e87086f7.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.json b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.json new file mode 100644 index 0000000..59c4f0b --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#BookingTokenOperator.json @@ -0,0 +1,32 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BookingTokenOperator", + "sourceName": "contracts/booking-token/BookingTokenOperator.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenApprovalFailed", + "type": "error" + } + ], + "bytecode": "0x61056e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.dbg.json b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.dbg.json new file mode 100644 index 0000000..8bfa34d --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/9ce97939ae38a806f04fa641296260ce.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.json b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.json new file mode 100644 index 0000000..0e2a2f7 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/CMAccountVerifyChequeFixModule#CMAccount.json @@ -0,0 +1,2400 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CMAccount", + "sourceName": "contracts/account/CMAccount.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "latestImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountNoUpgradeNeeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "DepositorNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawableAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "prefundLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PrefundNotSpentYet", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ZeroValueDeposit", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "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": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BOOKING_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BOT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CHEQUE_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GAS_WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "gasMoney", + "type": "uint256" + } + ], + "name": "addMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "addPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "addService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "addServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "addSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "addWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "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": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service[]", + "name": "services", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "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": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "mintBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "removeMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "removeService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "removeServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "removeSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "removeWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "setGasMoneyWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isSupported", + "type": "bool" + } + ], + "name": "setOffChainPaymentSupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "setServiceCapabilities", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setServiceFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "setServiceRestrictedRate", + "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": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawGasMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614f7462000104600039600081816129150152818161293e0152612c9f0152614f746000f3fe6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613f0b565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fdf565b3480156103b457600080fd5b506103ca600080516020614edf83398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613ff2565b34801561040657600080fd5b5061042561041536600461410e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614179565b610e48565b34801561046a57600080fd5b5061047e6104793660046141ad565b610e56565b005b34801561048c57600080fd5b5061047e61049b36600461428c565b610f03565b3480156104ac57600080fd5b506103ca600080516020614eff83398151915281565b3480156104ce57600080fd5b506104e26104dd3660046142c0565b610f64565b60405161037d92919061435b565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614374565b611145565b34801561053157600080fd5b5061047e610540366004614374565b611165565b34801561055157600080fd5b5061047e61056036600461438d565b611201565b34801561057157600080fd5b5061039b610580366004614179565b611223565b34801561059157600080fd5b506103ca600080516020614e9f83398151915281565b3480156105b357600080fd5b5061047e6105c23660046143bd565b611231565b3480156105d357600080fd5b5061047e6105e236600461438d565b6113ed565b3480156105f357600080fd5b506103ca600080516020614dff83398151915281565b34801561061557600080fd5b5061047e61062436600461428c565b611420565b34801561063557600080fd5b5061047e610644366004614425565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614477565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144ec565b6114e3565b61047e6106ac36600461455a565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d91906145a9565b3480156106df57600080fd5b5061047e6106ee3660046145bd565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145e9565b611672565b34801561073457600080fd5b5061047e610743366004614374565b6116fe565b34801561075457600080fd5b5061039b610763366004614374565b611739565b34801561077457600080fd5b506103ca600080516020614e1f83398151915281565b34801561079657600080fd5b5061047e6107a53660046142c0565b611841565b3480156107b657600080fd5b506107bf611a43565b60405161037d929190614652565b3480156107d957600080fd5b5061047e6107e8366004614660565b611a65565b3480156107f957600080fd5b5061047e61080836600461467d565b611a86565b34801561081957600080fd5b5061047e61082836600461469f565b611aa8565b34801561083957600080fd5b5061047e610848366004614660565b611ad2565b34801561085957600080fd5b50610862611af3565b60405161037d929190614776565b34801561087c57600080fd5b506103ca600080516020614f1f83398151915281565b34801561089e57600080fd5b506108b26108ad366004614660565b611cb8565b60405161037d91906147e8565b3480156108cb57600080fd5b506103ca600080516020614ebf83398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461469f565b611d9d565b34801561090d57600080fd5b5061037161091c366004614374565b611dc7565b34801561092d57600080fd5b506106c661093c36600461467d565b611df8565b34801561094d57600080fd5b5061037161095c36600461438d565b611e26565b34801561096d57600080fd5b5061098161097c3660046147fb565b611e5c565b60405161037d9493929190614829565b34801561099d57600080fd5b5061047e6109ac3660046141ad565b611eb3565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614844565b611f06565b3480156109f257600080fd5b5061047e610a01366004614861565b611f27565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614179565b611f51565b348015610a6357600080fd5b506106c6611f5f565b348015610a7857600080fd5b506103ca611f7a565b348015610a8d57600080fd5b5061047e610a9c366004614660565b611f8f565b348015610aad57600080fd5b506103ca610abc3660046144ec565b61202a565b348015610acd57600080fd5b506103ca610adc366004614374565b612066565b348015610aed57600080fd5b5061047e610afc36600461455a565b612092565b348015610b0d57600080fd5b506103ca600080516020614e7f83398151915281565b348015610b2f57600080fd5b50610b386120b4565b60405161037d91906148a7565b348015610b5157600080fd5b5061047e610b6036600461438d565b6120ce565b348015610b7157600080fd5b50610b85610b80366004614374565b6120ea565b60405161037d91906148e8565b348015610b9e57600080fd5b50610371610bad366004614660565b612213565b348015610bbe57600080fd5b5061047e610bcd366004614660565b61222d565b348015610bde57600080fd5b506103ca61224e565b348015610bf357600080fd5b50610b38612263565b348015610c0857600080fd5b506103ca610c17366004614374565b61227d565b348015610c2857600080fd5b5061047e610c373660046148fb565b6122a8565b348015610c4857600080fd5b506103ca6122d2565b348015610c5d57600080fd5b506107bf610c6c366004614660565b6122dd565b348015610c7d57600080fd5b5061047e610c8c3660046145bd565b612318565b348015610c9d57600080fd5b5061047e610cac366004614179565b6123a0565b348015610cbd57600080fd5b506103ca600080516020614e3f83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123c9565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d2761404b565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f5f565b6001600160a01b0316635a81a626848381518110610d9157610d91614954565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc919081019061496a565b828281518110610e0e57610e0e614954565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123fe565b9050610e4281600901612422565b91505090565b6000610cf8610c178361242f565b600080516020614ebf833981519152610e6e816124a5565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e7f833981519152610f1b816124a5565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614954565b602002602001015161242f565b9050610f56816124af565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f9291906145a9565b60405180910390fd5b610fa3611f5f565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce91906145a9565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149d7565b61102e5788604051633f2c64af60e01b8152600401610f9291906145a9565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a612526565b915061106c82612213565b61108b578160405163248d101d60e11b8152600401610f9291906145a9565b6000611095612552565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a91600401614652565b8054891161110d578054604051632256490160e11b8152610f92918b91600401614652565b600181015461111c9089614a0a565b925050509850989650505050505050565b6000806111386123fe565b6003015460ff1692915050565b600080611150612576565b60009384526020525050604090206001015490565b61116d61259a565b600080516020614f1f833981519152611185816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c592919061435b565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125d0565b50565b61120a82611145565b611213816124a5565b61121d83836125e1565b50505050565b6060610cf86107638361242f565b600061123b612623565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db612647565b6112e3612647565b6112eb612651565b6112f66000886125e1565b5061130f600080516020614e7f833981519152886125e1565b50611328600080516020614e9f833981519152886125e1565b50611341600080516020614e3f833981519152876125e1565b50600061134c6126eb565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e8000062015180611398828261270f565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612732565b600080516020614e7f833981519152611438816124a5565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614954565b90506114668161276b565b5060010161143b565b600080516020614e7f833981519152611487816124a5565b610f5f6114938461242f565b836127d9565b606060006114a56123fe565b9050610e4281612422565b600080516020614e7f8339815191526114c8816124a5565b6114dc6114d48661242f565b858486612834565b5050505050565b60408051600080516020614edf83398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d61290a565b61157682612998565b6115808282612adb565b5050565b60008061158f6126eb565b600101546001600160a01b031692915050565b600080516020614e9f8339815191526115ba816124a5565b6115c382612b8f565b6115db600080516020614e1f833981519152846125e1565b506115f4600080516020614f1f833981519152846125e1565b5061160d600080516020614dff833981519152846125e1565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bfd565b600061165f612c94565b50600080516020614e5f83398151915290565b600080516020614f1f83398151915261168a816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d296959493929190614a1d565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b61170661259a565b600080516020614dff83398151915261171e816124a5565b61172782612b8f565b61173082612cdd565b506111fe6125d0565b606060006117456123fe565b90506117518382612e12565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a67565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b61184961259a565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e3c565b600061271061187b611f5f565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614aa1565b6118e69084614aba565b6118f09190614ad1565b905060006118fe8284614a0a565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612552565b9050838160010160008282546119399190614af3565b9091555050505b6119bc8261194c611f5f565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614b06565b6001600160a01b031690612bfd565b6119cf6001600160a01b038c1682612bfd565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a350505050610ef96125d0565b6000806000611a50612ea7565b90508060020154816003015492509250509091565b600080516020614e7f833981519152611a7d816124a5565b61158082612ecb565b600080516020614e9f833981519152611a9e816124a5565b610f5f8383612f37565b600080516020614e7f833981519152611ac0816124a5565b610f5f611acc8461242f565b83612f84565b600080516020614e7f833981519152611aea816124a5565b61158082612ffa565b6060806000611b00611499565b9050600081516001600160401b03811115611b1d57611b1d61404b565b604051908082528060200260200182016040528015611b5057816020015b6060815260200190600190039081611b3b5790505b509050600082516001600160401b03811115611b6e57611b6e61404b565b604051908082528060200260200182016040528015611ba757816020015b611b94613e0c565b815260200190600190039081611b8c5790505b50905060005b8351811015611cad57611bbe611f5f565b6001600160a01b0316635a81a626858381518110611bde57611bde614954565b60200260200101516040518263ffffffff1660e01b8152600401611c0491815260200190565b600060405180830381865afa158015611c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c49919081019061496a565b838281518110611c5b57611c5b614954565b6020026020010181905250611c88848281518110611c7b57611c7b614954565b60200260200101516120ea565b828281518110611c9a57611c9a614954565b6020908102919091010152600101611bad565b509094909350915050565b60606000611cc46123fe565b9050611cd36006820184613066565b611cf2578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b038316600090815260088201602052604090208054611d1790614a67565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4390614a67565b8015611d905780601f10611d6557610100808354040283529160200191611d90565b820191906000526020600020905b815481529060010190602001808311611d7357829003601f168201915b5050505050915050919050565b600080516020614e7f833981519152611db5816124a5565b610f5f611dc18461242f565b8361307b565b600080611dd26123fe565b9050611dde8382612e12565b600092835260020160205250604090206001015460ff1690565b600080611e036131e3565b6000858152602082905260409020909150611e1e9084613207565b949350505050565b600080611e31612576565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e6c612552565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614ebf833981519152611ecb816124a5565b6001600160a01b038316611ef257604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b0385168484613213565b600080516020614e7f833981519152611f1e816124a5565b6115808261326b565b600080516020614e7f833981519152611f3f816124a5565b610f5f611f4b8461242f565b836132c2565b6000610cf861091c8361242f565b600080611f6a6126eb565b546001600160a01b031692915050565b600080611f856126eb565b6002015492915050565b600080516020614e9f833981519152611fa7816124a5565b611fbf600080516020614e1f83398151915283612732565b50611fd8600080516020614f1f83398151915283612732565b50611ff1600080516020614dff83398151915283612732565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006120346122d2565b612043898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120716131e3565b600084815260208290526040902090915061208b9061332f565b9392505050565b600080516020614e7f8339815191526120aa816124a5565b610f5f8383613339565b606060006120c06123fe565b9050610e4260048201612422565b6120d782611145565b6120e0816124a5565b61121d8383612732565b6120f2613e0c565b60006120fc6123fe565b90506121088382612e12565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b8282101561220457838290600052602060002001805461217790614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546121a390614a67565b80156121f05780601f106121c5576101008083540402835291602001916121f0565b820191906000526020600020905b8154815290600101906020018083116121d357829003601f168201915b505050505081526020019060010190612158565b50505091525090949350505050565b6000610cf8600080516020614e1f83398151915283611e26565b600080516020614e7f833981519152612245816124a5565b611580826133d5565b600080612259612552565b6001015492915050565b6060600061226f6123fe565b9050610e4281600601612422565b6000806122886123fe565b90506122948382612e12565b600092835260020160205250604090205490565b600080516020614e7f8339815191526122c0816124a5565b610f5f6122cc8461242f565b8361346e565b600080611f85612552565b60008060006122ea612ea7565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b61232061259a565b600080516020614ebf833981519152612338816124a5565b61234182612b8f565b6123546001600160a01b03841683612bfd565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161238f91815260200190565b60405180910390a2506115806125d0565b600080516020614e7f8339815191526123b8816124a5565b6115806123c48361242f565b6134dd565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061208b83613578565b6000612439611f5f565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161246491906147e8565b602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614aa1565b6111fe81336135d4565b60006124b96123fe565b905060006124ca60098301846135ff565b9050806124ed57604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b6000806125388a8a8a8a8a8a8a61202a565b9050612544818461360b565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006125a4613635565b8054909150600119016125ca57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125da613635565b6001905550565b6000806125ec6131e3565b905060006125fa8585613659565b90508015611e1e57600085815260208390526040902061261a90856136fa565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61264f61370f565b565b61265961370f565b6000612663612552565b6040519091506126cb90600080516020614eff833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614829565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b61271761370f565b6000612721612ea7565b600281019390935550600390910155565b60008061273d6131e3565b9050600061274b8585613734565b90508015611e1e57600085815260208390526040902061261a90856137ac565b60006127756123fe565b9050600061278660098301846137c1565b9050806127a957604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612519565b60006127e36123fe565b90506127ef8382612e12565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897906125199085908590614652565b600061283e6123fe565b9050600061284c82876135ff565b90508061286e576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128cc938501929190910190613e2f565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061297a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661296e6137cd565b6001600160a01b031614155b1561264f5760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e3f8339815191526129b0816124a5565b60006129ba611f5f565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b06565b90506000612a276137cd565b9050836001600160a01b0316816001600160a01b031603612a5f5780846040516382afabc160e01b8152600401610f92929190614b23565b816001600160a01b0316846001600160a01b031614612a9557818460405163699a021f60e11b8152600401610f92929190614b23565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b35575060408051601f3d908101601f19168201909252612b3291810190614aa1565b60015b612b545781604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f8339815191528114612b8557604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137e9565b6000612b99611f7a565b90506000612ba561224e565b905081811015610f5f576000612bbb8284614a0a565b90506000612bc98247614a0a565b9050808511156114dc576040516344c8760560e11b8152600481018290526024810183905260448101869052606401610f92565b80471015612c20573060405163cd78605960e01b8152600401610f9291906145a9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c6d576040519150601f19603f3d011682016040523d82523d6000602084013e612c72565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461264f5760405163703e46dd60e11b815260040160405180910390fd5b6000612ce7612ea7565b90508060020154821115612d1657806002015482604051631728bc5b60e31b8152600401610f92929190614652565b6003810154336000908152602083905260409020544291612d3691614af3565b811115612d5e5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d80908590614af3565b1115612da75781600201548360405163d54b188760e01b8152600401610f92929190614652565b33600090815260018301602052604081208054859290612dc8908490614af3565b90915550612dd890503384612bfd565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612e1c818361383f565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e46612552565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612ed56123fe565b90506000612ee660048301846136fa565b905080612f085782604051632872fbf960e11b8152600401610f9291906145a9565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f8360405161251991906145a9565b6000612f41612ea7565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906125199085908590614652565b6000612f8e6123fe565b9050612f9a8382612e12565b600083815260028083016020908152604083209091018054600181018255908352912001612fc88382614ba2565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612519929190614c5b565b60006130046123fe565b9050600061301560048301846137ac565b9050806130375782604051631532e67160e21b8152600401610f9291906145a9565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af28360405161251991906145a9565b600061208b836001600160a01b038416613847565b60006130856123fe565b90506130918382612e12565b600083815260028083016020526040822001905b81548110156114dc57836040516020016130bf9190614c74565b604051602081830303815290604052805190602001208282815481106130e7576130e7614954565b906000526020600020016040516020016131019190614c90565b60405160208183030381529060405280519060200120036131db578154829061312c90600190614a0a565b8154811061313c5761313c614954565b9060005260206000200182828154811061315857613158614954565b90600052602060002001908161316e9190614d06565b508180548061317f5761317f614dd2565b60019003818190600052602060002001600061319b9190613e85565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131ce929190614c5b565b60405180910390a16114dc565b6001016130a5565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600061208b838361385f565b610f5f83846001600160a01b031663a9059cbb858560405160240161323992919061435b565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613889565b60006132756123fe565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132cc6123fe565b90506132d88382612e12565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612519565b6000610cf8825490565b60006133436123fe565b9050600061335460068301856136fa565b9050806133765783604051631a6107e360e31b8152600401610f9291906145a9565b6001600160a01b0384166000908152600883016020526040902061339a8482614ba2565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133df6123fe565b905060006133f060068301846137ac565b905080613412578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b0383166000908152600883016020526040812061343591613e85565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134786123fe565b90506134848382612e12565b600083815260028083016020908152604090922084516134ac93919092019190850190613e2f565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612519565b60006134e76123fe565b905060006134f582846137c1565b90508061351857604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061354690830182613ebf565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612519565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135c857602002820191906000526020600020905b8154815260200190600101908083116135b4575b50505050509050919050565b6135de8282611e26565b61158057808260405163e2517d3f60e01b8152600401610f9292919061435b565b600061208b83836138e3565b60008060008061361b868661392d565b92509250925061362b828261397a565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080613664612576565b90506136708484611e26565b6136f0576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136a63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b600061208b836001600160a01b0384166138e3565b613717613a33565b61264f57604051631afcd79f60e31b815260040160405180910390fd5b60008061373f612576565b905061374b8484611e26565b156136f0576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b600061208b836001600160a01b038416613a4d565b600061208b8383613a4d565b600080516020614e5f833981519152546001600160a01b031690565b6137f282613b36565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561383757610f5f8282613b92565b611580613c08565b600061208b83835b60009081526001919091016020526040902054151590565b600082600001828154811061387657613876614954565b9060005260206000200154905092915050565b600061389e6001600160a01b03841683613c27565b905080516000141580156138c35750808060200190518101906138c191906149d7565b155b15610f5f5782604051635274afe760e01b8152600401610f9291906145a9565b60006138ef8383613847565b61392557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139675760208401516040850151606086015160001a61395988828585613c35565b955095509550505050613973565b50508151600091506002905b9250925092565b600082600381111561398e5761398e614de8565b03613997575050565b60018260038111156139ab576139ab614de8565b036139c95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139dd576139dd614de8565b036139fe5760405163fce698f760e01b815260048101829052602401610f92565b6003826003811115613a1257613a12614de8565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a3d612623565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136f0576000613a71600183614a0a565b8554909150600090613a8590600190614a0a565b9050808214613aea576000866000018281548110613aa557613aa5614954565b9060005260206000200154905080876000018481548110613ac857613ac8614954565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613afb57613afb614dd2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b635780604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613baf9190614c74565b600060405180830381855af49150503d8060008114613bea576040519150601f19603f3d011682016040523d82523d6000602084013e613bef565b606091505b5091509150613bff858383613cfa565b95945050505050565b341561264f5760405163b398979f60e01b815260040160405180910390fd5b606061208b83836000613d46565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c665750600091506003905082613cf0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613cba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce657506000925060019150829050613cf0565b9250600091508190505b9450945094915050565b606082613d0f57613d0a82613de3565b61208b565b8151158015613d2657506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f9291906145a9565b606081471015613d6b573060405163cd78605960e01b8152600401610f9291906145a9565b600080856001600160a01b03168486604051613d879190614c74565b60006040518083038185875af1925050503d8060008114613dc4576040519150601f19603f3d011682016040523d82523d6000602084013e613dc9565b606091505b5091509150613dd9868383613cfa565b9695505050505050565b805115613df35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e75579160200282015b82811115613e755782518290613e659082614ba2565b5091602001919060010190613e4f565b50613e81929150613ed9565b5090565b508054613e9190614a67565b6000825580601f10613ea1575050565b601f0160209004906000526020600020908101906111fe9190613ef6565b50805460008255906000526020600020908101906111fe91905b80821115613e81576000613eed8282613e85565b50600101613ed9565b5b80821115613e815760008155600101613ef7565b600060208284031215613f1d57600080fd5b81356001600160e01b03198116811461208b57600080fd5b60005b83811015613f50578181015183820152602001613f38565b50506000910152565b60008151808452613f71816020860160208601613f35565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fd257601f19868403018952613fc0838351613f59565b98840198925090830190600101613fa4565b5090979650505050505050565b60208152600061208b6020830184613f85565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783518352928401929184019160010161400e565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140895761408961404b565b604052919050565b60006001600160401b038211156140aa576140aa61404b565b50601f01601f191660200190565b600082601f8301126140c957600080fd5b81356140dc6140d782614091565b614061565b8181528460208386010111156140f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561412457600080fd5b843561412f81614036565b9350602085013561413f81614036565b92506040850135915060608501356001600160401b0381111561416157600080fd5b61416d878288016140b8565b91505092959194509250565b60006020828403121561418b57600080fd5b81356001600160401b038111156141a157600080fd5b611e1e848285016140b8565b6000806000606084860312156141c257600080fd5b83356141cd81614036565b925060208401356141dd81614036565b929592945050506040919091013590565b600082601f8301126141ff57600080fd5b813560206001600160401b038083111561421b5761421b61404b565b8260051b61422a838201614061565b938452858101830193838101908886111561424457600080fd5b84880192505b85831015614280578235848111156142625760008081fd5b6142708a87838c01016140b8565b835250918401919084019061424a565b98975050505050505050565b60006020828403121561429e57600080fd5b81356001600160401b038111156142b457600080fd5b611e1e848285016141ee565b600080600080600080600080610100898b0312156142dd57600080fd5b88356142e881614036565b975060208901356142f881614036565b9650604089013561430881614036565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561433f57600080fd5b61434b8b828c016140b8565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561438657600080fd5b5035919050565b600080604083850312156143a057600080fd5b8235915060208301356143b281614036565b809150509250929050565b600080600080600060a086880312156143d557600080fd5b85356143e081614036565b945060208601356143f081614036565b935060408601359250606086013561440781614036565b9150608086013561441781614036565b809150509295509295909350565b6000806040838503121561443857600080fd5b82356001600160401b0381111561444e57600080fd5b61445a858286016140b8565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561448d57600080fd5b84356001600160401b03808211156144a457600080fd5b6144b0888389016140b8565b955060208701359450604087013591506144c982614469565b909250606086013590808211156144df57600080fd5b5061416d878288016141ee565b600080600080600080600060e0888a03121561450757600080fd5b873561451281614036565b9650602088013561452281614036565b9550604088013561453281614036565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561456d57600080fd5b823561457881614036565b915060208301356001600160401b0381111561459357600080fd5b61459f858286016140b8565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145d057600080fd5b82356145db81614036565b946020939093013593505050565b600080600080600060a0868803121561460157600080fd5b853561460c81614036565b945060208601356001600160401b0381111561462757600080fd5b614633888289016140b8565b9450506040860135925060608601359150608086013561441781614036565b918252602082015260400190565b60006020828403121561467257600080fd5b813561208b81614036565b6000806040838503121561469057600080fd5b50508035926020909101359150565b600080604083850312156146b257600080fd5b82356001600160401b03808211156146c957600080fd5b6146d5868387016140b8565b935060208501359150808211156146eb57600080fd5b5061459f858286016140b8565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561476957607f19898703018352614757868551613f59565b9550928401929184019160010161473b565b5093979650505050505050565b6040815260006147896040830185613f85565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147d957601f198784030185526147c78383516146f8565b948601949250908501906001016147ab565b50909998505050505050505050565b60208152600061208b6020830184613f59565b6000806040838503121561480e57600080fd5b823561481981614036565b915060208301356143b281614036565b93845260208401929092526040830152606082015260800190565b60006020828403121561485657600080fd5b813561208b81614469565b6000806040838503121561487457600080fd5b82356001600160401b0381111561488a57600080fd5b614896858286016140b8565b92505060208301356143b281614469565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783516001600160a01b0316835292840192918401916001016148c3565b60208152600061208b60208301846146f8565b6000806040838503121561490e57600080fd5b82356001600160401b038082111561492557600080fd5b614931868387016140b8565b9350602085013591508082111561494757600080fd5b5061459f858286016141ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561497c57600080fd5b81516001600160401b0381111561499257600080fd5b8201601f810184136149a357600080fd5b80516149b16140d782614091565b8181528560208385010111156149c657600080fd5b613bff826020830160208601613f35565b6000602082840312156149e957600080fd5b815161208b81614469565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149f4565b600060018060a01b038089168352808816602084015260c06040840152614a4760c0840188613f59565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a7b57607f821691505b602082108103614a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ab357600080fd5b5051919050565b8082028115828204841417610cf857610cf86149f4565b600082614aee57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149f4565b600060208284031215614b1857600080fd5b815161208b81614036565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b665750805b601f850160051c820191505b81811015614b8557828155600101614b72565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bbb57614bbb61404b565b614bcf81614bc98454614a67565b84614b3d565b602080601f831160018114614bfe5760008415614bec5750858301515b614bf68582614b8d565b865550614b85565b600085815260208120601f198616915b82811015614c2d57888601518255948401946001909101908401614c0e565b5085821015614c4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e1e6040830184613f59565b60008251614c86818460208701613f35565b9190910192915050565b6000808354614c9e81614a67565b60018281168015614cb65760018114614ccb57614cfa565b60ff1984168752821515830287019450614cfa565b8760005260208060002060005b85811015614cf15781548a820152908401908201614cd8565b50505082870194505b50929695505050505050565b818103614d11575050565b614d1b8254614a67565b6001600160401b03811115614d3257614d3261404b565b614d4081614bc98454614a67565b6000601f821160018114614d6e5760008315614d5c5750848201545b614d668482614b8d565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614da85782860154825560019586019590910190602001614d88565b5085831015614c4b5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa2646970667358221220d4fe695f798b2cdbd93ac75abfc29f73ff41617d251ff28aea4f45601429b4c364736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613f0b565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fdf565b3480156103b457600080fd5b506103ca600080516020614edf83398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613ff2565b34801561040657600080fd5b5061042561041536600461410e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614179565b610e48565b34801561046a57600080fd5b5061047e6104793660046141ad565b610e56565b005b34801561048c57600080fd5b5061047e61049b36600461428c565b610f03565b3480156104ac57600080fd5b506103ca600080516020614eff83398151915281565b3480156104ce57600080fd5b506104e26104dd3660046142c0565b610f64565b60405161037d92919061435b565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614374565b611145565b34801561053157600080fd5b5061047e610540366004614374565b611165565b34801561055157600080fd5b5061047e61056036600461438d565b611201565b34801561057157600080fd5b5061039b610580366004614179565b611223565b34801561059157600080fd5b506103ca600080516020614e9f83398151915281565b3480156105b357600080fd5b5061047e6105c23660046143bd565b611231565b3480156105d357600080fd5b5061047e6105e236600461438d565b6113ed565b3480156105f357600080fd5b506103ca600080516020614dff83398151915281565b34801561061557600080fd5b5061047e61062436600461428c565b611420565b34801561063557600080fd5b5061047e610644366004614425565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614477565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144ec565b6114e3565b61047e6106ac36600461455a565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d91906145a9565b3480156106df57600080fd5b5061047e6106ee3660046145bd565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145e9565b611672565b34801561073457600080fd5b5061047e610743366004614374565b6116fe565b34801561075457600080fd5b5061039b610763366004614374565b611739565b34801561077457600080fd5b506103ca600080516020614e1f83398151915281565b34801561079657600080fd5b5061047e6107a53660046142c0565b611841565b3480156107b657600080fd5b506107bf611a43565b60405161037d929190614652565b3480156107d957600080fd5b5061047e6107e8366004614660565b611a65565b3480156107f957600080fd5b5061047e61080836600461467d565b611a86565b34801561081957600080fd5b5061047e61082836600461469f565b611aa8565b34801561083957600080fd5b5061047e610848366004614660565b611ad2565b34801561085957600080fd5b50610862611af3565b60405161037d929190614776565b34801561087c57600080fd5b506103ca600080516020614f1f83398151915281565b34801561089e57600080fd5b506108b26108ad366004614660565b611cb8565b60405161037d91906147e8565b3480156108cb57600080fd5b506103ca600080516020614ebf83398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461469f565b611d9d565b34801561090d57600080fd5b5061037161091c366004614374565b611dc7565b34801561092d57600080fd5b506106c661093c36600461467d565b611df8565b34801561094d57600080fd5b5061037161095c36600461438d565b611e26565b34801561096d57600080fd5b5061098161097c3660046147fb565b611e5c565b60405161037d9493929190614829565b34801561099d57600080fd5b5061047e6109ac3660046141ad565b611eb3565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614844565b611f06565b3480156109f257600080fd5b5061047e610a01366004614861565b611f27565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614179565b611f51565b348015610a6357600080fd5b506106c6611f5f565b348015610a7857600080fd5b506103ca611f7a565b348015610a8d57600080fd5b5061047e610a9c366004614660565b611f8f565b348015610aad57600080fd5b506103ca610abc3660046144ec565b61202a565b348015610acd57600080fd5b506103ca610adc366004614374565b612066565b348015610aed57600080fd5b5061047e610afc36600461455a565b612092565b348015610b0d57600080fd5b506103ca600080516020614e7f83398151915281565b348015610b2f57600080fd5b50610b386120b4565b60405161037d91906148a7565b348015610b5157600080fd5b5061047e610b6036600461438d565b6120ce565b348015610b7157600080fd5b50610b85610b80366004614374565b6120ea565b60405161037d91906148e8565b348015610b9e57600080fd5b50610371610bad366004614660565b612213565b348015610bbe57600080fd5b5061047e610bcd366004614660565b61222d565b348015610bde57600080fd5b506103ca61224e565b348015610bf357600080fd5b50610b38612263565b348015610c0857600080fd5b506103ca610c17366004614374565b61227d565b348015610c2857600080fd5b5061047e610c373660046148fb565b6122a8565b348015610c4857600080fd5b506103ca6122d2565b348015610c5d57600080fd5b506107bf610c6c366004614660565b6122dd565b348015610c7d57600080fd5b5061047e610c8c3660046145bd565b612318565b348015610c9d57600080fd5b5061047e610cac366004614179565b6123a0565b348015610cbd57600080fd5b506103ca600080516020614e3f83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123c9565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d2761404b565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f5f565b6001600160a01b0316635a81a626848381518110610d9157610d91614954565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc919081019061496a565b828281518110610e0e57610e0e614954565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123fe565b9050610e4281600901612422565b91505090565b6000610cf8610c178361242f565b600080516020614ebf833981519152610e6e816124a5565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e7f833981519152610f1b816124a5565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614954565b602002602001015161242f565b9050610f56816124af565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f9291906145a9565b60405180910390fd5b610fa3611f5f565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce91906145a9565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149d7565b61102e5788604051633f2c64af60e01b8152600401610f9291906145a9565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a612526565b915061106c82612213565b61108b578160405163248d101d60e11b8152600401610f9291906145a9565b6000611095612552565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a91600401614652565b8054891161110d578054604051632256490160e11b8152610f92918b91600401614652565b600181015461111c9089614a0a565b925050509850989650505050505050565b6000806111386123fe565b6003015460ff1692915050565b600080611150612576565b60009384526020525050604090206001015490565b61116d61259a565b600080516020614f1f833981519152611185816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c592919061435b565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125d0565b50565b61120a82611145565b611213816124a5565b61121d83836125e1565b50505050565b6060610cf86107638361242f565b600061123b612623565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db612647565b6112e3612647565b6112eb612651565b6112f66000886125e1565b5061130f600080516020614e7f833981519152886125e1565b50611328600080516020614e9f833981519152886125e1565b50611341600080516020614e3f833981519152876125e1565b50600061134c6126eb565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e8000062015180611398828261270f565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612732565b600080516020614e7f833981519152611438816124a5565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614954565b90506114668161276b565b5060010161143b565b600080516020614e7f833981519152611487816124a5565b610f5f6114938461242f565b836127d9565b606060006114a56123fe565b9050610e4281612422565b600080516020614e7f8339815191526114c8816124a5565b6114dc6114d48661242f565b858486612834565b5050505050565b60408051600080516020614edf83398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d61290a565b61157682612998565b6115808282612adb565b5050565b60008061158f6126eb565b600101546001600160a01b031692915050565b600080516020614e9f8339815191526115ba816124a5565b6115c382612b8f565b6115db600080516020614e1f833981519152846125e1565b506115f4600080516020614f1f833981519152846125e1565b5061160d600080516020614dff833981519152846125e1565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bfd565b600061165f612c94565b50600080516020614e5f83398151915290565b600080516020614f1f83398151915261168a816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d296959493929190614a1d565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b61170661259a565b600080516020614dff83398151915261171e816124a5565b61172782612b8f565b61173082612cdd565b506111fe6125d0565b606060006117456123fe565b90506117518382612e12565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a67565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b61184961259a565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e3c565b600061271061187b611f5f565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614aa1565b6118e69084614aba565b6118f09190614ad1565b905060006118fe8284614a0a565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612552565b9050838160010160008282546119399190614af3565b9091555050505b6119bc8261194c611f5f565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614b06565b6001600160a01b031690612bfd565b6119cf6001600160a01b038c1682612bfd565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a350505050610ef96125d0565b6000806000611a50612ea7565b90508060020154816003015492509250509091565b600080516020614e7f833981519152611a7d816124a5565b61158082612ecb565b600080516020614e9f833981519152611a9e816124a5565b610f5f8383612f37565b600080516020614e7f833981519152611ac0816124a5565b610f5f611acc8461242f565b83612f84565b600080516020614e7f833981519152611aea816124a5565b61158082612ffa565b6060806000611b00611499565b9050600081516001600160401b03811115611b1d57611b1d61404b565b604051908082528060200260200182016040528015611b5057816020015b6060815260200190600190039081611b3b5790505b509050600082516001600160401b03811115611b6e57611b6e61404b565b604051908082528060200260200182016040528015611ba757816020015b611b94613e0c565b815260200190600190039081611b8c5790505b50905060005b8351811015611cad57611bbe611f5f565b6001600160a01b0316635a81a626858381518110611bde57611bde614954565b60200260200101516040518263ffffffff1660e01b8152600401611c0491815260200190565b600060405180830381865afa158015611c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c49919081019061496a565b838281518110611c5b57611c5b614954565b6020026020010181905250611c88848281518110611c7b57611c7b614954565b60200260200101516120ea565b828281518110611c9a57611c9a614954565b6020908102919091010152600101611bad565b509094909350915050565b60606000611cc46123fe565b9050611cd36006820184613066565b611cf2578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b038316600090815260088201602052604090208054611d1790614a67565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4390614a67565b8015611d905780601f10611d6557610100808354040283529160200191611d90565b820191906000526020600020905b815481529060010190602001808311611d7357829003601f168201915b5050505050915050919050565b600080516020614e7f833981519152611db5816124a5565b610f5f611dc18461242f565b8361307b565b600080611dd26123fe565b9050611dde8382612e12565b600092835260020160205250604090206001015460ff1690565b600080611e036131e3565b6000858152602082905260409020909150611e1e9084613207565b949350505050565b600080611e31612576565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e6c612552565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614ebf833981519152611ecb816124a5565b6001600160a01b038316611ef257604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b0385168484613213565b600080516020614e7f833981519152611f1e816124a5565b6115808261326b565b600080516020614e7f833981519152611f3f816124a5565b610f5f611f4b8461242f565b836132c2565b6000610cf861091c8361242f565b600080611f6a6126eb565b546001600160a01b031692915050565b600080611f856126eb565b6002015492915050565b600080516020614e9f833981519152611fa7816124a5565b611fbf600080516020614e1f83398151915283612732565b50611fd8600080516020614f1f83398151915283612732565b50611ff1600080516020614dff83398151915283612732565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006120346122d2565b612043898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120716131e3565b600084815260208290526040902090915061208b9061332f565b9392505050565b600080516020614e7f8339815191526120aa816124a5565b610f5f8383613339565b606060006120c06123fe565b9050610e4260048201612422565b6120d782611145565b6120e0816124a5565b61121d8383612732565b6120f2613e0c565b60006120fc6123fe565b90506121088382612e12565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b8282101561220457838290600052602060002001805461217790614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546121a390614a67565b80156121f05780601f106121c5576101008083540402835291602001916121f0565b820191906000526020600020905b8154815290600101906020018083116121d357829003601f168201915b505050505081526020019060010190612158565b50505091525090949350505050565b6000610cf8600080516020614e1f83398151915283611e26565b600080516020614e7f833981519152612245816124a5565b611580826133d5565b600080612259612552565b6001015492915050565b6060600061226f6123fe565b9050610e4281600601612422565b6000806122886123fe565b90506122948382612e12565b600092835260020160205250604090205490565b600080516020614e7f8339815191526122c0816124a5565b610f5f6122cc8461242f565b8361346e565b600080611f85612552565b60008060006122ea612ea7565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b61232061259a565b600080516020614ebf833981519152612338816124a5565b61234182612b8f565b6123546001600160a01b03841683612bfd565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161238f91815260200190565b60405180910390a2506115806125d0565b600080516020614e7f8339815191526123b8816124a5565b6115806123c48361242f565b6134dd565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061208b83613578565b6000612439611f5f565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161246491906147e8565b602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614aa1565b6111fe81336135d4565b60006124b96123fe565b905060006124ca60098301846135ff565b9050806124ed57604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b6000806125388a8a8a8a8a8a8a61202a565b9050612544818461360b565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006125a4613635565b8054909150600119016125ca57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125da613635565b6001905550565b6000806125ec6131e3565b905060006125fa8585613659565b90508015611e1e57600085815260208390526040902061261a90856136fa565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61264f61370f565b565b61265961370f565b6000612663612552565b6040519091506126cb90600080516020614eff833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614829565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b61271761370f565b6000612721612ea7565b600281019390935550600390910155565b60008061273d6131e3565b9050600061274b8585613734565b90508015611e1e57600085815260208390526040902061261a90856137ac565b60006127756123fe565b9050600061278660098301846137c1565b9050806127a957604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612519565b60006127e36123fe565b90506127ef8382612e12565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897906125199085908590614652565b600061283e6123fe565b9050600061284c82876135ff565b90508061286e576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128cc938501929190910190613e2f565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061297a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661296e6137cd565b6001600160a01b031614155b1561264f5760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e3f8339815191526129b0816124a5565b60006129ba611f5f565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b06565b90506000612a276137cd565b9050836001600160a01b0316816001600160a01b031603612a5f5780846040516382afabc160e01b8152600401610f92929190614b23565b816001600160a01b0316846001600160a01b031614612a9557818460405163699a021f60e11b8152600401610f92929190614b23565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b35575060408051601f3d908101601f19168201909252612b3291810190614aa1565b60015b612b545781604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f8339815191528114612b8557604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137e9565b6000612b99611f7a565b90506000612ba561224e565b905081811015610f5f576000612bbb8284614a0a565b90506000612bc98247614a0a565b9050808511156114dc576040516344c8760560e11b8152600481018290526024810183905260448101869052606401610f92565b80471015612c20573060405163cd78605960e01b8152600401610f9291906145a9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c6d576040519150601f19603f3d011682016040523d82523d6000602084013e612c72565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461264f5760405163703e46dd60e11b815260040160405180910390fd5b6000612ce7612ea7565b90508060020154821115612d1657806002015482604051631728bc5b60e31b8152600401610f92929190614652565b6003810154336000908152602083905260409020544291612d3691614af3565b811115612d5e5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d80908590614af3565b1115612da75781600201548360405163d54b188760e01b8152600401610f92929190614652565b33600090815260018301602052604081208054859290612dc8908490614af3565b90915550612dd890503384612bfd565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612e1c818361383f565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e46612552565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612ed56123fe565b90506000612ee660048301846136fa565b905080612f085782604051632872fbf960e11b8152600401610f9291906145a9565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f8360405161251991906145a9565b6000612f41612ea7565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906125199085908590614652565b6000612f8e6123fe565b9050612f9a8382612e12565b600083815260028083016020908152604083209091018054600181018255908352912001612fc88382614ba2565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612519929190614c5b565b60006130046123fe565b9050600061301560048301846137ac565b9050806130375782604051631532e67160e21b8152600401610f9291906145a9565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af28360405161251991906145a9565b600061208b836001600160a01b038416613847565b60006130856123fe565b90506130918382612e12565b600083815260028083016020526040822001905b81548110156114dc57836040516020016130bf9190614c74565b604051602081830303815290604052805190602001208282815481106130e7576130e7614954565b906000526020600020016040516020016131019190614c90565b60405160208183030381529060405280519060200120036131db578154829061312c90600190614a0a565b8154811061313c5761313c614954565b9060005260206000200182828154811061315857613158614954565b90600052602060002001908161316e9190614d06565b508180548061317f5761317f614dd2565b60019003818190600052602060002001600061319b9190613e85565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131ce929190614c5b565b60405180910390a16114dc565b6001016130a5565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600061208b838361385f565b610f5f83846001600160a01b031663a9059cbb858560405160240161323992919061435b565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613889565b60006132756123fe565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132cc6123fe565b90506132d88382612e12565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612519565b6000610cf8825490565b60006133436123fe565b9050600061335460068301856136fa565b9050806133765783604051631a6107e360e31b8152600401610f9291906145a9565b6001600160a01b0384166000908152600883016020526040902061339a8482614ba2565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133df6123fe565b905060006133f060068301846137ac565b905080613412578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b0383166000908152600883016020526040812061343591613e85565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134786123fe565b90506134848382612e12565b600083815260028083016020908152604090922084516134ac93919092019190850190613e2f565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612519565b60006134e76123fe565b905060006134f582846137c1565b90508061351857604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061354690830182613ebf565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612519565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135c857602002820191906000526020600020905b8154815260200190600101908083116135b4575b50505050509050919050565b6135de8282611e26565b61158057808260405163e2517d3f60e01b8152600401610f9292919061435b565b600061208b83836138e3565b60008060008061361b868661392d565b92509250925061362b828261397a565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080613664612576565b90506136708484611e26565b6136f0576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136a63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b600061208b836001600160a01b0384166138e3565b613717613a33565b61264f57604051631afcd79f60e31b815260040160405180910390fd5b60008061373f612576565b905061374b8484611e26565b156136f0576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b600061208b836001600160a01b038416613a4d565b600061208b8383613a4d565b600080516020614e5f833981519152546001600160a01b031690565b6137f282613b36565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561383757610f5f8282613b92565b611580613c08565b600061208b83835b60009081526001919091016020526040902054151590565b600082600001828154811061387657613876614954565b9060005260206000200154905092915050565b600061389e6001600160a01b03841683613c27565b905080516000141580156138c35750808060200190518101906138c191906149d7565b155b15610f5f5782604051635274afe760e01b8152600401610f9291906145a9565b60006138ef8383613847565b61392557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139675760208401516040850151606086015160001a61395988828585613c35565b955095509550505050613973565b50508151600091506002905b9250925092565b600082600381111561398e5761398e614de8565b03613997575050565b60018260038111156139ab576139ab614de8565b036139c95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139dd576139dd614de8565b036139fe5760405163fce698f760e01b815260048101829052602401610f92565b6003826003811115613a1257613a12614de8565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a3d612623565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136f0576000613a71600183614a0a565b8554909150600090613a8590600190614a0a565b9050808214613aea576000866000018281548110613aa557613aa5614954565b9060005260206000200154905080876000018481548110613ac857613ac8614954565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613afb57613afb614dd2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b635780604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613baf9190614c74565b600060405180830381855af49150503d8060008114613bea576040519150601f19603f3d011682016040523d82523d6000602084013e613bef565b606091505b5091509150613bff858383613cfa565b95945050505050565b341561264f5760405163b398979f60e01b815260040160405180910390fd5b606061208b83836000613d46565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c665750600091506003905082613cf0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613cba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce657506000925060019150829050613cf0565b9250600091508190505b9450945094915050565b606082613d0f57613d0a82613de3565b61208b565b8151158015613d2657506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f9291906145a9565b606081471015613d6b573060405163cd78605960e01b8152600401610f9291906145a9565b600080856001600160a01b03168486604051613d879190614c74565b60006040518083038185875af1925050503d8060008114613dc4576040519150601f19603f3d011682016040523d82523d6000602084013e613dc9565b606091505b5091509150613dd9868383613cfa565b9695505050505050565b805115613df35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e75579160200282015b82811115613e755782518290613e659082614ba2565b5091602001919060010190613e4f565b50613e81929150613ed9565b5090565b508054613e9190614a67565b6000825580601f10613ea1575050565b601f0160209004906000526020600020908101906111fe9190613ef6565b50805460008255906000526020600020908101906111fe91905b80821115613e81576000613eed8282613e85565b50600101613ed9565b5b80821115613e815760008155600101613ef7565b600060208284031215613f1d57600080fd5b81356001600160e01b03198116811461208b57600080fd5b60005b83811015613f50578181015183820152602001613f38565b50506000910152565b60008151808452613f71816020860160208601613f35565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fd257601f19868403018952613fc0838351613f59565b98840198925090830190600101613fa4565b5090979650505050505050565b60208152600061208b6020830184613f85565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783518352928401929184019160010161400e565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140895761408961404b565b604052919050565b60006001600160401b038211156140aa576140aa61404b565b50601f01601f191660200190565b600082601f8301126140c957600080fd5b81356140dc6140d782614091565b614061565b8181528460208386010111156140f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561412457600080fd5b843561412f81614036565b9350602085013561413f81614036565b92506040850135915060608501356001600160401b0381111561416157600080fd5b61416d878288016140b8565b91505092959194509250565b60006020828403121561418b57600080fd5b81356001600160401b038111156141a157600080fd5b611e1e848285016140b8565b6000806000606084860312156141c257600080fd5b83356141cd81614036565b925060208401356141dd81614036565b929592945050506040919091013590565b600082601f8301126141ff57600080fd5b813560206001600160401b038083111561421b5761421b61404b565b8260051b61422a838201614061565b938452858101830193838101908886111561424457600080fd5b84880192505b85831015614280578235848111156142625760008081fd5b6142708a87838c01016140b8565b835250918401919084019061424a565b98975050505050505050565b60006020828403121561429e57600080fd5b81356001600160401b038111156142b457600080fd5b611e1e848285016141ee565b600080600080600080600080610100898b0312156142dd57600080fd5b88356142e881614036565b975060208901356142f881614036565b9650604089013561430881614036565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561433f57600080fd5b61434b8b828c016140b8565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561438657600080fd5b5035919050565b600080604083850312156143a057600080fd5b8235915060208301356143b281614036565b809150509250929050565b600080600080600060a086880312156143d557600080fd5b85356143e081614036565b945060208601356143f081614036565b935060408601359250606086013561440781614036565b9150608086013561441781614036565b809150509295509295909350565b6000806040838503121561443857600080fd5b82356001600160401b0381111561444e57600080fd5b61445a858286016140b8565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561448d57600080fd5b84356001600160401b03808211156144a457600080fd5b6144b0888389016140b8565b955060208701359450604087013591506144c982614469565b909250606086013590808211156144df57600080fd5b5061416d878288016141ee565b600080600080600080600060e0888a03121561450757600080fd5b873561451281614036565b9650602088013561452281614036565b9550604088013561453281614036565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561456d57600080fd5b823561457881614036565b915060208301356001600160401b0381111561459357600080fd5b61459f858286016140b8565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145d057600080fd5b82356145db81614036565b946020939093013593505050565b600080600080600060a0868803121561460157600080fd5b853561460c81614036565b945060208601356001600160401b0381111561462757600080fd5b614633888289016140b8565b9450506040860135925060608601359150608086013561441781614036565b918252602082015260400190565b60006020828403121561467257600080fd5b813561208b81614036565b6000806040838503121561469057600080fd5b50508035926020909101359150565b600080604083850312156146b257600080fd5b82356001600160401b03808211156146c957600080fd5b6146d5868387016140b8565b935060208501359150808211156146eb57600080fd5b5061459f858286016140b8565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561476957607f19898703018352614757868551613f59565b9550928401929184019160010161473b565b5093979650505050505050565b6040815260006147896040830185613f85565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147d957601f198784030185526147c78383516146f8565b948601949250908501906001016147ab565b50909998505050505050505050565b60208152600061208b6020830184613f59565b6000806040838503121561480e57600080fd5b823561481981614036565b915060208301356143b281614036565b93845260208401929092526040830152606082015260800190565b60006020828403121561485657600080fd5b813561208b81614469565b6000806040838503121561487457600080fd5b82356001600160401b0381111561488a57600080fd5b614896858286016140b8565b92505060208301356143b281614469565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783516001600160a01b0316835292840192918401916001016148c3565b60208152600061208b60208301846146f8565b6000806040838503121561490e57600080fd5b82356001600160401b038082111561492557600080fd5b614931868387016140b8565b9350602085013591508082111561494757600080fd5b5061459f858286016141ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561497c57600080fd5b81516001600160401b0381111561499257600080fd5b8201601f810184136149a357600080fd5b80516149b16140d782614091565b8181528560208385010111156149c657600080fd5b613bff826020830160208601613f35565b6000602082840312156149e957600080fd5b815161208b81614469565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149f4565b600060018060a01b038089168352808816602084015260c06040840152614a4760c0840188613f59565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a7b57607f821691505b602082108103614a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ab357600080fd5b5051919050565b8082028115828204841417610cf857610cf86149f4565b600082614aee57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149f4565b600060208284031215614b1857600080fd5b815161208b81614036565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b665750805b601f850160051c820191505b81811015614b8557828155600101614b72565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bbb57614bbb61404b565b614bcf81614bc98454614a67565b84614b3d565b602080601f831160018114614bfe5760008415614bec5750858301515b614bf68582614b8d565b865550614b85565b600085815260208120601f198616915b82811015614c2d57888601518255948401946001909101908401614c0e565b5085821015614c4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e1e6040830184613f59565b60008251614c86818460208701613f35565b9190910192915050565b6000808354614c9e81614a67565b60018281168015614cb65760018114614ccb57614cfa565b60ff1984168752821515830287019450614cfa565b8760005260208060002060005b85811015614cf15781548a820152908401908201614cd8565b50505082870194505b50929695505050505050565b818103614d11575050565b614d1b8254614a67565b6001600160401b03811115614d3257614d3261404b565b614d4081614bc98454614a67565b6000601f821160018114614d6e5760008315614d5c5750848201545b614d668482614b8d565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614da85782860154825560019586019590910190602001614d88565b5085831015614c4b5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa2646970667358221220d4fe695f798b2cdbd93ac75abfc29f73ff41617d251ff28aea4f45601429b4c364736f6c63430008180033", + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4747 + }, + { + "length": 20, + "start": 6032 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4487 + }, + { + "length": 20, + "start": 5772 + } + ] + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/build-info/3b111d61ddba7bf9692f9367e87086f7.json b/ignition/deployments/chain-501/build-info/3b111d61ddba7bf9692f9367e87086f7.json new file mode 100644 index 0000000..adfbdd2 --- /dev/null +++ b/ignition/deployments/chain-501/build-info/3b111d61ddba7bf9692f9367e87086f7.json @@ -0,0 +1,272482 @@ +{ + "id": "3b111d61ddba7bf9692f9367e87086f7", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.24", + "solcLongVersion": "0.8.24+commit.e11b9ed9", + "input": { + "language": "Solidity", + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/extensions/AccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControlEnumerable} from \"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\";\nimport {AccessControlUpgradeable} from \"../AccessControlUpgradeable.sol\";\nimport {EnumerableSet} from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerable, AccessControlUpgradeable {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable\n struct AccessControlEnumerableStorage {\n mapping(bytes32 role => EnumerableSet.AddressSet) _roleMembers;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControlEnumerable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlEnumerableStorageLocation = 0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000;\n\n function _getAccessControlEnumerableStorage() private pure returns (AccessControlEnumerableStorage storage $) {\n assembly {\n $.slot := AccessControlEnumerableStorageLocation\n }\n }\n\n function __AccessControlEnumerable_init() internal onlyInitializing {\n }\n\n function __AccessControlEnumerable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view virtual returns (address) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view virtual returns (uint256) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].length();\n }\n\n /**\n * @dev Overload {AccessControl-_grantRole} to track enumerable memberships\n */\n function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool granted = super._grantRole(role, account);\n if (granted) {\n $._roleMembers[role].add(account);\n }\n return granted;\n }\n\n /**\n * @dev Overload {AccessControl-_revokeRole} to track enumerable memberships\n */\n function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool revoked = super._revokeRole(role, account);\n if (revoked) {\n $._roleMembers[role].remove(account);\n }\n return revoked;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n * See {_onlyProxy}.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport {IERC721Receiver} from \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport {IERC721Metadata} from \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {Strings} from \"@openzeppelin/contracts/utils/Strings.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {ERC165Upgradeable} from \"../../utils/introspection/ERC165Upgradeable.sol\";\nimport {IERC721Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\nabstract contract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721, IERC721Metadata, IERC721Errors {\n using Strings for uint256;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721\n struct ERC721Storage {\n // Token name\n string _name;\n\n // Token symbol\n string _symbol;\n\n mapping(uint256 tokenId => address) _owners;\n\n mapping(address owner => uint256) _balances;\n\n mapping(uint256 tokenId => address) _tokenApprovals;\n\n mapping(address owner => mapping(address operator => bool)) _operatorApprovals;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721StorageLocation = 0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300;\n\n function _getERC721Storage() private pure returns (ERC721Storage storage $) {\n assembly {\n $.slot := ERC721StorageLocation\n }\n }\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\n __ERC721_init_unchained(name_, symbol_);\n }\n\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n ERC721Storage storage $ = _getERC721Storage();\n $._name = name_;\n $._symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual returns (uint256) {\n ERC721Storage storage $ = _getERC721Storage();\n if (owner == address(0)) {\n revert ERC721InvalidOwner(address(0));\n }\n return $._balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual returns (address) {\n return _requireOwned(tokenId);\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual returns (string memory) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual returns (string memory) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\n _requireOwned(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual {\n _approve(to, tokenId, _msgSender());\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual returns (address) {\n _requireOwned(tokenId);\n\n return _getApproved(tokenId);\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n // Setting an \"auth\" arguments enables the `_isAuthorized` check which verifies that the token exists\n // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\n address previousOwner = _update(to, tokenId, _msgSender());\n if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\n transferFrom(from, to, tokenId);\n _checkOnERC721Received(from, to, tokenId, data);\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n *\n * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n * core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._owners[tokenId];\n }\n\n /**\n * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\n */\n function _getApproved(uint256 tokenId) internal view virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._tokenApprovals[tokenId];\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n * particular (ignoring whether it is owned by `owner`).\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\n return\n spender != address(0) &&\n (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n * Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n * the `spender` for the specific `tokenId`.\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\n if (!_isAuthorized(owner, spender, tokenId)) {\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else {\n revert ERC721InsufficientApproval(spender, tokenId);\n }\n }\n }\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n *\n * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n * remain consistent with one another.\n */\n function _increaseBalance(address account, uint128 value) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n unchecked {\n $._balances[account] += value;\n }\n }\n\n /**\n * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that\n * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n *\n * Emits a {Transfer} event.\n *\n * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n address from = _ownerOf(tokenId);\n\n // Perform (optional) operator check\n if (auth != address(0)) {\n _checkAuthorized(from, auth, tokenId);\n }\n\n // Execute the update\n if (from != address(0)) {\n // Clear approval. No need to re-authorize or emit the Approval event\n _approve(address(0), tokenId, address(0), false);\n\n unchecked {\n $._balances[from] -= 1;\n }\n }\n\n if (to != address(0)) {\n unchecked {\n $._balances[to] += 1;\n }\n }\n\n $._owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n return from;\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner != address(0)) {\n revert ERC721InvalidSender(address(0));\n }\n }\n\n /**\n * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n _checkOnERC721Received(address(0), to, tokenId, data);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal {\n address previousOwner = _update(address(0), tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n * are aware of the ERC721 standard to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is like {safeTransferFrom} in the sense that it invokes\n * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `tokenId` token must exist and be owned by `from`.\n * - `to` cannot be the zero address.\n * - `from` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId) internal {\n _safeTransfer(from, to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n _checkOnERC721Received(from, to, tokenId, data);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n * either the owner of the token, or approved to operate on all tokens held by this owner.\n *\n * Emits an {Approval} event.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address to, uint256 tokenId, address auth) internal {\n _approve(to, tokenId, auth, true);\n }\n\n /**\n * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n * emitted in the context of transfers.\n */\n function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n // Avoid reading the owner unless necessary\n if (emitEvent || auth != address(0)) {\n address owner = _requireOwned(tokenId);\n\n // We do not use _isAuthorized because single-token approvals should not be able to call approve\n if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\n revert ERC721InvalidApprover(auth);\n }\n\n if (emitEvent) {\n emit Approval(owner, to, tokenId);\n }\n }\n\n $._tokenApprovals[tokenId] = to;\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Requirements:\n * - operator can't be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n if (operator == address(0)) {\n revert ERC721InvalidOperator(operator);\n }\n $._operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n * Returns the owner.\n *\n * Overrides to ownership logic should be done to {_ownerOf}.\n */\n function _requireOwned(uint256 tokenId) internal view returns (address) {\n address owner = _ownerOf(tokenId);\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n return owner;\n }\n\n /**\n * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n * recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n */\n function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory data) private {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n if (retval != IERC721Receiver.onERC721Received.selector) {\n revert ERC721InvalidReceiver(to);\n }\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert ERC721InvalidReceiver(to);\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC721Upgradeable} from \"../ERC721Upgradeable.sol\";\nimport {IERC721Enumerable} from \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds enumerability\n * of all the token ids in the contract as well as all token ids owned by each account.\n *\n * CAUTION: `ERC721` extensions that implement custom `balanceOf` logic, such as `ERC721Consecutive`,\n * interfere with enumerability and should not be used together with `ERC721Enumerable`.\n */\nabstract contract ERC721EnumerableUpgradeable is Initializable, ERC721Upgradeable, IERC721Enumerable {\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721Enumerable\n struct ERC721EnumerableStorage {\n mapping(address owner => mapping(uint256 index => uint256)) _ownedTokens;\n mapping(uint256 tokenId => uint256) _ownedTokensIndex;\n\n uint256[] _allTokens;\n mapping(uint256 tokenId => uint256) _allTokensIndex;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721Enumerable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721EnumerableStorageLocation = 0x645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00;\n\n function _getERC721EnumerableStorage() private pure returns (ERC721EnumerableStorage storage $) {\n assembly {\n $.slot := ERC721EnumerableStorageLocation\n }\n }\n\n /**\n * @dev An `owner`'s token query was out of bounds for `index`.\n *\n * NOTE: The owner being `address(0)` indicates a global out of bounds index.\n */\n error ERC721OutOfBoundsIndex(address owner, uint256 index);\n\n /**\n * @dev Batch mint is not allowed.\n */\n error ERC721EnumerableForbiddenBatchMint();\n\n function __ERC721Enumerable_init() internal onlyInitializing {\n }\n\n function __ERC721Enumerable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721Upgradeable) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n if (index >= balanceOf(owner)) {\n revert ERC721OutOfBoundsIndex(owner, index);\n }\n return $._ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n return $._allTokens.length;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n if (index >= totalSupply()) {\n revert ERC721OutOfBoundsIndex(address(0), index);\n }\n return $._allTokens[index];\n }\n\n /**\n * @dev See {ERC721-_update}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual override returns (address) {\n address previousOwner = super._update(to, tokenId, auth);\n\n if (previousOwner == address(0)) {\n _addTokenToAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _removeTokenFromOwnerEnumeration(previousOwner, tokenId);\n }\n if (to == address(0)) {\n _removeTokenFromAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n\n return previousOwner;\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n uint256 length = balanceOf(to) - 1;\n $._ownedTokens[to][length] = tokenId;\n $._ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n $._allTokensIndex[tokenId] = $._allTokens.length;\n $._allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = balanceOf(from);\n uint256 tokenIndex = $._ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = $._ownedTokens[from][lastTokenIndex];\n\n $._ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n $._ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete $._ownedTokensIndex[tokenId];\n delete $._ownedTokens[from][lastTokenIndex];\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = $._allTokens.length - 1;\n uint256 tokenIndex = $._allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = $._allTokens[lastTokenIndex];\n\n $._allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n $._allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n delete $._allTokensIndex[tokenId];\n $._allTokens.pop();\n }\n\n /**\n * See {ERC721-_increaseBalance}. We need that to account tokens that were minted in batch\n */\n function _increaseBalance(address account, uint128 amount) internal virtual override {\n if (amount > 0) {\n revert ERC721EnumerableForbiddenBatchMint();\n }\n super._increaseBalance(account, amount);\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC721Upgradeable} from \"../ERC721Upgradeable.sol\";\nimport {Strings} from \"@openzeppelin/contracts/utils/Strings.sol\";\nimport {IERC4906} from \"@openzeppelin/contracts/interfaces/IERC4906.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev ERC721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorageUpgradeable is Initializable, IERC4906, ERC721Upgradeable {\n using Strings for uint256;\n\n // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\n // defines events and does not include any external function.\n bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721URIStorage\n struct ERC721URIStorageStorage {\n // Optional mapping for token URIs\n mapping(uint256 tokenId => string) _tokenURIs;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721URIStorage\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721URIStorageStorageLocation = 0x0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e7900;\n\n function _getERC721URIStorageStorage() private pure returns (ERC721URIStorageStorage storage $) {\n assembly {\n $.slot := ERC721URIStorageStorageLocation\n }\n }\n\n function __ERC721URIStorage_init() internal onlyInitializing {\n }\n\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Upgradeable, IERC165) returns (bool) {\n return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n ERC721URIStorageStorage storage $ = _getERC721URIStorageStorage();\n _requireOwned(tokenId);\n\n string memory _tokenURI = $._tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via string.concat).\n if (bytes(_tokenURI).length > 0) {\n return string.concat(base, _tokenURI);\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Emits {MetadataUpdate}.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n ERC721URIStorageStorage storage $ = _getERC721URIStorageStorage();\n $._tokenURIs[tokenId] = _tokenURI;\n emit MetadataUpdate(tokenId);\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\n struct PausableStorage {\n bool _paused;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Pausable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\n\n function _getPausableStorage() private pure returns (PausableStorage storage $) {\n assembly {\n $.slot := PausableStorageLocation\n }\n }\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n PausableStorage storage $ = _getPausableStorage();\n return $._paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = false;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n struct ReentrancyGuardStorage {\n uint256 _status;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n assembly {\n $.slot := ReentrancyGuardStorageLocation\n }\n }\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n function __ReentrancyGuard_init() internal onlyInitializing {\n __ReentrancyGuard_init_unchained();\n }\n\n function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if ($._status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n $._status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n return $._status == ENTERED;\n }\n}\n" + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/extensions/IAccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"../IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\n */\ninterface IAccessControlEnumerable is IAccessControl {\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n" + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC4906.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\nimport {IERC721} from \"./IERC721.sol\";\n\n/// @title EIP-721 Metadata Update Extension\ninterface IERC4906 is IERC165, IERC721 {\n /// @dev This event emits when the metadata of a token is changed.\n /// So that the third-party platforms such as NFT market could\n /// timely update the images and related attributes of the NFT.\n event MetadataUpdate(uint256 _tokenId);\n\n /// @dev This event emits when the metadata of a range of tokens is changed.\n /// So that the third-party platforms such as NFT market could\n /// timely update the images and related attributes of the NFTs.\n event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../token/ERC721/IERC721.sol\";\n" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.20;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n * ```\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n * doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n * token.safeTransferFrom(msg.sender, address(this), value);\n * ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n *\n * CAUTION: See Security Considerations above.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC20Permit} from \"../extensions/IERC20Permit.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n /**\n * @dev An operation with an ERC20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data);\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n * {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n * reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError, bytes32) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Muldiv operation overflow.\n */\n error MathOverflowedMulDiv();\n\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n return a / b;\n }\n\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0 = x * y; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n if (denominator <= prod1) {\n revert MathOverflowedMulDiv();\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n uint256 localValue = value;\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n * representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position is the index of the value in the `values` array plus 1.\n // Position 0 is used to mean a value is not in the set.\n mapping(bytes32 value => uint256) _positions;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._positions[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We cache the value's position to prevent multiple reads from the same storage slot\n uint256 position = set._positions[value];\n\n if (position != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 valueIndex = position - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (valueIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the lastValue to the index where the value to delete is\n set._values[valueIndex] = lastValue;\n // Update the tracked position of the lastValue (that was just moved)\n set._positions[lastValue] = position;\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the tracked position for the deleted slot\n delete set._positions[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._positions[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n bytes32[] memory store = _values(set._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "contracts/account/ChequeManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Cheque Manager\n\npragma solidity ^0.8.0;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { ECDSA } from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// Manager Interface\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\n\n/**\n * @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n *\n * EIP712 Domain name & version:\n * DOMAIN_NAME = \"CaminoMessenger\"\n * DOMAIN_VERSION= \"1\"\n */\nabstract contract ChequeManager is Initializable, ReentrancyGuardUpgradeable {\n using ECDSA for bytes32;\n using Address for address payable;\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @notice Pre-computed hash of the MessengerCheque type\n *\n * ```\n * keccak256(\n * \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n * );\n * ```\n */\n bytes32 public constant MESSENGER_CHEQUE_TYPEHASH =\n 0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb;\n\n /**\n * @notice Pre-computed hash of the EIP712Domain type\n *\n * ```\n * keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n * ```\n */\n bytes32 public constant DOMAIN_TYPEHASH = 0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e;\n\n /***************************************************\n * STRUCTS *\n ***************************************************/\n\n /**\n * @notice Struct representing a Messenger Cheque.\n */\n struct MessengerCheque {\n address fromCMAccount; // CM Account that will pay the amount\n address toCMAccount; // CM Account that will receive the amount\n address toBot; // The address of the bot that receives the cheque\n uint256 counter; // This should be increased with every cheque\n uint256 amount; // The amount to be transferred\n uint256 createdAt; // Creation timestamp of the cheque\n uint256 expiresAt; // Expiration timestamp of the cheque\n }\n\n /**\n * @notice Struct for tracking the counter, amount and timestamps used for the last\n * cash-in operation.\n */\n struct LastCashIn {\n uint256 counter;\n uint256 amount;\n uint256 createdAt;\n uint256 expiresAt;\n }\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.ChequeManager\n struct ChequeManagerStorage {\n /**\n * @notice Mapping to track the cash-in details for each pair of fromBot and toBot addresses.\n */\n mapping(address fromBot => mapping(address toBot => LastCashIn)) _lastCashIns;\n /**\n * @notice Total amount of cheques that have been cashed in.\n */\n uint256 _totalChequePayments;\n /**\n * @notice EIP712 Domain Separator used for signature verification. This variable includes\n * dynamic chain ID, hence it is not a constant.\n */\n bytes32 _domainSeparator;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.ChequeManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant ChequeManagerStorageLocation =\n 0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600;\n\n function _getChequeManagerStorage() private pure returns (ChequeManagerStorage storage $) {\n assembly {\n $.slot := ChequeManagerStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Cheque verified event. Emitted when a cheque is verified.\n */\n event ChequeVerified(\n address indexed fromCMAccount,\n address indexed toCMAccount,\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 payment\n );\n\n /**\n * @notice Cash-in event. Emitted when a cheque is cashed in.\n */\n event ChequeCashedIn(\n address indexed fromBot,\n address indexed toBot,\n uint256 counter,\n uint256 paid,\n uint256 developerFee\n );\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\n */\n error InvalidFromCMAccount(address fromCMAccount);\n\n /**\n * @notice `toCMAccount` address is not a registered CMAccount on the manager.\n */\n error InvalidToCMAccount(address toCMAccount);\n\n /**\n * @notice The signer is not allowed to sign cheques\n */\n error NotAllowedToSignCheques(address signer);\n\n /**\n * @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n * recorded counter.\n */\n error InvalidCounter(uint256 chequeCounter, uint256 lastCounter);\n\n /**\n * @notice Last recorded amount is lower than the cheque's amount.\n */\n error InvalidAmount(uint256 chequeAmount, uint256 lastAmount);\n\n /**\n * @notice The cheque is expired at the given timestamp.\n */\n error ChequeExpired(uint256 expiresAt);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n * the domain.\n *\n * EIP712Domain {\n * string name;\n * string version;\n * uint256 chainid;\n * }\n */\n function __ChequeManager_init() internal onlyInitializing {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n\n $._domainSeparator = keccak256(\n abi.encode(DOMAIN_TYPEHASH, keccak256(\"CaminoMessenger\"), keccak256(\"1\"), block.chainid)\n );\n }\n\n /**\n * @notice Returns the domain separator.\n */\n function getDomainSeparator() public view returns (bytes32) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._domainSeparator;\n }\n\n /**\n * @notice Returns the hash of the `MessengerCheque` encoded with\n * `MESSENGER_CHEQUE_TYPEHASH`.\n */\n function hashMessengerCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public pure returns (bytes32) {\n return\n keccak256(\n abi.encode(\n MESSENGER_CHEQUE_TYPEHASH,\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt\n )\n );\n }\n\n /**\n * @notice Returns the hash of the typed data (cheque) with prefix and domain\n * separator.\n */\n function hashTypedDataV4(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public view returns (bytes32) {\n return\n keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n getDomainSeparator(),\n hashMessengerCheque(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt)\n )\n );\n }\n\n /**\n * @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n * recover the signer.\n */\n function recoverSigner(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) internal view returns (address signer) {\n bytes32 digest = hashTypedDataV4(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt);\n signer = digest.recover(signature);\n return signer;\n }\n\n /**\n * @notice Returns signer and payment amount if the signature is valid for the\n * given cheque, the signer is an allowed bot, cheque counter and amounts are\n * valid according to last cash ins.\n *\n * Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n * long as the last amount is lower than the cheque amount. Only the difference\n * between the cheque amount and the last recorded amount is paid.\n */\n function verifyCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public view returns (address signer, uint256 paymentAmount) {\n // Revert if cheque is not for this contract\n if (fromCMAccount != address(this)) {\n revert InvalidFromCMAccount(fromCMAccount);\n }\n\n // Revert if cheque payee is not a CM account\n if (!ICMAccountManager(getManagerAddress()).isCMAccount(toCMAccount)) {\n revert InvalidToCMAccount(toCMAccount);\n }\n\n // Revert if the cheque is expired\n if (block.timestamp >= expiresAt) {\n revert ChequeExpired(expiresAt);\n }\n\n // Recover signer\n signer = recoverSigner(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt, signature);\n\n // Check if the signer is an allowed bot.\n if (!isBotAllowed(signer)) {\n revert NotAllowedToSignCheques(signer);\n }\n\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[signer][toBot];\n\n // Revert if the cheque amount is lower then the last recorded amount\n if (amount < lastCashIn.amount) {\n revert InvalidAmount(amount, lastCashIn.amount);\n }\n\n // Ensure the current cheque's counter is greater than the last recorded one\n if (counter <= lastCashIn.counter) {\n revert InvalidCounter(counter, lastCashIn.counter);\n }\n\n // Everything is valid. Calculate payment amount.\n paymentAmount = amount - lastCashIn.amount;\n\n return (signer, paymentAmount);\n }\n\n /**\n * @notice Cash in a cheque by verifying it and paying the difference between the\n * cheque amount and the last recorded amount for the signer and `toBot` pair.\n *\n * A percentage of the amount is also paid to the developer wallet.\n *\n * @param fromCMAccount The CM Account that will pay the amount. This contract.\n * @param toCMAccount The CM Account that will receive the amount.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque. Should be increased with every\n * cheque.\n * @param amount The amount on the cheque. Should be greater then or equal the\n * last recorded amount.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n * @param signature The signature of the cheque.\n */\n function cashInCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public nonReentrant {\n // Verify the cheque and get the signer and payment amount\n (address signer, uint256 paymentAmount) = verifyCheque(\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt,\n signature\n );\n\n // If we didn't revert in the verifyCheque above, the cheque is valid.\n // Update the last cash ins.\n setLastCashIn(signer, toBot, counter, amount, createdAt, expiresAt);\n\n // Calculate developer fee\n // For amounts lower then fee basis point, the developer fee is 0.\n uint256 developerFee = (paymentAmount * ICMAccountManager(getManagerAddress()).getDeveloperFeeBp()) / 10000;\n\n // Subtract developer fee from payment amount\n uint256 chequePaymentAmount = paymentAmount - developerFee;\n\n // Update total cheque payments excluding cheques to the same account\n if (fromCMAccount != toCMAccount) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._totalChequePayments += paymentAmount;\n }\n\n // Transfer developer fee to the developer wallet\n payable(ICMAccountManager(getManagerAddress()).getDeveloperWallet()).sendValue(developerFee);\n\n // Transfer the cheque payment amount to the `toCMAccount`\n payable(toCMAccount).sendValue(chequePaymentAmount);\n\n // Emit cash-in event\n emit ChequeCashedIn(signer, toBot, counter, chequePaymentAmount, developerFee);\n }\n\n /**\n * @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n *\n * Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n *\n * @return lastCounter The last counter of the cheque.\n * @return lastAmount The last amount of the cheque.\n * @return lastCreatedAt The last creation timestamp of the cheque.\n * @return lastExpiresAt The last expiration timestamp of the cheque.\n */\n function getLastCashIn(\n address fromBot,\n address toBot\n ) public view returns (uint256 lastCounter, uint256 lastAmount, uint256 lastCreatedAt, uint256 lastExpiresAt) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[fromBot][toBot];\n return (lastCashIn.counter, lastCashIn.amount, lastCashIn.createdAt, lastCashIn.expiresAt);\n }\n\n /**\n * @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque.\n * @param amount The amount of the cheque.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n */\n function setLastCashIn(\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) internal {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._lastCashIns[fromBot][toBot] = LastCashIn(counter, amount, createdAt, expiresAt);\n }\n\n /**\n * @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n *\n * @return totalChequePayments The total cheque payments made.\n */\n function getTotalChequePayments() public view returns (uint256) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._totalChequePayments;\n }\n\n /***************************************************\n * ABSTRACT *\n ***************************************************/\n\n /**\n * @notice Abstract function to check if a bot is allowed to sign cheques. This\n * must be implemented by the inheriting contract.\n */\n function isBotAllowed(address bot) public view virtual returns (bool);\n\n /**\n * @notice Abstract function to get the manager address. This must be implemented\n * by the inheriting contract.\n */\n function getManagerAddress() public view virtual returns (address);\n}\n" + }, + "contracts/account/CMAccount.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Implementation\n\npragma solidity ^0.8.24;\n\nimport { ERC1967Proxy } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport { AccessControlEnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { IERC721 } from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport { IERC721Receiver } from \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport { ERC1967Utils } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\n\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\nimport { ChequeManager } from \"./ChequeManager.sol\";\nimport { BookingTokenOperator } from \"../booking-token/BookingTokenOperator.sol\";\nimport { PartnerConfiguration } from \"../partner/PartnerConfiguration.sol\";\nimport { GasMoneyManager } from \"./GasMoneyManager.sol\";\n\n/**\n * @title Camino Messenger Account\n * @notice A CM Account manages funds, minting/buying of booking tokens, provided\n * or wanted services, and multiple bots for distributors and suppliers on\n * Camino Messenger ecosystem.\n *\n * Registering bots is done by role based access control. Bot's with\n * `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n * Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n *\n * `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n * contract to be used as gas money. This restricted with a `limit`\n * (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n * values are 10 CAM per 24 hours.\n *\n * `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n * calling the corresponding functions on the {BookingToken} contract. The buy\n * operation pays the price of the Booking Token with the funds on the\n * {CMAccount} contract.\n *\n * @dev This contract uses UUPS style upgradeability. The authorization function\n * `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n * restricted to only upgrade to the implementation address registered on the\n * {CMAccountManager} contract.\n * @custom:security-contact https://r.xyz/program/camino-network\n */\ncontract CMAccount is\n Initializable,\n AccessControlEnumerableUpgradeable,\n UUPSUpgradeable,\n IERC721Receiver,\n ChequeManager,\n PartnerConfiguration,\n GasMoneyManager\n{\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /***************************************************\n * ROLES *\n ***************************************************/\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice Bot admin role can add & remove bots and set gas money withdrawal\n * parameters.\n */\n bytes32 public constant BOT_ADMIN_ROLE = keccak256(\"BOT_ADMIN_ROLE\");\n\n /**\n * @notice Cheque operator role can issue cheques to be paid by this CMAccount\n * contract.\n */\n bytes32 public constant CHEQUE_OPERATOR_ROLE = keccak256(\"CHEQUE_OPERATOR_ROLE\");\n\n /**\n * @notice Gas withdrawer role can withdraw gas money from the contract. This is\n * intended to be used by the bots and is granted when `addMessengerBot` is\n * called.\n */\n bytes32 public constant GAS_WITHDRAWER_ROLE = keccak256(\"GAS_WITHDRAWER_ROLE\");\n\n /**\n * @notice Withdrawer role can withdraw funds from the contract.\n */\n bytes32 public constant WITHDRAWER_ROLE = keccak256(\"WITHDRAWER_ROLE\");\n\n /**\n * @notice Booking operator role can mint and buy booking tokens using the\n * functions on this contract. This is generally used by the bots. The\n * price for the booking token is paid by this contract.\n */\n bytes32 public constant BOOKING_OPERATOR_ROLE = keccak256(\"BOOKING_OPERATOR_ROLE\");\n\n /**\n * @notice Service admin role can add & remove supported & wanted services.\n */\n bytes32 public constant SERVICE_ADMIN_ROLE = keccak256(\"SERVICE_ADMIN_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.CMAccount\n struct CMAccountStorage {\n /**\n * @dev Address of the CMAccountManager\n */\n address _manager;\n /**\n * @dev Address of the BookingToken contract\n */\n address _bookingToken;\n /**\n * @dev Prefund amount\n */\n uint256 _prefundAmount;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.CMAccount\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant CMAccountStorageLocation =\n 0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100;\n\n function _getCMAccountStorage() private pure returns (CMAccountStorage storage $) {\n assembly {\n $.slot := CMAccountStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\n */\n event CMAccountUpgraded(address indexed oldImplementation, address indexed newImplementation);\n\n /**\n * @notice Deposit event, emitted when there is a new deposit\n */\n event Deposit(address indexed sender, uint256 amount);\n\n /**\n * @notice Withdraw event, emitted when there is a new withdrawal\n */\n event Withdraw(address indexed receiver, uint256 amount);\n\n /**\n * @notice Messenger bot added\n */\n event MessengerBotAdded(address indexed bot);\n\n /**\n * @notice Messenger bot removed\n */\n event MessengerBotRemoved(address indexed bot);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice CMAccount implementation address does not match the one in the manager\n */\n error CMAccountImplementationMismatch(address latestImplementation, address newImplementation);\n\n /**\n * @notice New implementation is the same as the current implementation, no update needed\n */\n error CMAccountNoUpgradeNeeded(address oldImplementation, address newImplementation);\n\n /**\n * @notice Error to revert with if depositer is not allowed\n */\n error DepositorNotAllowed(address sender);\n\n /**\n * @notice Error to revert zero value deposits\n */\n error ZeroValueDeposit(address sender);\n\n /**\n * @notice Error to revert with if the prefund is not spent yet\n */\n error PrefundNotSpentYet(uint256 withdrawableAmount, uint256 prefundLeft, uint256 amount);\n\n /**\n * @notice Error to revert if transfer to zero address\n */\n error TransferToZeroAddress();\n\n /***************************************************\n * CONSTRUCTOR & INITIALIZATION *\n ***************************************************/\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(\n address manager,\n address bookingToken,\n uint256 prefundAmount,\n address defaultAdmin,\n address upgrader\n ) public initializer {\n __AccessControl_init();\n __UUPSUpgradeable_init();\n __ChequeManager_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(SERVICE_ADMIN_ROLE, defaultAdmin);\n _grantRole(BOT_ADMIN_ROLE, defaultAdmin);\n _grantRole(UPGRADER_ROLE, upgrader);\n\n CMAccountStorage storage $ = _getCMAccountStorage();\n\n $._manager = manager;\n $._bookingToken = bookingToken;\n $._prefundAmount = prefundAmount;\n\n // Initialize GasMoneyManager\n uint256 withdrawalLimit = 10 ether; // 10 CAM\n uint256 withdrawalPeriod = 24 hours; // per 24 hours\n __GasMoneyManager_init(withdrawalLimit, withdrawalPeriod);\n }\n\n receive() external payable {}\n\n /***************************************************\n * Getters *\n ***************************************************/\n\n /**\n * @notice Returns the CMAccountManager address.\n *\n * @return CMAccountManager address\n */\n function getManagerAddress() public view override returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._manager;\n }\n\n /**\n * @notice Returns the booking token address.\n *\n * @return BookingToken address\n */\n function getBookingTokenAddress() public view returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._bookingToken;\n }\n\n /**\n * @notice Returns the prefund amount.\n *\n * @return prefund amount\n */\n function getPrefundAmount() public view returns (uint256) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._prefundAmount;\n }\n\n /***************************************************\n * Account *\n ***************************************************/\n\n /**\n * @notice Authorizes the upgrade of the CMAccount.\n *\n * Reverts if the new implementation is the same as the old one.\n *\n * Reverts if the new implementation does not match the implementation address\n * in the manager. Only implementations registered at the manager are allowed.\n *\n * @dev Emits a {CMAccountUpgraded} event.\n *\n * @param newImplementation The new implementation address\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {\n // Get the implementation address from the manager\n address managerImplementation = ICMAccountManager(getManagerAddress()).getAccountImplementation();\n address oldImplementation = ERC1967Utils.getImplementation();\n\n // Revert if the new implementation is the same as the old one\n if (oldImplementation == newImplementation) {\n revert CMAccountNoUpgradeNeeded(oldImplementation, newImplementation);\n }\n\n // Check if new implementation matches the implementation address in the manager\n if (newImplementation != managerImplementation) {\n revert CMAccountImplementationMismatch(managerImplementation, newImplementation);\n }\n\n emit CMAccountUpgraded(oldImplementation, newImplementation);\n }\n\n /**\n * @notice Returns true if an address is authorized to sign cheques\n *\n * @param bot The bot's address\n */\n function isBotAllowed(address bot) public view override returns (bool) {\n return hasRole(CHEQUE_OPERATOR_ROLE, bot);\n }\n\n /**\n * @notice Verifies if the amount is withdrawable by checking if prefund is spent\n *\n * @param amount The amount to check if it's withdrawable\n */\n function _checkPrefundSpent(uint256 amount) private view {\n uint256 prefundAmount = getPrefundAmount();\n uint256 totalChequePayments = getTotalChequePayments();\n\n // Check if prefund is spent. If total cheque payments is bigger or equal to\n // prefund amount it's ok to withdraw any amount\n if (totalChequePayments < prefundAmount) {\n // Balance should be bigger or equal to the { prefundLeft } because the\n // total sum of prefund is not yet spent. So, we substact that\n // (prefundLeft) from the balance to find the withdrawable amount.\n uint256 prefundLeft = prefundAmount - totalChequePayments;\n uint256 withdrawableAmount = address(this).balance - prefundLeft;\n\n // If amount is bigger than withdrawable amount, revert.\n // Otherwise, it's ok to withdraw the amount.\n if (amount > withdrawableAmount) {\n revert PrefundNotSpentYet(withdrawableAmount, prefundLeft, amount);\n }\n }\n }\n\n /**\n * @notice Withdraw CAM from the CMAccount\n *\n * This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n * spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n * and withdraw the prefund.\n */\n function withdraw(address payable recipient, uint256 amount) external nonReentrant onlyRole(WITHDRAWER_ROLE) {\n // Check if amount is withdrawable according to the prefund spent amount\n _checkPrefundSpent(amount);\n\n recipient.sendValue(amount);\n emit Withdraw(recipient, amount);\n }\n\n /***************************************************\n * BOOKING TOKEN *\n ***************************************************/\n\n /**\n * @notice Mints booking token.\n *\n * @param reservedFor The account to reserve the token for\n * @param uri The URI of the token\n * @param expirationTimestamp The expiration timestamp\n * @param price The price of the token\n * @param paymentToken The payment token, if address(0) then native\n */\n function mintBookingToken(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n // Mint the token\n BookingTokenOperator.mintBookingToken(\n getBookingTokenAddress(),\n reservedFor,\n uri,\n expirationTimestamp,\n price,\n paymentToken\n );\n }\n\n /**\n * @notice Buys booking token.\n *\n * @param tokenId The token id\n */\n function buyBookingToken(uint256 tokenId) external nonReentrant onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.buyBookingToken(getBookingTokenAddress(), tokenId);\n }\n\n /**\n * @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n *\n * @dev See {IERC721Receiver-onERC721Received}.\n */\n function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) {\n return this.onERC721Received.selector;\n }\n\n /***************************************************\n * ERC20 & ERC721 *\n ***************************************************/\n\n /**\n * @notice Transfers ERC20 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC20 token\n * @param to The address to transfer the tokens to\n * @param amount The amount of tokens to transfer\n */\n function transferERC20(IERC20 token, address to, uint256 amount) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransfer(to, amount);\n }\n\n /**\n * @notice Transfers ERC721 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC721 token\n * @param to The address to transfer the tokens to\n * @param tokenId The token id of the token\n */\n function transferERC721(IERC721 token, address to, uint256 tokenId) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransferFrom(address(this), to, tokenId);\n }\n\n /***************************************************\n * PARTNER CONFIG *\n ***************************************************/\n\n /**\n * @notice Adds a service to the account as a supported service.\n *\n * `serviceName` is defined as pkg + service name in protobuf. For example:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n *\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceName Service name to add to the account as a supported service\n * @param fee Fee of the service in aCAM (wei in ETH terminology)\n * @param capabilities Capabilities of the service (if any, optional)\n */\n function addService(\n string memory serviceName,\n uint256 fee,\n bool restrictedRate,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addService(getServiceHash(serviceName), fee, capabilities, restrictedRate);\n }\n\n /**\n * @notice Remove a service from the account by its name\n */\n function removeService(string memory serviceName) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeService(getServiceHash(serviceName));\n }\n\n // FEE\n\n /**\n * @notice Set the fee of a service by name\n */\n function setServiceFee(string memory serviceName, uint256 fee) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceFee(getServiceHash(serviceName), fee);\n }\n\n // RESTRICTED RATE\n\n /**\n * @notice Set the restricted rate of a service by name\n */\n function setServiceRestrictedRate(\n string memory serviceName,\n bool restrictedRate\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceRestrictedRate(getServiceHash(serviceName), restrictedRate);\n }\n\n // ALL CAPABILITIES\n\n /**\n * @notice Set all capabilities for a service by name\n */\n function setServiceCapabilities(\n string memory serviceName,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceCapabilities(getServiceHash(serviceName), capabilities);\n }\n\n // SINGLE CAPABILITY\n\n /**\n * @notice Add a single capability to the service by name\n */\n function addServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addServiceCapability(getServiceHash(serviceName), capability);\n }\n\n /**\n * @notice Remove a single capability from the service by name\n */\n function removeServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeServiceCapability(getServiceHash(serviceName), capability);\n }\n\n /**\n * @notice Get service hash by name. Returns the keccak256 hash of the service name\n * from the account manager\n */\n function getServiceHash(string memory serviceName) private view returns (bytes32 serviceHash) {\n return ICMAccountManager(getManagerAddress()).getRegisteredServiceHashByName(serviceName);\n }\n\n /***************************************************\n * SERVICES WITH RESOLVED NAMES *\n ***************************************************/\n\n /**\n * @notice Get all supported services. Return a list of service names and a list of service objects.\n */\n function getSupportedServices() public view returns (string[] memory serviceNames, Service[] memory services) {\n // Get all hashes and create a list with predefined length\n bytes32[] memory _serviceHashes = getAllServiceHashes();\n string[] memory _serviceNames = new string[](_serviceHashes.length);\n Service[] memory _allSupportedServicesList = new Service[](_serviceHashes.length);\n\n for (uint256 i = 0; i < _serviceHashes.length; i++) {\n _serviceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(_serviceHashes[i]);\n _allSupportedServicesList[i] = getService(_serviceHashes[i]);\n }\n\n return (_serviceNames, _allSupportedServicesList);\n }\n\n /**\n * @notice Get service fee by name. Overloading the getServiceFee function.\n */\n function getServiceFee(string memory serviceName) public view returns (uint256 fee) {\n return getServiceFee(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\n */\n function getServiceRestrictedRate(string memory serviceName) public view returns (bool restrictedRate) {\n return getServiceRestrictedRate(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service capabilities by name. Overloading the getServiceCapabilities function.\n */\n function getServiceCapabilities(string memory serviceName) public view returns (string[] memory capabilities) {\n return getServiceCapabilities(getServiceHash(serviceName));\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds wanted services.\n *\n * @param serviceNames List of service names\n */\n function addWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _addWantedService(serviceHash);\n }\n }\n\n /**\n * @notice Removes wanted services.\n *\n * @param serviceNames List of service names\n */\n function removeWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _removeWantedService(serviceHash);\n }\n }\n\n /**\n * @notice Get all wanted services.\n *\n * @return serviceNames List of service names\n */\n function getWantedServices() public view returns (string[] memory serviceNames) {\n bytes32[] memory _wantedServiceHashes = getWantedServiceHashes();\n\n string[] memory _wantedServiceNames = new string[](_wantedServiceHashes.length);\n\n for (uint256 i = 0; i < _wantedServiceHashes.length; i++) {\n _wantedServiceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(\n _wantedServiceHashes[i]\n );\n }\n\n return _wantedServiceNames;\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n /**\n * @notice Sets if off-chain payment is supported.\n *\n * @param _isSupported true if off-chain payment is supported\n */\n function setOffChainPaymentSupported(bool _isSupported) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setOffChainPaymentSupported(_isSupported);\n }\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function addSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addSupportedToken(_supportedToken);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function removeSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeSupportedToken(_supportedToken);\n }\n\n /***************************************************\n * PUBLIC KEY *\n ***************************************************/\n\n /**\n * @notice Add public key with address\n *\n * These public keys are intended to be used with for off-chain encryption of private booking data.\n *\n * @param pubKeyAddress address of the public key\n * @param data public key data\n */\n function addPublicKey(address pubKeyAddress, bytes memory data) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addPublicKey(pubKeyAddress, data);\n }\n\n /**\n * @notice Remove public key by address\n */\n function removePublicKey(address pubKeyAddress) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removePublicKey(pubKeyAddress);\n }\n\n /***************************************************\n * MESSENGER BOTS *\n ***************************************************/\n\n /**\n * @notice Adds messenger bot with initial gas money.\n */\n function addMessengerBot(address bot, uint256 gasMoney) public onlyRole(BOT_ADMIN_ROLE) {\n // Check if we can spend the gasMoney to send it to the bot\n _checkPrefundSpent(gasMoney);\n\n // Grant roles to bot\n _grantRole(CHEQUE_OPERATOR_ROLE, bot);\n _grantRole(BOOKING_OPERATOR_ROLE, bot);\n _grantRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotAdded(bot);\n\n // Send gasMoney to bot\n payable(bot).sendValue(gasMoney);\n }\n\n /**\n * @notice Removes messenger bot by revoking the roles.\n */\n function removeMessengerBot(address bot) public onlyRole(BOT_ADMIN_ROLE) {\n _revokeRole(CHEQUE_OPERATOR_ROLE, bot);\n _revokeRole(BOOKING_OPERATOR_ROLE, bot);\n _revokeRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotRemoved(bot);\n }\n\n /***************************************************\n * GAS MONEY WITHDRAW *\n ***************************************************/\n\n /**\n * @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n *\n * @param amount The amount to withdraw in aCAM (wei)\n */\n function withdrawGasMoney(uint256 amount) public nonReentrant onlyRole(GAS_WITHDRAWER_ROLE) {\n _checkPrefundSpent(amount);\n _withdrawGasMoney(amount);\n }\n\n /**\n * @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n *\n * @param limit Amount of gas money to withdraw in wei per period\n * @param period Duration of the withdrawal period in seconds\n */\n function setGasMoneyWithdrawal(uint256 limit, uint256 period) public onlyRole(BOT_ADMIN_ROLE) {\n _setGasMoneyWithdrawal(limit, period);\n }\n}\n" + }, + "contracts/account/GasMoneyManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Gas Money Manager\n\npragma solidity ^0.8.0;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n * @title GasMoneyManager\n * @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n *\n * Gas money withdrawals are restricted to a withdrawal limit and period.\n */\nabstract contract GasMoneyManager is Initializable {\n using Address for address payable;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager\n struct GasMoneyStorage {\n mapping(address => uint256) _withdrawalPeriodStart;\n mapping(address => uint256) _withdrawnAmount;\n uint256 _withdrawalLimit;\n uint256 _withdrawalPeriod;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.GasMoneyManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant GasMoneyStorageLocation =\n 0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00;\n\n function _getGasMoneyStorage() private pure returns (GasMoneyStorage storage $) {\n assembly {\n $.slot := GasMoneyStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Gas money withdrawal event\n *\n * @param withdrawer the address of the withdrawer\n * @param amount the amount withdrawn\n */\n event GasMoneyWithdrawal(address indexed withdrawer, uint256 amount);\n\n /**\n * @notice Gas money withdrawal limit and period updated event\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n event GasMoneyWithdrawalUpdated(uint256 limit, uint256 period);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error WithdrawalLimitExceeded(uint256 limit, uint256 amount);\n error WithdrawalLimitExceededForPeriod(uint256 limit, uint256 amount);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __GasMoneyManager_init(uint256 withdrawalLimit, uint256 withdrawalPeriod) internal onlyInitializing {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = withdrawalLimit;\n $._withdrawalPeriod = withdrawalPeriod;\n }\n\n /***************************************************\n * LOGIC *\n ***************************************************/\n\n /**\n * @notice Withdraws gas money.\n *\n * This functions is intended to be called by the bot to withdraw gas money.\n * Inheriting contract should restrict who can call this with a public\n * function.\n */\n function _withdrawGasMoney(uint256 amount) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n\n // Ensure the withdrawal does not exceed the allowed limit\n if (amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceeded($._withdrawalLimit, amount);\n }\n\n // Get timestamps\n uint256 currentTime = block.timestamp;\n\n // Reset the withdrawn amount if a new period has started. If more time then\n // the withdrawal period has passed, it is allowed to withdraw full amount.\n if (currentTime > $._withdrawalPeriodStart[msg.sender] + $._withdrawalPeriod) {\n $._withdrawnAmount[msg.sender] = 0;\n $._withdrawalPeriodStart[msg.sender] = currentTime;\n }\n\n // Ensure the withdrawal does not exceed the allowed limit for the period\n if ($._withdrawnAmount[msg.sender] + amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceededForPeriod($._withdrawalLimit, amount);\n }\n\n // Update the withdrawn amount\n // FIXME: Not likely but still, check overflow (safe math libs?)\n $._withdrawnAmount[msg.sender] += amount;\n\n // Transfer the gas money\n payable(msg.sender).sendValue(amount);\n\n emit GasMoneyWithdrawal(msg.sender, amount);\n }\n\n /**\n * @notice Sets the gas money withdrawal limit and period.\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n function _setGasMoneyWithdrawal(uint256 limit, uint256 period) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = limit;\n $._withdrawalPeriod = period;\n\n emit GasMoneyWithdrawalUpdated(limit, period);\n }\n\n /**\n * @notice Returns the gas money withdrawal restrictions.\n *\n * @return withdrawalLimit\n * @return withdrawalPeriod\n */\n function getGasMoneyWithdrawal() public view returns (uint256 withdrawalLimit, uint256 withdrawalPeriod) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalLimit, $._withdrawalPeriod);\n }\n\n /**\n * @notice Returns the gas money withdrawal details for an account.\n *\n * @param account address of the account\n * @return periodStart timestamp of the withdrawal period start\n * @return withdrawnAmount amount withdrawn within the period\n */\n function getGasMoneyWithdrawalForAccount(\n address account\n ) public view returns (uint256 periodStart, uint256 withdrawnAmount) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalPeriodStart[account], $._withdrawnAmount[account]);\n }\n}\n" + }, + "contracts/account/ICMAccount.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.24;\n\ninterface ICMAccount {\n function initialize(\n address manager,\n address bookingToken,\n uint256 prefundAmount,\n address owner,\n address upgrader\n ) external;\n}\n" + }, + "contracts/booking-token/BookingToken.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\n// UUPS Proxy\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n// ERC721\nimport { ERC721Upgradeable, IERC721 } from \"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\";\nimport { ERC721URIStorageUpgradeable } from \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\";\nimport { ERC721EnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\";\n\n// Access\nimport { AccessControlUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\n\n// Manager Interface\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\n\n// Utils\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n/**\n * @title BookingToken\n * @notice Booking Token contract represents a booking done on the Camino Messenger.\n *\n * Suppliers can mint Booking Tokens and reserve them for a distributor address to\n * buy.\n *\n * Booking Tokens can have zero price, meaning that the payment will be done\n * off-chain.\n *\n * When a token is minted with a reservation, it can not transferred until the\n * expiration timestamp is reached or the token is bought.\n */\ncontract BookingToken is\n Initializable,\n ERC721Upgradeable,\n ERC721EnumerableUpgradeable,\n ERC721URIStorageUpgradeable,\n AccessControlUpgradeable,\n ReentrancyGuardUpgradeable,\n UUPSUpgradeable\n{\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice This role can set the mininum allowed expiration timestamp difference.\n */\n bytes32 public constant MIN_EXPIRATION_ADMIN_ROLE = keccak256(\"MIN_EXPIRATION_ADMIN_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n // Reservation details\n struct TokenReservation {\n address reservedFor; // CM Account address that can buy the token\n address supplier; // CM Account address that minted the token and created the reservation\n uint256 expirationTimestamp; // Timestamp when the reservation expires\n uint256 price; // Price of the token, only native for now\n IERC20 paymentToken; // Token used to pay for the reserved token\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.BookingToken\n struct BookingTokenStorage {\n // CMAccountManager address\n address _manager;\n // Counter for generating unique token IDs\n uint256 _nextTokenId;\n // Mininum allowed expiration timestamp difference\n uint256 _minExpirationTimestampDiff;\n // Reservation details for each token\n mapping(uint256 tokenId => TokenReservation tokenReservation) _reservations;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.BookingToken\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant BookingTokenStorageLocation =\n 0x9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd82900;\n\n function _getBookingTokenStorage() private pure returns (BookingTokenStorage storage $) {\n assembly {\n $.slot := BookingTokenStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Event emitted when a token is reserved.\n *\n * @param tokenId token id\n * @param reservedFor reserved for address\n * @param supplier supplier address\n * @param expirationTimestamp expiration timestamp\n * @param price price of the token\n * @param paymentToken payment token address\n */\n event TokenReserved(\n uint256 indexed tokenId,\n address indexed reservedFor,\n address indexed supplier,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n );\n\n /**\n * @notice Event emitted when a token is bought.\n *\n * @param tokenId token id\n * @param buyer buyer address\n */\n event TokenBought(uint256 indexed tokenId, address indexed buyer);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice Error for expiration timestamp too soon. It must be at least\n * `_minExpirationTimestampDiff` seconds in the future.\n */\n error ExpirationTimestampTooSoon(uint256 expirationTimestamp, uint256 minExpirationTimestampDiff);\n\n /**\n * @notice Address is not a CM Account.\n *\n * @param account account address\n */\n error NotCMAccount(address account);\n\n /**\n * @notice ReservedFor and buyer mismatch.\n *\n * @param reservedFor reserved for address\n * @param buyer buyer address\n */\n error ReservationMismatch(address reservedFor, address buyer);\n\n /**\n * @notice Reservation expired.\n *\n * @param tokenId token id\n * @param expirationTimestamp expiration timestamp\n */\n error ReservationExpired(uint256 tokenId, uint256 expirationTimestamp);\n\n /**\n * @notice Incorrect price.\n *\n * @param price price of the token\n * @param reservationPrice reservation price\n */\n error IncorrectPrice(uint256 price, uint256 reservationPrice);\n\n /**\n * @notice Supplier is not the owner.\n *\n * @param tokenId token id\n * @param supplier supplier address\n */\n error SupplierIsNotOwner(uint256 tokenId, address supplier);\n\n /**\n * @notice Token is reserved and can not be transferred.\n *\n * @param tokenId token id\n * @param reservedFor reserved for address\n */\n error TokenIsReserved(uint256 tokenId, address reservedFor);\n\n /**\n * @notice Insufficient allowance to transfer the ERC20 token to the supplier.\n *\n * @param sender msg.sender\n * @param paymentToken payment token address\n * @param price price of the token\n * @param allowance allowance amount\n */\n error InsufficientAllowance(address sender, IERC20 paymentToken, uint256 price, uint256 allowance);\n\n /***************************************************\n * MODIFIERS *\n ***************************************************/\n\n /**\n * @notice Only CMAccount modifier.\n */\n modifier onlyCMAccount(address account) {\n requireCMAccount(account);\n _;\n }\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n function initialize(address manager, address defaultAdmin, address upgrader) public initializer {\n __ERC721_init(\"BookingToken\", \"TRIP\");\n __ERC721Enumerable_init();\n __ERC721URIStorage_init();\n __AccessControl_init();\n __UUPSUpgradeable_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(UPGRADER_ROLE, upgrader);\n\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n $._manager = manager;\n $._minExpirationTimestampDiff = 60;\n }\n\n /**\n * @notice Function to authorize an upgrade for UUPS proxy.\n */\n\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {}\n\n /***************************************************\n * BOOKING-TOKEN LOGIC *\n ***************************************************/\n\n /**\n * @notice Mints a new token with a reservation for a specific address.\n *\n * @param reservedFor The CM Account address that can buy the token\n * @param uri The URI of the token\n * @param expirationTimestamp The expiration timestamp\n * @param price The price of the token\n * @param paymentToken The token used to pay for the reservation. If address(0) then native.\n */\n function safeMintWithReservation(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) public onlyCMAccount(msg.sender) {\n // Require reservedFor to be a CM Account\n requireCMAccount(reservedFor);\n\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Expiration timestamp should be at least `_minExpirationTimestampDiff`\n // seconds in the future\n uint256 minExpirationTimestampDiff = $._minExpirationTimestampDiff;\n if (!(expirationTimestamp > (block.timestamp + minExpirationTimestampDiff))) {\n revert ExpirationTimestampTooSoon(expirationTimestamp, minExpirationTimestampDiff);\n }\n\n // Increment the token id\n uint256 tokenId = $._nextTokenId++;\n\n // Mint the token for the supplier (the caller)\n _safeMint(msg.sender, tokenId);\n _setTokenURI(tokenId, uri);\n\n // Store the reservation\n _reserve(tokenId, reservedFor, msg.sender, expirationTimestamp, price, paymentToken);\n\n emit TokenReserved(tokenId, reservedFor, msg.sender, expirationTimestamp, price, paymentToken);\n }\n\n /**\n * @notice Buys a reserved token. The reservation must be for the message sender.\n *\n * Also the message sender should set allowance for the payment token to this\n * contract to at least the reservation price. (only for ERC20 tokens)\n *\n * For native coin, the message sender should send the exact amount.\n *\n * Only CM Accounts can call this function\n *\n * @param tokenId The token id\n */\n function buyReservedToken(uint256 tokenId) external payable nonReentrant onlyCMAccount(msg.sender) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Get the reservation for the token\n TokenReservation memory reservation = $._reservations[tokenId];\n\n // Check if `reservedFor` and `msg.sender` match\n if (reservation.reservedFor != msg.sender) {\n revert ReservationMismatch(reservation.reservedFor, msg.sender);\n }\n\n // Check expiration timestamp\n if (block.timestamp > reservation.expirationTimestamp) {\n revert ReservationExpired(tokenId, reservation.expirationTimestamp);\n }\n\n // Check if supplier is still the owner\n address owner = ownerOf(tokenId);\n if (owner != reservation.supplier) {\n revert SupplierIsNotOwner(tokenId, reservation.supplier);\n }\n\n // Transfer the token. We are using `_transfer` instead of\n // `safeTransferFrom` because this is special transfer without a auth check.\n // Only in this function and only for buying a reserved token\n _transfer(reservation.supplier, msg.sender, tokenId);\n\n // Delete the reservation\n delete $._reservations[tokenId];\n\n // Do the payment at the end\n if (address(reservation.paymentToken) != address(0) && reservation.price > 0) {\n // Payment is in ERC20.\n //\n // Message sender (buyer of the Booking Token, generally the\n // distributor) must provide enough allowance for this (BookingToken)\n // contract to pay the reservation price for the token to the supplier.\n uint256 allowance = reservation.paymentToken.allowance(msg.sender, address(this));\n if (allowance < reservation.price) {\n revert InsufficientAllowance(msg.sender, reservation.paymentToken, reservation.price, allowance);\n }\n\n // Transfer the ERC20 tokens from buyer to supplier\n reservation.paymentToken.safeTransferFrom(msg.sender, reservation.supplier, reservation.price);\n } else {\n // Payment is in native currency\n // Check if we receive the right price\n if (msg.value != reservation.price) {\n revert IncorrectPrice(msg.value, reservation.price);\n }\n\n // Transfer payment to the supplier\n payable(reservation.supplier).sendValue(msg.value);\n }\n\n // Emit event\n emit TokenBought(tokenId, msg.sender);\n }\n\n /**\n * @notice Reserve a token for a specific address with an expiration timestamp\n */\n function _reserve(\n uint256 tokenId,\n address reservedFor,\n address supplier,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) internal {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n $._reservations[tokenId] = TokenReservation(reservedFor, supplier, expirationTimestamp, price, paymentToken);\n }\n\n /**\n * @notice Check if the token is transferable\n */\n function checkTransferable(uint256 tokenId) internal {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n TokenReservation memory reservation = $._reservations[tokenId];\n\n // If expiration time is in the past, token is transferable. Because it can\n // not be bought after expired.\n //\n // This is also true if expirationTimestamp is 0. Which means there is no\n // reservation and token is transferable. No need to check for the\n // reservedFor address.\n if (block.timestamp <= reservation.expirationTimestamp) {\n // Token is not transferable\n revert TokenIsReserved(tokenId, reservation.reservedFor);\n } else if (reservation.reservedFor != address(0)) {\n // Clean up: Token is transferable but has expired reservation\n delete $._reservations[tokenId];\n }\n }\n\n /**\n * @notice Checks if an address is a CM Account.\n *\n * @param account The address to check\n * @return true if the address is a CM Account\n */\n function isCMAccount(address account) public view returns (bool) {\n return ICMAccountManager(getManagerAddress()).isCMAccount(account);\n }\n\n /**\n * @notice Checks if the address is a CM Account and reverts if not.\n *\n * @param account The address to check\n */\n function requireCMAccount(address account) internal view {\n if (!isCMAccount(account)) {\n revert NotCMAccount(account);\n }\n }\n\n /**\n * @notice Sets for the manager address.\n *\n * @param manager The address of the manager\n */\n function setManagerAddress(address manager) public onlyRole(DEFAULT_ADMIN_ROLE) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n $._manager = manager;\n }\n\n /**\n * @notice Returns for the manager address.\n */\n function getManagerAddress() public view returns (address) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._manager;\n }\n\n /**\n * @notice Sets minimum expiration timestamp difference in seconds.\n *\n * @param minExpirationTimestampDiff Minimum expiration timestamp difference in seconds\n */\n function setMinExpirationTimestampDiff(\n uint256 minExpirationTimestampDiff\n ) public onlyRole(MIN_EXPIRATION_ADMIN_ROLE) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n $._minExpirationTimestampDiff = minExpirationTimestampDiff;\n }\n\n /**\n * @notice Returns minimum expiration timestamp difference in seconds.\n */\n function getMinExpirationTimestampDiff() public view returns (uint256) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._minExpirationTimestampDiff;\n }\n\n /**\n * @notice Returns the token reservation price for a specific token.\n *\n * @param tokenId The token id\n */\n function getReservationPrice(uint256 tokenId) public view returns (uint256 price, IERC20 paymentToken) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return ($._reservations[tokenId].price, $._reservations[tokenId].paymentToken);\n }\n\n /***************************************************\n * TRANSFER OVERRIDES *\n ***************************************************/\n\n /**\n * @notice Override transferFrom to check if token is reserved. It reverts if\n * the token is reserved.\n */\n function transferFrom(address from, address to, uint256 tokenId) public override(ERC721Upgradeable, IERC721) {\n // Verify that the token is transferable (i.e. not reserved)\n checkTransferable(tokenId);\n super.transferFrom(from, to, tokenId);\n }\n\n /**\n * @notice Override safeTransferFrom to check if token is reserved. It reverts if\n * the token is reserved.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public override(ERC721Upgradeable, IERC721) {\n // Verify that the token is transferable (i.e. not reserved)\n checkTransferable(tokenId);\n super.safeTransferFrom(from, to, tokenId, data);\n }\n\n /***************************************************\n * END BOOKING-TOKEN LOGIC *\n ***************************************************/\n\n // Overrides required by Solidity.\n\n function _update(\n address to,\n uint256 tokenId,\n address auth\n ) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) returns (address) {\n return super._update(to, tokenId, auth);\n }\n\n function _increaseBalance(\n address account,\n uint128 value\n ) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) {\n super._increaseBalance(account, value);\n }\n\n function tokenURI(\n uint256 tokenId\n ) public view override(ERC721Upgradeable, ERC721URIStorageUpgradeable) returns (string memory) {\n return super.tokenURI(tokenId);\n }\n\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n override(ERC721Upgradeable, ERC721EnumerableUpgradeable, ERC721URIStorageUpgradeable, AccessControlUpgradeable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n}\n" + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"./IBookingToken.sol\";\n\n// ERC-20 Utils\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\n/**\n * @title BookingTokenOperator\n * @notice Booking token operator contract is used by the {CMAccount} contract to mint\n * and buy booking tokens.\n *\n * We made this a library so that we can use it in the {CMAccount} contract without\n * increasing the size of the contract.\n */\nlibrary BookingTokenOperator {\n using SafeERC20 for IERC20;\n\n /**\n * @dev Token approval for the BookingToken address failed.\n *\n * @param token token address\n * @param spender spender address (the BookingToken contract address)\n * @param amount amount of tokens to approve\n */\n error TokenApprovalFailed(address token, address spender, uint256 amount);\n\n /**\n * @dev Mints a booking token.\n *\n * @param bookingToken booking token contract address\n * @param reservedFor address of the CM Account that can buy the token\n * (generally the distributor)\n * @param uri URI of the token\n * @param expirationTimestamp expiration timestamp of the token in seconds\n * @param price price of the token\n * @param paymentToken payment token address\n */\n function mintBookingToken(\n address bookingToken,\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) public {\n IBookingToken(bookingToken).safeMintWithReservation(reservedFor, uri, expirationTimestamp, price, paymentToken);\n }\n\n /**\n * @dev Buys a booking token with the specified price and payment token in the\n * reservation.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n */\n function buyBookingToken(address bookingToken, uint256 tokenId) public {\n // Get the price from the booking token contract\n (uint256 price, IERC20 paymentToken) = IBookingToken(bookingToken).getReservationPrice(tokenId);\n\n // Check if payment is in native currency or in ERC20\n if (address(paymentToken) != address(0) && price > 0) {\n // Payment is in ERC20. Approve the BookingToken contract for the\n // reservation price. BookingToken should do the transfer to the\n // supplier.\n bool approval = paymentToken.approve(bookingToken, price);\n\n if (!approval) {\n revert TokenApprovalFailed(bookingToken, address(paymentToken), price);\n }\n\n // Buy the token\n IBookingToken(bookingToken).buyReservedToken(tokenId);\n } else {\n // Payment is in native currency. Buy the token by sending the payment\n // in native currency to the BookingToken contract.\n IBookingToken(bookingToken).buyReservedToken{ value: price }(tokenId);\n }\n }\n}\n" + }, + "contracts/booking-token/IBookingToken.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface IBookingToken {\n function safeMintWithReservation(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) external;\n\n function buyReservedToken(uint256 tokenId) external payable;\n\n function getReservationPrice(uint256 tokenId) external view returns (uint256 price, IERC20 paymentToken);\n}\n" + }, + "contracts/manager/CMAccountManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Manager\n\npragma solidity ^0.8.24;\n\n// UUPS Proxy\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { ERC1967Proxy } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n// Access\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\";\nimport { AccessControlEnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// ABI of the CMAccount implementation contract\nimport { ICMAccount } from \"../account/ICMAccount.sol\";\n\n// Utils\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\n// Service Registry\nimport { ServiceRegistry } from \"../partner/ServiceRegistry.sol\";\n\n/**\n * @title Camino Messenger Account Manager\n * @notice This contract manages the creation of the Camino Messenger accounts by\n * deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation\n * address.\n *\n * Create CM Account: Users who want to create an account should call\n * `createCMAccount(address admin, address upgrader)` function with addresses of\n * the accounts admin and upgrader roles and also send the pre fund amount,\n * which is currently set as 100 CAMs. When the manager contract is paused,\n * account creation is stopped.\n *\n * Developer Fee: This contracts also keeps the info about the developer wallet\n * and fee basis points. Which are used during the cheque cash in to pay for the\n * developer fee.\n *\n * Service Registry: {CMAccountManager} also acts as a registry for the services\n * that {CMAccount} contracts add as a supported or wanted service. Registry\n * works by hashing (keccak256) the service name (string) and creating a mapping\n * as keccak256(serviceName) => serviceName. And provides functions that\n * {CMAccount} function uses to register services. The {CMAccount} only keeps\n * the hashes (byte32) of the registered services.\n * @custom:security-contact https://r.xyz/program/camino-network\n */\ncontract CMAccountManager is\n Initializable,\n PausableUpgradeable,\n AccessControlEnumerableUpgradeable,\n UUPSUpgradeable,\n ReentrancyGuardUpgradeable,\n ServiceRegistry\n{\n using Address for address payable;\n\n /**\n * @notice Pauser role can pause the contract. Currently this only affects the\n * creation of CM Accounts. When paused, account creation is stopped.\n */\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice Versioner role can set new {CMAccount} implementation address. When a\n * new implementation address is set, it is used for the new {CMAccount}\n * creations.\n *\n * The old {CMAccount} contracts are not affected by this. Owners of those\n * should do the upgrade manually by calling the `upgradeToAndCall(address)`\n * function on the account.\n */\n bytes32 public constant VERSIONER_ROLE = keccak256(\"VERSIONER_ROLE\");\n\n /**\n * @notice Fee admin role can set the developer fee basis points which used for\n * calculating the developer fee that is cut from the cheque payments.\n */\n bytes32 public constant FEE_ADMIN_ROLE = keccak256(\"FEE_ADMIN_ROLE\");\n\n /**\n * @notice Developer wallet admin role can set the developer wallet address\n * which is used to receive the developer fee.\n */\n bytes32 public constant DEVELOPER_WALLET_ADMIN_ROLE = keccak256(\"DEVELOPER_WALLET_ADMIN_ROLE\");\n\n /**\n * @notice Prefund admin role can set the mandatory prefund amount for {CMAccount}\n * contracts.\n */\n bytes32 public constant PREFUND_ADMIN_ROLE = keccak256(\"PREFUND_ADMIN_ROLE\");\n\n /**\n * @notice Service registry admin role can add and remove services to the service\n * registry mapping. Implemented by {ServiceRegistry} contract.\n */\n bytes32 public constant SERVICE_REGISTRY_ADMIN_ROLE = keccak256(\"SERVICE_REGISTRY_ADMIN_ROLE\");\n\n /**\n * @notice This role is granted to the created CM Accounts. It is used to keep\n * an enumerable list of CM Accounts.\n */\n bytes32 public constant CMACCOUNT_ROLE = keccak256(\"CMACCOUNT_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /**\n * @notice CMAccount info struct, to keep track of created CM Accounts and their\n * creators.\n */\n struct CMAccountInfo {\n bool isCMAccount;\n address creator;\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.CMAccountManager\n struct CMAccountManagerStorage {\n /**\n * @dev CM Account implementation address to be used by the CMAccount contract to restrict\n * the implementation address for the UUPS proxies.\n */\n address _latestAccountImplementation;\n /**\n * @dev Prefund amount.\n */\n uint256 _prefundAmount;\n /**\n * @dev Developer wallet address. CMAccount sends the developer fee to this address.\n */\n address _developerWallet;\n /**\n * @dev Developer fee basis points.\n *\n * A basis point (bp) is one hundredth of 1 percentage point.\n *\n * 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n * 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n * 100 bp = 1%, ⁠1/100⁠, or 0.01.\n */\n uint256 _developerFeeBp;\n /**\n * @dev BookingToken address.\n */\n address _bookingToken;\n /**\n * @dev CMAccount info mapping to track if an address is a CMAccount and initial creators.\n */\n mapping(address account => CMAccountInfo) _cmAccountInfo;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.CMAccountManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant CMAccountManagerStorageLocation =\n 0x2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e800;\n\n function _getCMAccountManagerStorage() private pure returns (CMAccountManagerStorage storage $) {\n assembly {\n $.slot := CMAccountManagerStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice CM Account created event.\n * @param account The address of the new CMAccount\n */\n event CMAccountCreated(address indexed account);\n\n /**\n * @notice CM Account implementation address updated event.\n * @param oldImplementation The old implementation address\n * @param newImplementation The new implementation address\n */\n event CMAccountImplementationUpdated(address indexed oldImplementation, address indexed newImplementation);\n\n /**\n * @notice Developer wallet address updated event.\n * @param oldDeveloperWallet The old developer wallet address\n * @param newDeveloperWallet The new developer wallet address\n */\n event DeveloperWalletUpdated(address indexed oldDeveloperWallet, address indexed newDeveloperWallet);\n\n /**\n * @notice Developer fee basis points updated event.\n * @param oldDeveloperFeeBp The old developer fee basis points\n * @param newDeveloperFeeBp The new developer fee basis points\n */\n event DeveloperFeeBpUpdated(uint256 indexed oldDeveloperFeeBp, uint256 indexed newDeveloperFeeBp);\n\n /**\n * @notice Booking token address updated event.\n * @param oldBookingToken The old booking token address\n * @param newBookingToken The new booking token address\n */\n event BookingTokenAddressUpdated(address indexed oldBookingToken, address indexed newBookingToken);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice The implementation of the CMAccount is invalid.\n * @param implementation The implementation address of the CMAccount\n */\n error CMAccountInvalidImplementation(address implementation);\n\n /**\n * @notice The admin address is invalid.\n * @param admin The admin address\n */\n error CMAccountInvalidAdmin(address admin);\n\n /**\n * @notice Invalid developer address.\n * @param developerWallet The developer wallet address\n */\n error InvalidDeveloperWallet(address developerWallet);\n\n /**\n * @notice Invalid booking token address.\n * @param bookingToken The booking token address\n */\n error InvalidBookingTokenAddress(address bookingToken);\n\n /**\n * @notice Incorrect pre fund amount.\n * @param expected The expected pre fund amount\n */\n error IncorrectPrefundAmount(uint256 expected, uint256 sended);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(\n address defaultAdmin, // can grant roles\n address pauser, // can pause the manager\n address upgrader, // can upgrade the manager (this contract)\n address versioner, // can set CMAccount implementation address\n address developerWallet, // developer wallet used to receive the developer fee\n uint256 developerFeeBp // developer fee basis points\n ) public initializer {\n __Pausable_init();\n __AccessControl_init();\n __UUPSUpgradeable_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(PAUSER_ROLE, pauser);\n _grantRole(UPGRADER_ROLE, upgrader);\n _grantRole(VERSIONER_ROLE, versioner);\n\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n\n $._developerWallet = developerWallet;\n $._developerFeeBp = developerFeeBp;\n\n // Set initial prefund amount to 100 CAM\n $._prefundAmount = 100 ether;\n }\n\n /**\n * @notice Pauses the CMAccountManager contract. Currently this only affects the\n * creation of CMAccount. When paused, account creation is stopped.\n */\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n /**\n * @notice Unpauses the CMAccountManager contract.\n */\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n /**\n * @notice Authorization for the CMAccountManager contract upgrade.\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {}\n\n /***************************************************\n * ACCOUNT *\n ***************************************************/\n\n /**\n * @notice Creates CMAccount by deploying a ERC1967Proxy with the CMAccount\n * implementation from the manager.\n *\n * Because this function is deploying a contract, it reverts if the caller is\n * not KYC or KYB verified. (For EOAs only)\n *\n * Caller must send the pre-fund amount with the transaction.\n *\n * @dev Emits a {CMAccountCreated} event.\n */\n function createCMAccount(\n address admin,\n address upgrader\n ) external payable nonReentrant whenNotPaused returns (address) {\n return _createCMAccount(admin, upgrader);\n }\n\n /**\n * @notice Private function to create a `CMAccount`.\n */\n function _createCMAccount(address admin, address upgrader) private returns (address) {\n // Checks\n if (admin == address(0)) {\n revert CMAccountInvalidAdmin(admin);\n }\n\n uint256 prefundAmount = getPrefundAmount();\n\n // Check pre-fund amount\n if (msg.value < prefundAmount) {\n revert IncorrectPrefundAmount(prefundAmount, msg.value);\n }\n\n address latestAccountImplementation = getAccountImplementation();\n if (latestAccountImplementation.code.length == 0) {\n revert CMAccountInvalidImplementation(latestAccountImplementation);\n }\n\n address bookingToken = getBookingTokenAddress();\n if (bookingToken.code.length == 0) {\n revert InvalidBookingTokenAddress(bookingToken);\n }\n\n // Create CMAccount Proxy and set the implementation address\n ERC1967Proxy cmAccountProxy = new ERC1967Proxy(latestAccountImplementation, \"\");\n\n // Initialize the CMAccount\n ICMAccount(address(cmAccountProxy)).initialize(address(this), bookingToken, prefundAmount, admin, upgrader);\n\n // Set the isCMAccount and creator\n _setCMAccountInfo(address(cmAccountProxy), CMAccountInfo({ isCMAccount: true, creator: msg.sender }));\n\n // Grant CMACCOUNT_ROLE\n _grantRole(CMACCOUNT_ROLE, address(cmAccountProxy));\n\n // Send the pre fund to the CMAccount\n payable(cmAccountProxy).sendValue(msg.value);\n\n emit CMAccountCreated(address(cmAccountProxy));\n\n return address(cmAccountProxy);\n }\n\n function _setCMAccountInfo(address account, CMAccountInfo memory info) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._cmAccountInfo[account] = info;\n }\n\n /**\n * @notice Returns the given account's creator.\n * @param account The account address\n */\n function getCMAccountCreator(address account) public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._cmAccountInfo[account].creator;\n }\n\n /**\n * @notice Check if an address is CMAccount created by the manager.\n * @param account The account address to check\n */\n function isCMAccount(address account) public view returns (bool) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._cmAccountInfo[account].isCMAccount;\n }\n\n /***************************************************\n * ACCOUNT IMPLEMENTATION *\n ***************************************************/\n\n /**\n * @notice Returns the CMAccount implementation address.\n */\n function getAccountImplementation() public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._latestAccountImplementation;\n }\n\n /**\n * @notice Set a new CMAccount implementation address.\n * @param newImplementation The new implementation address\n */\n function setAccountImplementation(address newImplementation) public onlyRole(VERSIONER_ROLE) {\n if (newImplementation.code.length == 0) {\n revert CMAccountInvalidImplementation(newImplementation);\n }\n\n address oldImplementation = getAccountImplementation();\n _setAccountImplementation(newImplementation);\n emit CMAccountImplementationUpdated(oldImplementation, newImplementation);\n }\n\n function _setAccountImplementation(address newImplementation) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._latestAccountImplementation = newImplementation;\n }\n\n /***************************************************\n * PREFUND *\n ***************************************************/\n\n /**\n * @notice Returns the prefund amount.\n */\n function getPrefundAmount() public view returns (uint256) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._prefundAmount;\n }\n\n /**\n * @notice Sets the prefund amount.\n */\n function setPrefundAmount(uint256 newPrefundAmount) public onlyRole(PREFUND_ADMIN_ROLE) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._prefundAmount = newPrefundAmount;\n }\n\n /***************************************************\n * BOOKING TOKEN *\n ***************************************************/\n\n /**\n * @notice Returns the booking token address.\n */\n function getBookingTokenAddress() public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._bookingToken;\n }\n\n /**\n * @notice Sets booking token address.\n */\n function setBookingTokenAddress(address token) public onlyRole(VERSIONER_ROLE) {\n if (token.code.length == 0) {\n revert InvalidBookingTokenAddress(token);\n }\n\n address oldToken = getBookingTokenAddress();\n _setBookingTokenAddress(token);\n emit BookingTokenAddressUpdated(oldToken, token);\n }\n\n function _setBookingTokenAddress(address token) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._bookingToken = token;\n }\n\n /***************************************************\n * DEVELOPER WALLET & FEE *\n ***************************************************/\n\n /**\n * @notice Returns developer wallet address.\n */\n function getDeveloperWallet() public view returns (address developerWallet) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._developerWallet;\n }\n\n /**\n * @notice Sets developer wallet address.\n */\n function setDeveloperWallet(address developerWallet) public onlyRole(DEVELOPER_WALLET_ADMIN_ROLE) {\n if (developerWallet == address(0)) {\n revert InvalidDeveloperWallet(developerWallet);\n }\n\n address oldDeveloperWallet = getDeveloperWallet();\n _setDeveloperWallet(developerWallet);\n emit DeveloperWalletUpdated(oldDeveloperWallet, developerWallet);\n }\n\n function _setDeveloperWallet(address developerWallet) private {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._developerWallet = developerWallet;\n }\n\n /**\n * @notice Returns developer fee in basis points.\n */\n function getDeveloperFeeBp() public view returns (uint256 developerFeeBp) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._developerFeeBp;\n }\n\n /**\n * @notice Sets developer fee in basis points.\n *\n * A basis point (bp) is one hundredth of 1 percentage point.\n *\n * 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n * 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n * 100 bp = 1%, ⁠1/100⁠, or 0.01.\n */\n function setDeveloperFeeBp(uint256 bp) public onlyRole(FEE_ADMIN_ROLE) {\n uint256 oldBp = getDeveloperFeeBp();\n _setDeveloperFeeBp(bp);\n emit DeveloperFeeBpUpdated(oldBp, bp);\n }\n\n function _setDeveloperFeeBp(uint256 bp) private {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._developerFeeBp = bp;\n }\n\n /***************************************************\n * SERVICE REGISTRY *\n ***************************************************/\n\n /**\n * @notice Registers a given service name. CM Accounts can only register services\n * if they are also registered in the service registry on the manager contract.\n *\n * @param serviceName Name of the service\n */\n function registerService(string memory serviceName) public onlyRole(SERVICE_REGISTRY_ADMIN_ROLE) {\n _registerServiceName(serviceName);\n }\n\n /**\n * @notice Unregisters a given service name. CM Accounts will not be able to register\n * the service anymore.\n *\n * @param serviceName Name of the service\n */\n function unregisterService(string memory serviceName) public onlyRole(SERVICE_REGISTRY_ADMIN_ROLE) {\n _unregisterServiceName(serviceName);\n }\n}\n" + }, + "contracts/manager/ICMAccountManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.24;\n\ninterface ICMAccountManager {\n function getAccountImplementation() external view returns (address);\n\n function getDeveloperFeeBp() external view returns (uint256);\n\n function getDeveloperWallet() external view returns (address);\n\n function isCMAccount(address account) external view returns (bool);\n\n function getRegisteredServiceHashByName(string memory serviceName) external view returns (bytes32 serviceHash);\n\n function getRegisteredServiceNameByHash(bytes32 serviceHash) external view returns (string memory serviceName);\n}\n" + }, + "contracts/manager/test/CMAccountManagerV2.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Manager V2 for Testing Upgrades\n\n/**\n * TESTING ONLY - NOT FOR PRODUCTION\n */\n\npragma solidity ^0.8.24;\n\nimport { CMAccountManager } from \"../CMAccountManager.sol\";\n\ncontract CMAccountManagerV2 is CMAccountManager {\n function getVersion() public pure returns (string memory) {\n return \"V2\";\n }\n}\n" + }, + "contracts/partner/PartnerConfiguration.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Partner Configuration\n\npragma solidity ^0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\n/**\n * @title PartnerConfiguration\n * @notice Partner Configuration is used by the {CMAccount} contract to register\n * supported and wanted services by the partner.\n */\nabstract contract PartnerConfiguration is Initializable {\n using EnumerableSet for EnumerableSet.Bytes32Set;\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /**\n * @notice Struct for storing supported service details for suppliers\n */\n struct Service {\n uint256 _fee;\n /**\n * @dev If set to true, this means the service is restricted to pre-agreement\n * with the partner. (Not a rack rate)\n */\n bool _restrictedRate;\n string[] _capabilities;\n }\n\n struct PaymentInfo {\n bool _supportsOffChainPayment; // Supports off chain payments if true\n EnumerableSet.AddressSet _supportedTokens; // Supported on-chain token for payment\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration\n struct PartnerConfigurationStorage {\n // Set of supported service hashes\n EnumerableSet.Bytes32Set _servicesHashSet;\n // Mapping of service hashes to the service details\n mapping(bytes32 _serviceHash => Service _service) _supportedServices;\n // Payment\n PaymentInfo _paymentInfo;\n // Public keys, keep a enumerable list of public key addresses\n EnumerableSet.AddressSet _publicKeyAddressesSet;\n // Public keys for encrypting private data for Booking Token\n mapping(address publicKeyAddress => bytes publicKey) _publicKeys;\n // Services that this distributors want to buy\n EnumerableSet.Bytes32Set _wantedServicesHashSet;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.PartnerConfiguration\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant PartnerConfigurationStorageLocation =\n 0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000;\n\n function _getPartnerConfigurationStorage() private pure returns (PartnerConfigurationStorage storage $) {\n assembly {\n $.slot := PartnerConfigurationStorageLocation\n }\n }\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error ServiceAlreadyExists(bytes32 serviceHash);\n error ServiceDoesNotExist(bytes32 serviceHash);\n\n error WantedServiceAlreadyExists(bytes32 serviceHash);\n error WantedServiceDoesNotExist(bytes32 serviceHash);\n\n error PaymentTokenAlreadyExists(address token);\n error PaymentTokenDoesNotExist(address token);\n\n error PublicKeyAlreadyExists(address pubKeyAddress);\n error PublicKeyDoesNotExist(address pubKeyAddress);\n error InvalidPublicKeyUseType(uint8 use);\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event ServiceAdded(bytes32 serviceHash);\n event ServiceRemoved(bytes32 serviceHash);\n\n event WantedServiceAdded(bytes32 serviceHash);\n event WantedServiceRemoved(bytes32 serviceHash);\n\n event ServiceFeeUpdated(bytes32 serviceHash, uint256 fee);\n event ServiceRestrictedRateUpdated(bytes32 serviceHash, bool restrictedRate);\n\n event ServiceCapabilitiesUpdated(bytes32 serviceHash);\n event ServiceCapabilityAdded(bytes32 serviceHash, string capability);\n event ServiceCapabilityRemoved(bytes32 serviceHash, string capability);\n\n event PaymentTokenAdded(address token);\n event PaymentTokenRemoved(address token);\n\n event OffChainPaymentSupportUpdated(bool supportsOffChainPayment);\n\n event PublicKeyAdded(address indexed pubKeyAddress);\n event PublicKeyRemoved(address indexed pubKeyAddress);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __PartnerConfiguration_init() internal onlyInitializing {}\n\n function __PartnerConfiguration_init_unchained() internal onlyInitializing {}\n\n /***************************************************\n * SERVICE *\n ***************************************************/\n\n /**\n * @notice Adds a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee for the service\n * @param capabilities Capabilities for the service\n * @param restrictedRate If the service is restricted to pre-agreement\n */\n function _addService(\n bytes32 serviceHash,\n uint256 fee,\n string[] memory capabilities,\n bool restrictedRate\n ) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to add the service to the services hash set\n bool added = $._servicesHashSet.add(serviceHash);\n if (!added) {\n revert ServiceAlreadyExists(serviceHash);\n }\n $._supportedServices[serviceHash] = Service({\n _fee: fee,\n _capabilities: capabilities,\n _restrictedRate: restrictedRate\n });\n\n emit ServiceAdded(serviceHash);\n }\n\n /**\n * @notice Removes a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n */\n function _removeService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to remove the service\n bool removed = $._servicesHashSet.remove(serviceHash);\n if (!removed) {\n revert ServiceDoesNotExist(serviceHash);\n }\n\n delete $._supportedServices[serviceHash];\n\n emit ServiceRemoved(serviceHash);\n }\n\n /**\n * @notice Sets the Service fee for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee\n */\n function _setServiceFee(bytes32 serviceHash, uint256 fee) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._fee = fee;\n\n emit ServiceFeeUpdated(serviceHash, fee);\n }\n\n /**\n * @notice Sets the Service restricted rate for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param restrictedRate Restricted rate\n */\n function _setServiceRestrictedRate(bytes32 serviceHash, bool restrictedRate) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._restrictedRate = restrictedRate;\n\n emit ServiceRestrictedRateUpdated(serviceHash, restrictedRate);\n }\n\n /**\n * @notice Sets the Service capabilities for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param capabilities Capabilities\n */\n function _setServiceCapabilities(bytes32 serviceHash, string[] memory capabilities) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities = capabilities;\n\n emit ServiceCapabilitiesUpdated(serviceHash);\n }\n\n /**\n * @notice Adds a capability to the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _addServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities.push(capability);\n\n emit ServiceCapabilityAdded(serviceHash, capability);\n }\n\n /**\n * @notice Removes a capability from the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _removeServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n string[] storage capabilities = $._supportedServices[serviceHash]._capabilities;\n for (uint256 i = 0; i < capabilities.length; i++) {\n if (keccak256(abi.encodePacked(capabilities[i])) == keccak256(abi.encodePacked(capability))) {\n capabilities[i] = capabilities[capabilities.length - 1];\n capabilities.pop();\n emit ServiceCapabilityRemoved(serviceHash, capability);\n break;\n }\n }\n }\n\n /**\n * @notice Returns all supported service hashes.\n */\n function getAllServiceHashes() public view returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._servicesHashSet.values();\n }\n\n /**\n * @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n *\n * `serviceHash` is keccak256 hash of the pkg + service name as:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceHash Hash of the service\n */\n function getService(bytes32 serviceHash) public view virtual returns (Service memory service) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash];\n }\n\n /**\n * @notice Returns the fee for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceFee(bytes32 serviceHash) public view virtual returns (uint256 fee) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._fee;\n }\n\n /**\n * @notice Returns the restricted rate for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceRestrictedRate(bytes32 serviceHash) public view virtual returns (bool restrictedRate) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._restrictedRate;\n }\n\n /**\n * @notice Returns the capabilities for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceCapabilities(bytes32 serviceHash) public view virtual returns (string[] memory capabilities) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._capabilities;\n }\n\n /**\n * @notice Checks if the service exists.\n *\n * @param serviceHash Hash of the service\n */\n function _checkServiceExists(bytes32 serviceHash, PartnerConfigurationStorage storage $) private view {\n // Check if the service exists\n if (!$._servicesHashSet.contains(serviceHash)) {\n revert ServiceDoesNotExist(serviceHash);\n }\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds a wanted service hash to the wanted services set.\n *\n * Reverts if the service already exists.\n *\n * @param serviceHash Hash of the service\n */\n function _addWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._wantedServicesHashSet.add(serviceHash);\n\n if (!added) {\n revert WantedServiceAlreadyExists(serviceHash);\n }\n\n emit WantedServiceAdded(serviceHash);\n }\n\n /**\n * @notice Removes a wanted service hash from the wanted services set.\n *\n * Reverts if the service does not exist.\n *\n * @param serviceHash Hash of the service\n */\n function _removeWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._wantedServicesHashSet.remove(serviceHash);\n\n if (!removed) {\n revert WantedServiceDoesNotExist(serviceHash);\n }\n\n emit WantedServiceRemoved(serviceHash);\n }\n\n /**\n * @notice Returns all wanted service hashes.\n *\n * @return serviceHashes Wanted service hashes\n */\n function getWantedServiceHashes() public view virtual returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._wantedServicesHashSet.values();\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n // PAYMENT INFO: SUPPORTED TOKENS\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _token Payment token address to be added\n */\n function _addSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool added = $._paymentInfo._supportedTokens.add(_token);\n\n if (!added) {\n revert PaymentTokenAlreadyExists(_token);\n }\n\n emit PaymentTokenAdded(_token);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _token Payment token address to be removed\n */\n function _removeSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool removed = $._paymentInfo._supportedTokens.remove(_token);\n\n if (!removed) {\n revert PaymentTokenDoesNotExist(_token);\n }\n\n emit PaymentTokenRemoved(_token);\n }\n\n /**\n * @notice Returns supported token addresses.\n *\n * @return tokens Supported token addresses\n */\n function getSupportedTokens() public view virtual returns (address[] memory tokens) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportedTokens.values();\n }\n\n // PAYMENT INFO: OFF-CHAIN PAYMENT SUPPORT\n\n /**\n * @notice Sets the off-chain payment support is supported.\n */\n function _setOffChainPaymentSupported(bool _supportsOffChainPayment) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n $._paymentInfo._supportsOffChainPayment = _supportsOffChainPayment;\n emit OffChainPaymentSupportUpdated(_supportsOffChainPayment);\n }\n\n /**\n * @notice Returns true if off-chain payment is supported for the given service.\n */\n function offChainPaymentSupported() public view virtual returns (bool) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportsOffChainPayment;\n }\n\n /***************************************************\n * PUBLIC KEYS *\n ***************************************************/\n\n /**\n * @notice Adds public key with an address. Reverts if the public key already\n * exists.\n *\n * Beware: This functions does not check if the public key is actually for the\n * given address.\n */\n function _addPublicKey(address pubKeyAddress, bytes memory publicKeyData) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._publicKeyAddressesSet.add(pubKeyAddress);\n\n if (!added) {\n revert PublicKeyAlreadyExists(pubKeyAddress);\n }\n\n $._publicKeys[pubKeyAddress] = publicKeyData;\n\n emit PublicKeyAdded(pubKeyAddress);\n }\n\n /**\n * @notice Removes the public key for a given address\n *\n * Reverts if the public key does not exist\n */\n function _removePublicKey(address pubKeyAddress) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._publicKeyAddressesSet.remove(pubKeyAddress);\n\n if (!removed) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n delete $._publicKeys[pubKeyAddress];\n emit PublicKeyRemoved(pubKeyAddress);\n }\n\n /**\n * @notice Returns the addresses of all public keys. These can then be used to\n * retrieve the public keys the `getPublicKey(address)` function.\n */\n function getPublicKeysAddresses() public view virtual returns (address[] memory pubKeyAddresses) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._publicKeyAddressesSet.values();\n }\n\n /**\n * @notice Returns the public key for a given address.\n *\n * Reverts if the public key does not exist\n *\n * @param pubKeyAddress Address of the public key\n */\n function getPublicKey(address pubKeyAddress) public view virtual returns (bytes memory data) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n if (!$._publicKeyAddressesSet.contains(pubKeyAddress)) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n return $._publicKeys[pubKeyAddress];\n }\n}\n" + }, + "contracts/partner/ServiceRegistry.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Service Registry for Partner Configuration\n\npragma solidity ^0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\n/**\n * @title ServiceRegistry\n * @notice Service registry is used by the {CMAccountManager} contract to register\n * services by hashing (keccak256) the service name (string) and creating a mapping\n * as keccak256(serviceName) => serviceName.\n */\nabstract contract ServiceRegistry is Initializable {\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n using EnumerableSet for EnumerableSet.Bytes32Set;\n\n /// @custom:storage-location erc7201:camino.messenger.storage.ServiceRegistry\n struct ServiceRegistryStorage {\n EnumerableSet.Bytes32Set _servicesHashSet; // set of service hashes\n mapping(bytes32 serviceHash => string serviceName) _serviceNameByHash;\n mapping(string serviceName => bytes32 serviceHash) _hashByServiceName;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.ServiceRegistry\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant ServiceRegistryStorageLocation =\n 0x563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d8168600;\n\n function _getServiceRegistryStorage() private pure returns (ServiceRegistryStorage storage $) {\n assembly {\n $.slot := ServiceRegistryStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event ServiceRegistered(string serviceName, bytes32 serviceHash);\n event ServiceUnregistered(string serviceName, bytes32 serviceHash);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error ServiceAlreadyRegistered(string serviceName);\n error ServiceNotRegistered();\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __ServiceRegistry_init() internal onlyInitializing {}\n\n function __ServiceRegistry_init_unchained() internal onlyInitializing {}\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @notice Adds a new service by its name. This function calculates the hash of the\n * service name and adds it to the registry\n *\n * {serviceName} is the pkg + service name as:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * \"cmp.services.accommodation.v1alpha.AccommodationSearchService\"\n * ```\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceName Name of the service\n */\n function _registerServiceName(string memory serviceName) internal virtual {\n bytes32 serviceHash = keccak256(abi.encodePacked(serviceName));\n\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Try to add the hash to the service set\n bool added = $._servicesHashSet.add(serviceHash);\n\n if (!added) {\n revert ServiceAlreadyRegistered(serviceName);\n }\n\n $._serviceNameByHash[serviceHash] = serviceName;\n $._hashByServiceName[serviceName] = serviceHash;\n\n emit ServiceRegistered(serviceName, serviceHash);\n }\n\n /**\n * @notice Removes a service by its name. This function calculates the hash of the\n * service name and removes it from the registry.\n *\n * @param serviceName Name of the service\n */\n function _unregisterServiceName(string memory serviceName) internal virtual {\n bytes32 serviceHash = keccak256(abi.encodePacked(serviceName));\n\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Try to remove the hash to the service set\n bool removed = $._servicesHashSet.remove(serviceHash);\n\n if (!removed) {\n revert ServiceNotRegistered();\n }\n\n delete $._serviceNameByHash[serviceHash];\n delete $._hashByServiceName[serviceName];\n\n emit ServiceUnregistered(serviceName, serviceHash);\n }\n\n /**\n * @notice Returns the name of a service by its hash.\n *\n * @param serviceHash Hash of the service\n */\n function getRegisteredServiceNameByHash(bytes32 serviceHash) public view returns (string memory serviceName) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Check if the service is registered\n if (!$._servicesHashSet.contains(serviceHash)) {\n revert ServiceNotRegistered();\n }\n return $._serviceNameByHash[serviceHash];\n }\n\n /**\n * @notice Returns the hash of a service by its name.\n *\n * @param serviceName Name of the service\n */\n function getRegisteredServiceHashByName(string memory serviceName) public view returns (bytes32 serviceHash) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Check if the service is registered\n if (!$._servicesHashSet.contains(keccak256(abi.encodePacked(serviceName)))) {\n revert ServiceNotRegistered();\n }\n\n return $._hashByServiceName[serviceName];\n }\n\n /**\n * @notice Returns all registered service **hashes**.\n *\n * @return services All registered service hashes\n */\n function getAllRegisteredServiceHashes() public view returns (bytes32[] memory services) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n return $._servicesHashSet.values();\n }\n\n /**\n * @notice Returns all registered service **names**.\n *\n * @return services All registered service names\n */\n function getAllRegisteredServiceNames() public view returns (string[] memory services) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Get all hashes and create a list with predefined length\n bytes32[] memory serviceHashes = $._servicesHashSet.values();\n string[] memory serviceNames = new string[](serviceHashes.length);\n\n // Get all names for the hashes\n for (uint256 i = 0; i < serviceHashes.length; i++) {\n serviceNames[i] = $._serviceNameByHash[serviceHashes[i]];\n }\n\n return serviceNames;\n }\n}\n" + }, + "contracts/test/Dummy.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// TEST CONTRACT\n\npragma solidity ^0.8.24;\n\ncontract Dummy {\n function getVersion() public pure returns (string memory) {\n return \"DUMMY\";\n }\n}\n" + }, + "contracts/test/NullUSD.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Null USD Contract for testing purposes\n\npragma solidity ^0.8.24;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract NullUSD is ERC20 {\n constructor() ERC20(\"NullUSD\", \"NUSD\") {\n _mint(msg.sender, 1000000 * 10 ** decimals());\n }\n}\n" + }, + "contracts/utils/KYCUtils.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino KYC Utilities\n\npragma solidity ^0.8.24;\n\ninterface ICaminoAdmin {\n function getKycState(address account) external view returns (uint256);\n}\n\nlibrary KYCUtils {\n /**\n * @notice Admin contract address\n */\n address public constant ADMIN_ADDR = 0x010000000000000000000000000000000000000a;\n\n /**\n * Constants for KYC states\n */\n uint256 public constant KYC_VERIFIED = 1 << 0; // Bit 0\n uint256 public constant KYC_EXPIRED = 1 << 1; // Bit 1\n uint256 public constant KYB_VERIFIED = 1 << 8; // Bit 8\n\n /**\n * Errors\n */\n error NotKYCVerified(address account);\n error NotKYBVerified(address account);\n error NotVerified(address account);\n\n /**\n * @dev Returns KYC state from the CaminoAdmin contract\n * @param account address to check the state\n */\n function getKYCState(address account) internal view returns (uint256) {\n return ICaminoAdmin(ADMIN_ADDR).getKycState(account);\n }\n\n /**\n * @dev Returns true if the address is KYC verified\n * @param account address to check the state\n */\n function isKYCVerified(address account) internal view returns (bool) {\n uint256 kycState = getKYCState(account);\n return kycState & KYC_VERIFIED != 0;\n }\n\n /**\n * @dev Returns true if the address is KYB verified\n * @param account address to check the state\n */\n function isKYBVerified(address account) internal view returns (bool) {\n uint256 kycState = getKYCState(account);\n return kycState & KYB_VERIFIED != 0;\n }\n\n /**\n * @dev Returns true if the address is KYC or KYB verified\n * @param account address to check the state\n */\n function isVerified(address account) internal view returns (bool) {\n uint256 kycState = getKYCState(account);\n return (kycState & KYC_VERIFIED != 0) || (kycState & KYB_VERIFIED != 0);\n }\n\n /**\n * @dev Reverts with `NotKYCVerified(account)` if the account is not KYC verified.\n * @param account address to check the state\n */\n function requireKYCVerified(address account) internal view {\n if (!isKYCVerified(account)) {\n revert NotKYCVerified(account);\n }\n }\n\n /**\n * @dev Reverts with `NotKYBVerified(account)` if the account is not KYB verified.\n * @param account address to check the state\n */\n function requireKYBVerified(address account) internal view {\n if (!isKYBVerified(account)) {\n revert NotKYBVerified(account);\n }\n }\n\n /**\n * @dev Reverts with `NotVerified(account)` if the account is not KYC or KYB verified.\n * @param account address to check the state\n */\n function requireVerified(address account) internal view {\n if (!isVerified(account)) {\n revert NotVerified(account);\n }\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "ContextUpgradeable": [ + 2832 + ], + "ERC165Upgradeable": [ + 3177 + ], + "IAccessControl": [ + 3260 + ], + "Initializable": [ + 817 + ] + }, + "id": 363, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:0" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "@openzeppelin/contracts/access/IAccessControl.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 3261, + "src": "134:81:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3260, + "src": "142:14:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 2833, + "src": "216:67:0", + "symbolAliases": [ + { + "foreign": { + "id": 4, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2832, + "src": "224:18:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "file": "../utils/introspection/ERC165Upgradeable.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 3178, + "src": "284:79:0", + "symbolAliases": [ + { + "foreign": { + "id": 6, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3177, + "src": "292:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 9, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 818, + "src": "364:63:0", + "symbolAliases": [ + { + "foreign": { + "id": 8, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "372:13:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11, + "name": "Initializable", + "nameLocations": [ + "2136:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "2136:13:0" + }, + "id": 12, + "nodeType": "InheritanceSpecifier", + "src": "2136:13:0" + }, + { + "baseName": { + "id": 13, + "name": "ContextUpgradeable", + "nameLocations": [ + "2151:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2832, + "src": "2151:18:0" + }, + "id": 14, + "nodeType": "InheritanceSpecifier", + "src": "2151:18:0" + }, + { + "baseName": { + "id": 15, + "name": "IAccessControl", + "nameLocations": [ + "2171:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3260, + "src": "2171:14:0" + }, + "id": 16, + "nodeType": "InheritanceSpecifier", + "src": "2171:14:0" + }, + { + "baseName": { + "id": 17, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2187:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3177, + "src": "2187:17:0" + }, + "id": 18, + "nodeType": "InheritanceSpecifier", + "src": "2187:17:0" + } + ], + "canonicalName": "AccessControlUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 10, + "nodeType": "StructuredDocumentation", + "src": "429:1660:0", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role." + }, + "fullyImplemented": true, + "id": 362, + "linearizedBaseContracts": [ + 362, + 3177, + 6000, + 3260, + 2832, + 817 + ], + "name": "AccessControlUpgradeable", + "nameLocation": "2108:24:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AccessControlUpgradeable.RoleData", + "id": 25, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "hasRole", + "nameLocation": "2270:7:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2237:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 21, + "keyName": "account", + "keyNameLocation": "2253:7:0", + "keyType": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2237:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 20, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2264:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "2295:9:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2287:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 23, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "2218:8:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2211:100:0", + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 28, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "2341:18:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2317:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 26, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "canonicalName": "AccessControlUpgradeable.AccessControlStorage", + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "2374:71:0", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControl" + }, + "id": 35, + "members": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "2522:6:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "2488:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "typeName": { + "id": 33, + "keyName": "role", + "keyNameLocation": "2504:4:0", + "keyType": { + "id": 30, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2496:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2488:33:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 32, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 31, + "name": "RoleData", + "nameLocations": [ + "2512:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 25, + "src": "2512:8:0" + }, + "referencedDeclaration": 25, + "src": "2512:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage_ptr", + "typeString": "struct AccessControlUpgradeable.RoleData" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlStorage", + "nameLocation": "2457:20:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2450:85:0", + "visibility": "public" + }, + { + "constant": true, + "id": 38, + "mutability": "constant", + "name": "AccessControlStorageLocation", + "nameLocation": "2683:28:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2658:122:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2714:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1", + "typeString": "int_const 1295...(68 digits omitted)...1824" + }, + "value": "0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800" + }, + "visibility": "private" + }, + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "2877:87:0", + "statements": [ + { + "AST": { + "nativeSrc": "2896:62:0", + "nodeType": "YulBlock", + "src": "2896:62:0", + "statements": [ + { + "nativeSrc": "2910:38:0", + "nodeType": "YulAssignment", + "src": "2910:38:0", + "value": { + "name": "AccessControlStorageLocation", + "nativeSrc": "2920:28:0", + "nodeType": "YulIdentifier", + "src": "2920:28:0" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2910:6:0", + "nodeType": "YulIdentifier", + "src": "2910:6:0" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 42, + "isOffset": false, + "isSlot": true, + "src": "2910:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 38, + "isOffset": false, + "isSlot": false, + "src": "2920:28:0", + "valueSize": 1 + } + ], + "id": 44, + "nodeType": "InlineAssembly", + "src": "2887:71:0" + } + ] + }, + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlStorage", + "nameLocation": "2796:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "2820:2:0" + }, + "returnParameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "$", + "nameLocation": "2874:1:0", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "2845:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 41, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40, + "name": "AccessControlStorage", + "nameLocations": [ + "2845:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "2845:20:0" + }, + "referencedDeclaration": 35, + "src": "2845:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2844:32:0" + }, + "scope": 362, + "src": "2787:177:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 56, + "nodeType": "Block", + "src": "3181:44:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 52, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 51, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 129, + "src": "3191:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) view" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 54, + "nodeType": "ExpressionStatement", + "src": "3191:16:0" + }, + { + "id": 55, + "nodeType": "PlaceholderStatement", + "src": "3217:1:0" + } + ] + }, + "documentation": { + "id": 47, + "nodeType": "StructuredDocumentation", + "src": "2970:174:0", + "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role." + }, + "id": 57, + "name": "onlyRole", + "nameLocation": "3158:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "role", + "nameLocation": "3175:4:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "3167:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3166:14:0" + }, + "src": "3149:76:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 62, + "nodeType": "Block", + "src": "3289:7:0", + "statements": [] + }, + "id": 63, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 60, + "kind": "modifierInvocation", + "modifierName": { + "id": 59, + "name": "onlyInitializing", + "nameLocations": [ + "3272:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3272:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3272:16:0" + } + ], + "name": "__AccessControl_init", + "nameLocation": "3240:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [], + "src": "3260:2:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "3289:0:0" + }, + "scope": 362, + "src": "3231:65:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "3370:7:0", + "statements": [] + }, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 66, + "kind": "modifierInvocation", + "modifierName": { + "id": 65, + "name": "onlyInitializing", + "nameLocations": [ + "3353:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3353:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3353:16:0" + } + ], + "name": "__AccessControl_init_unchained", + "nameLocation": "3311:30:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "3341:2:0" + }, + "returnParameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "3370:0:0" + }, + "scope": 362, + "src": "3302:75:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3176 + ], + "body": { + "id": 90, + "nodeType": "Block", + "src": "3534:111:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 78, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3551:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 80, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3260, + "src": "3571:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$3260_$", + "typeString": "type(contract IAccessControl)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$3260_$", + "typeString": "type(contract IAccessControl)" + } + ], + "id": 79, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3566:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$3260", + "typeString": "type(contract IAccessControl)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3587:11:0", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "3566:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3551:47:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 86, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3626:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 84, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3602:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlUpgradeable_$362_$", + "typeString": "type(contract super AccessControlUpgradeable)" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3608:17:0", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 3176, + "src": "3602:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3602:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3551:87:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 89, + "nodeType": "Return", + "src": "3544:94:0" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "3382:56:0", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "3452:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 74, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3510:8:0" + }, + "parameters": { + "id": 73, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "3477:11:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3470:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 71, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3470:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3469:20:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3528:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3528:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3527:6:0" + }, + "scope": 362, + "src": "3443:202:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3227 + ], + "body": { + "id": 115, + "nodeType": "Block", + "src": "3815:124:0", + "statements": [ + { + "assignments": [ + 103 + ], + "declarations": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "$", + "nameLocation": "3854:1:0", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "3825:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 102, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 101, + "name": "AccessControlStorage", + "nameLocations": [ + "3825:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "3825:20:0" + }, + "referencedDeclaration": 35, + "src": "3825:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 106, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 104, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "3858:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3858:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3825:59:0" + }, + { + "expression": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3901:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3903:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "3901:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 110, + "indexExpression": { + "id": 109, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3910:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3916:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "3901:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 113, + "indexExpression": { + "id": 112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "3924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 100, + "id": 114, + "nodeType": "Return", + "src": "3894:38:0" + } + ] + }, + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "3651:76:0", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3741:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "role", + "nameLocation": "3757:4:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3749:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 93, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3749:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "account", + "nameLocation": "3771:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3763:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3763:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3748:31:0" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3809:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3809:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3808:6:0" + }, + "scope": 362, + "src": "3732:207:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "4204:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 123, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4225:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 124, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "4231:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4231:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 122, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 150, + "src": "4214:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) view" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "ExpressionStatement", + "src": "4214:30:0" + } + ] + }, + "documentation": { + "id": 117, + "nodeType": "StructuredDocumentation", + "src": "3945:198:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier." + }, + "id": 129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4157:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "role", + "nameLocation": "4176:4:0", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4168:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4168:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4167:14:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [], + "src": "4204:0:0" + }, + "scope": 362, + "src": "4148:103:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "4454:124:0", + "statements": [ + { + "condition": { + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4468:23:0", + "subExpression": { + "arguments": [ + { + "id": 138, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4477:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 139, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "4469:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 148, + "nodeType": "IfStatement", + "src": "4464:108:0", + "trueBody": { + "id": 147, + "nodeType": "Block", + "src": "4493:79:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 143, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 144, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4556:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 142, + "name": "AccessControlUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3187, + "src": "4514:32:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4514:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "RevertStatement", + "src": "4507:54:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "4257:119:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`." + }, + "id": 150, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4390:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "role", + "nameLocation": "4409:4:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4401:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4401:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "account", + "nameLocation": "4423:7:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4415:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4400:31:0" + }, + "returnParameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:0:0" + }, + "scope": 362, + "src": "4381:197:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3235 + ], + "body": { + "id": 170, + "nodeType": "Block", + "src": "4833:117:0", + "statements": [ + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "$", + "nameLocation": "4872:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4843:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 159, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 158, + "name": "AccessControlStorage", + "nameLocations": [ + "4843:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "4843:20:0" + }, + "referencedDeclaration": 35, + "src": "4843:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 163, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 161, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4876:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4876:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4843:59:0" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 164, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "4919:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4921:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "4919:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 167, + "indexExpression": { + "id": 166, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "4928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4919:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4934:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "4919:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 157, + "id": 169, + "nodeType": "Return", + "src": "4912:31:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "4584:170:0", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4768:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "role", + "nameLocation": "4789:4:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4781:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4781:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4780:14:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4824:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4824:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4823:9:0" + }, + "scope": 362, + "src": "4759:191:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3243 + ], + "body": { + "id": 189, + "nodeType": "Block", + "src": "5340:42:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 185, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 186, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "5367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 184, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5350:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5350:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 188, + "nodeType": "ExpressionStatement", + "src": "5350:25:0" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "4956:285:0", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event." + }, + "functionSelector": "2f2ff15d", + "id": 190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 180, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5333:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 179, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 182, + "kind": "modifierInvocation", + "modifierName": { + "id": 178, + "name": "onlyRole", + "nameLocations": [ + "5311:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5311:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5311:28:0" + } + ], + "name": "grantRole", + "nameLocation": "5255:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "role", + "nameLocation": "5273:4:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5265:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "account", + "nameLocation": "5287:7:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5279:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5279:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5264:31:0" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5340:0:0" + }, + "scope": 362, + "src": "5246:136:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3251 + ], + "body": { + "id": 208, + "nodeType": "Block", + "src": "5757:43:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 204, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "5785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "5767:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5767:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "5767:26:0" + } + ] + }, + "documentation": { + "id": 191, + "nodeType": "StructuredDocumentation", + "src": "5388:269:0", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "d547741f", + "id": 209, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 198, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5737:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5737:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 201, + "kind": "modifierInvocation", + "modifierName": { + "id": 197, + "name": "onlyRole", + "nameLocations": [ + "5728:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5728:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5728:28:0" + } + ], + "name": "revokeRole", + "nameLocation": "5671:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "role", + "nameLocation": "5690:4:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5682:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5682:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "account", + "nameLocation": "5704:7:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5696:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5696:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5681:31:0" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "5757:0:0" + }, + "scope": 362, + "src": "5662:138:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3259 + ], + "body": { + "id": 231, + "nodeType": "Block", + "src": "6427:166:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 217, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6441:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 218, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "6463:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6463:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6441:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 225, + "nodeType": "IfStatement", + "src": "6437:102:0", + "trueBody": { + "id": 224, + "nodeType": "Block", + "src": "6477:62:0", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 221, + "name": "AccessControlBadConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3190, + "src": "6498:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 223, + "nodeType": "RevertStatement", + "src": "6491:37:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 227, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "6561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 228, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6567:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "6549:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6549:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "6549:37:0" + } + ] + }, + "documentation": { + "id": 210, + "nodeType": "StructuredDocumentation", + "src": "5806:537:0", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "36568abe", + "id": 232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "6357:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "role", + "nameLocation": "6378:4:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6370:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 214, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "6392:18:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6384:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 213, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6384:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6369:42:0" + }, + "returnParameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6427:0:0" + }, + "scope": 362, + "src": "6348:245:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 267, + "nodeType": "Block", + "src": "6791:245:0", + "statements": [ + { + "assignments": [ + 242 + ], + "declarations": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "$", + "nameLocation": "6830:1:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6801:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 241, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 240, + "name": "AccessControlStorage", + "nameLocations": [ + "6801:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "6801:20:0" + }, + "referencedDeclaration": 35, + "src": "6801:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 245, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 243, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6834:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6834:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6801:59:0" + }, + { + "assignments": [ + 247 + ], + "declarations": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "6878:17:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6870:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6870:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "arguments": [ + { + "id": 249, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6911:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 248, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "6898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6898:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6870:46:0" + }, + { + "expression": { + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 252, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "6926:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6928:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "6926:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 256, + "indexExpression": { + "id": 254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6926:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6941:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "6926:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 258, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "6953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6926:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 260, + "nodeType": "ExpressionStatement", + "src": "6926:36:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 262, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 263, + "name": "previousAdminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "7000:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 264, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "7019:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 261, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "6977:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6977:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 266, + "nodeType": "EmitStatement", + "src": "6972:57:0" + } + ] + }, + "documentation": { + "id": 233, + "nodeType": "StructuredDocumentation", + "src": "6599:114:0", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6727:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "role", + "nameLocation": "6749:4:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6741:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6741:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6763:9:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6755:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6740:33:0" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [], + "src": "6791:0:0" + }, + "scope": 362, + "src": "6718:318:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 314, + "nodeType": "Block", + "src": "7353:304:0", + "statements": [ + { + "assignments": [ + 280 + ], + "declarations": [ + { + "constant": false, + "id": 280, + "mutability": "mutable", + "name": "$", + "nameLocation": "7392:1:0", + "nodeType": "VariableDeclaration", + "scope": 314, + "src": "7363:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 279, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 278, + "name": "AccessControlStorage", + "nameLocations": [ + "7363:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7363:20:0" + }, + "referencedDeclaration": 35, + "src": "7363:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 283, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 281, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "7396:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7396:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7363:59:0" + }, + { + "condition": { + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7436:23:0", + "subExpression": { + "arguments": [ + { + "id": 285, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7445:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 286, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7451:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 284, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "7437:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7437:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 312, + "nodeType": "Block", + "src": "7614:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7635:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 277, + "id": 311, + "nodeType": "Return", + "src": "7628:12:0" + } + ] + }, + "id": 313, + "nodeType": "IfStatement", + "src": "7432:219:0", + "trueBody": { + "id": 309, + "nodeType": "Block", + "src": "7461:147:0", + "statements": [ + { + "expression": { + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 289, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 280, + "src": "7475:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7477:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "7475:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 293, + "indexExpression": { + "id": 291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7484:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7475:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7490:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 296, + "indexExpression": { + "id": 295, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7475:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "7475:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "7475:38:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 301, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7544:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 303, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "7559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7559:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 300, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3208, + "src": "7532:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7532:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "EmitStatement", + "src": "7527:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 277, + "id": 308, + "nodeType": "Return", + "src": "7586:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 269, + "nodeType": "StructuredDocumentation", + "src": "7042:223:0", + "text": " @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event." + }, + "id": 315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7279:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "role", + "nameLocation": "7298:4:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7290:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 270, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7290:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "account", + "nameLocation": "7312:7:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7304:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7304:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7289:31:0" + }, + "returnParameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 275, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7346:6:0" + }, + "scope": 362, + "src": "7270:387:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "7976:304:0", + "statements": [ + { + "assignments": [ + 327 + ], + "declarations": [ + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "$", + "nameLocation": "8015:1:0", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "7986:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 326, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 325, + "name": "AccessControlStorage", + "nameLocations": [ + "7986:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7986:20:0" + }, + "referencedDeclaration": 35, + "src": "7986:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 330, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 328, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "8019:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7986:59:0" + }, + { + "condition": { + "arguments": [ + { + "id": 332, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 333, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8073:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "8059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8059:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 358, + "nodeType": "Block", + "src": "8237:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8258:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 324, + "id": 357, + "nodeType": "Return", + "src": "8251:12:0" + } + ] + }, + "id": 359, + "nodeType": "IfStatement", + "src": "8055:219:0", + "trueBody": { + "id": 355, + "nodeType": "Block", + "src": "8083:148:0", + "statements": [ + { + "expression": { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 335, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "8097:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8099:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "8097:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 339, + "indexExpression": { + "id": 337, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8106:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8097:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8112:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "8097:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 342, + "indexExpression": { + "id": 341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8097:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8097:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "8097:39:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 347, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 348, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 349, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "8182:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8182:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 346, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "8155:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8155:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 352, + "nodeType": "EmitStatement", + "src": "8150:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8216:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 324, + "id": 354, + "nodeType": "Return", + "src": "8209:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 316, + "nodeType": "StructuredDocumentation", + "src": "7663:224:0", + "text": " @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event." + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7901:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "role", + "nameLocation": "7921:4:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "account", + "nameLocation": "7935:7:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7927:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7927:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7912:31:0" + }, + "returnParameters": { + "id": 324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7970:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7970:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7969:6:0" + }, + "scope": 362, + "src": "7892:388:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 363, + "src": "2090:6192:0", + "usedErrors": [ + 580, + 583, + 3187, + 3190 + ], + "usedEvents": [ + 588, + 3199, + 3208, + 3217 + ] + } + ], + "src": "108:8175:0" + }, + "id": 0 + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 563 + ], + "AccessControlUpgradeable": [ + 362 + ], + "EnumerableSet": [ + 7772 + ], + "IAccessControlEnumerable": [ + 3286 + ], + "Initializable": [ + 817 + ] + }, + "id": 564, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 364, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "129:24:1" + }, + { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "id": 366, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 3287, + "src": "155:112:1", + "symbolAliases": [ + { + "foreign": { + "id": 365, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3286, + "src": "163:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "file": "../AccessControlUpgradeable.sol", + "id": 368, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 363, + "src": "268:73:1", + "symbolAliases": [ + { + "foreign": { + "id": 367, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "276:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 370, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 7773, + "src": "342:86:1", + "symbolAliases": [ + { + "foreign": { + "id": 369, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7772, + "src": "350:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 372, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 818, + "src": "429:66:1", + "symbolAliases": [ + { + "foreign": { + "id": 371, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "437:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 374, + "name": "Initializable", + "nameLocations": [ + "648:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "648:13:1" + }, + "id": 375, + "nodeType": "InheritanceSpecifier", + "src": "648:13:1" + }, + { + "baseName": { + "id": 376, + "name": "IAccessControlEnumerable", + "nameLocations": [ + "663:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3286, + "src": "663:24:1" + }, + "id": 377, + "nodeType": "InheritanceSpecifier", + "src": "663:24:1" + }, + { + "baseName": { + "id": 378, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "689:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "689:24:1" + }, + "id": 379, + "nodeType": "InheritanceSpecifier", + "src": "689:24:1" + } + ], + "canonicalName": "AccessControlEnumerableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 373, + "nodeType": "StructuredDocumentation", + "src": "497:94:1", + "text": " @dev Extension of {AccessControl} that allows enumerating the members of each role." + }, + "fullyImplemented": true, + "id": 563, + "linearizedBaseContracts": [ + 563, + 362, + 3177, + 6000, + 3286, + 3260, + 2832, + 817 + ], + "name": "AccessControlEnumerableUpgradeable", + "nameLocation": "610:34:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 383, + "libraryName": { + "id": 380, + "name": "EnumerableSet", + "nameLocations": [ + "726:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7772, + "src": "726:13:1" + }, + "nodeType": "UsingForDirective", + "src": "720:49:1", + "typeName": { + "id": 382, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 381, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "744:13:1", + "758:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "744:24:1" + }, + "referencedDeclaration": 7485, + "src": "744:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage", + "documentation": { + "id": 384, + "nodeType": "StructuredDocumentation", + "src": "775:81:1", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable" + }, + "id": 390, + "members": [ + { + "constant": false, + "id": 389, + "mutability": "mutable", + "name": "_roleMembers", + "nameLocation": "959:12:1", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "909:62:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "typeName": { + "id": 388, + "keyName": "role", + "keyNameLocation": "925:4:1", + "keyType": { + "id": 385, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "917:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "909:49:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 386, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "933:13:1", + "947:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "933:24:1" + }, + "referencedDeclaration": 7485, + "src": "933:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlEnumerableStorage", + "nameLocation": "868:30:1", + "nodeType": "StructDefinition", + "scope": 563, + "src": "861:117:1", + "visibility": "public" + }, + { + "constant": true, + "id": 393, + "mutability": "constant", + "name": "AccessControlEnumerableStorageLocation", + "nameLocation": "1136:38:1", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "1111:132:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 391, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1111:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863316636666532343632316365383165633538323763616630323533636164623734373039623036313633306536623535653832333731373035393332303030", + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1177:66:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_87732778178968556439956192144688703237987636878447527990685272173340959907840_by_1", + "typeString": "int_const 8773...(69 digits omitted)...7840" + }, + "value": "0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000" + }, + "visibility": "private" + }, + { + "body": { + "id": 400, + "nodeType": "Block", + "src": "1360:97:1", + "statements": [ + { + "AST": { + "nativeSrc": "1379:72:1", + "nodeType": "YulBlock", + "src": "1379:72:1", + "statements": [ + { + "nativeSrc": "1393:48:1", + "nodeType": "YulAssignment", + "src": "1393:48:1", + "value": { + "name": "AccessControlEnumerableStorageLocation", + "nativeSrc": "1403:38:1", + "nodeType": "YulIdentifier", + "src": "1403:38:1" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1393:6:1", + "nodeType": "YulIdentifier", + "src": "1393:6:1" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 397, + "isOffset": false, + "isSlot": true, + "src": "1393:6:1", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 393, + "isOffset": false, + "isSlot": false, + "src": "1403:38:1", + "valueSize": 1 + } + ], + "id": 399, + "nodeType": "InlineAssembly", + "src": "1370:81:1" + } + ] + }, + "id": 401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlEnumerableStorage", + "nameLocation": "1259:34:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 394, + "nodeType": "ParameterList", + "parameters": [], + "src": "1293:2:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "$", + "nameLocation": "1357:1:1", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "1318:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 396, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 395, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "1318:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "1318:30:1" + }, + "referencedDeclaration": 390, + "src": "1318:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1317:42:1" + }, + "scope": 563, + "src": "1250:207:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 406, + "nodeType": "Block", + "src": "1531:7:1", + "statements": [] + }, + "id": 407, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 404, + "kind": "modifierInvocation", + "modifierName": { + "id": 403, + "name": "onlyInitializing", + "nameLocations": [ + "1514:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1514:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1514:16:1" + } + ], + "name": "__AccessControlEnumerable_init", + "nameLocation": "1472:30:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [], + "src": "1502:2:1" + }, + "returnParameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [], + "src": "1531:0:1" + }, + "scope": 563, + "src": "1463:75:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 412, + "nodeType": "Block", + "src": "1622:7:1", + "statements": [] + }, + "id": 413, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 410, + "kind": "modifierInvocation", + "modifierName": { + "id": 409, + "name": "onlyInitializing", + "nameLocations": [ + "1605:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1605:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1605:16:1" + } + ], + "name": "__AccessControlEnumerable_init_unchained", + "nameLocation": "1553:40:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [], + "src": "1593:2:1" + }, + "returnParameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [], + "src": "1622:0:1" + }, + "scope": 563, + "src": "1544:85:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 91 + ], + "body": { + "id": 434, + "nodeType": "Block", + "src": "1786:121:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 422, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1803:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 424, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3286, + "src": "1823:24:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$3286_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$3286_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + ], + "id": 423, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1818:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControlEnumerable_$3286", + "typeString": "type(contract IAccessControlEnumerable)" + } + }, + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1849:11:1", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1818:42:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1803:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 430, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1888:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 428, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "1864:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1870:17:1", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "1864:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1864:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1803:97:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 421, + "id": 433, + "nodeType": "Return", + "src": "1796:104:1" + } + ] + }, + "documentation": { + "id": 414, + "nodeType": "StructuredDocumentation", + "src": "1634:56:1", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1704:17:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 418, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1762:8:1" + }, + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1729:11:1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1722:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 415, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1722:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1721:20:1" + }, + "returnParameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 420, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1780:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 419, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1780:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1779:6:1" + }, + "scope": 563, + "src": "1695:212:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3277 + ], + "body": { + "id": 459, + "nodeType": "Block", + "src": "2582:143:1", + "statements": [ + { + "assignments": [ + 447 + ], + "declarations": [ + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "$", + "nameLocation": "2631:1:1", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "2592:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 446, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 445, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2592:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2592:30:1" + }, + "referencedDeclaration": 390, + "src": "2592:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 450, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 448, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "2635:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2635:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2592:79:1" + }, + { + "expression": { + "arguments": [ + { + "id": 456, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "2712:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 451, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "2688:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2690:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "2688:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 454, + "indexExpression": { + "id": 453, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "2703:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2688:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 455, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2709:2:1", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 7608, + "src": "2688:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$7485_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2688:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 444, + "id": 458, + "nodeType": "Return", + "src": "2681:37:1" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "1913:574:1", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "2501:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "role", + "nameLocation": "2523:4:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2515:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 440, + "mutability": "mutable", + "name": "index", + "nameLocation": "2537:5:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2529:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2514:29:1" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2573:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2572:9:1" + }, + "scope": 563, + "src": "2492:233:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3285 + ], + "body": { + "id": 481, + "nodeType": "Block", + "src": "2973:142:1", + "statements": [ + { + "assignments": [ + 470 + ], + "declarations": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "$", + "nameLocation": "3022:1:1", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "2983:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 469, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 468, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2983:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2983:30:1" + }, + "referencedDeclaration": 390, + "src": "2983:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 471, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3026:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3026:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2983:79:1" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "expression": { + "id": 474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "3079:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3081:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3079:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 477, + "indexExpression": { + "id": 476, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "3094:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3079:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3100:6:1", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 7581, + "src": "3079:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$7485_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3079:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 467, + "id": 480, + "nodeType": "Return", + "src": "3072:36:1" + } + ] + }, + "documentation": { + "id": 461, + "nodeType": "StructuredDocumentation", + "src": "2731:157:1", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "2902:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "role", + "nameLocation": "2929:4:1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2921:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 462, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2920:14:1" + }, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2964:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2964:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2963:9:1" + }, + "scope": 563, + "src": "2893:222:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 315 + ], + "body": { + "id": 521, + "nodeType": "Block", + "src": "3309:256:1", + "statements": [ + { + "assignments": [ + 495 + ], + "declarations": [ + { + "constant": false, + "id": 495, + "mutability": "mutable", + "name": "$", + "nameLocation": "3358:1:1", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "3319:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 494, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 493, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "3319:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "3319:30:1" + }, + "referencedDeclaration": 390, + "src": "3319:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 498, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 496, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3362:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3362:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3319:79:1" + }, + { + "assignments": [ + 500 + ], + "declarations": [ + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "granted", + "nameLocation": "3413:7:1", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "3408:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 499, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3408:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 506, + "initialValue": { + "arguments": [ + { + "id": 503, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 485, + "src": "3440:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 504, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "3446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 501, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3423:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3429:10:1", + "memberName": "_grantRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "3423:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3423:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3408:46:1" + }, + { + "condition": { + "id": 507, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "3468:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 518, + "nodeType": "IfStatement", + "src": "3464:71:1", + "trueBody": { + "id": 517, + "nodeType": "Block", + "src": "3477:58:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 514, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "3516:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 508, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "3491:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 511, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3493:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3491:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 512, + "indexExpression": { + "id": 510, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 485, + "src": "3506:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3491:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 513, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3512:3:1", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7512, + "src": "3491:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3491:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 516, + "nodeType": "ExpressionStatement", + "src": "3491:33:1" + } + ] + } + }, + { + "expression": { + "id": 519, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "3551:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 492, + "id": 520, + "nodeType": "Return", + "src": "3544:14:1" + } + ] + }, + "documentation": { + "id": 483, + "nodeType": "StructuredDocumentation", + "src": "3121:91:1", + "text": " @dev Overload {AccessControl-_grantRole} to track enumerable memberships" + }, + "id": 522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "3226:10:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 489, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3285:8:1" + }, + "parameters": { + "id": 488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 485, + "mutability": "mutable", + "name": "role", + "nameLocation": "3245:4:1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3237:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 484, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3237:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 487, + "mutability": "mutable", + "name": "account", + "nameLocation": "3259:7:1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3251:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3251:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3236:31:1" + }, + "returnParameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 491, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3303:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3303:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3302:6:1" + }, + "scope": 563, + "src": "3217:348:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 361 + ], + "body": { + "id": 561, + "nodeType": "Block", + "src": "3761:260:1", + "statements": [ + { + "assignments": [ + 535 + ], + "declarations": [ + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "$", + "nameLocation": "3810:1:1", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "3771:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 534, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 533, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "3771:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "3771:30:1" + }, + "referencedDeclaration": 390, + "src": "3771:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 538, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 536, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3814:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3814:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3771:79:1" + }, + { + "assignments": [ + 540 + ], + "declarations": [ + { + "constant": false, + "id": 540, + "mutability": "mutable", + "name": "revoked", + "nameLocation": "3865:7:1", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "3860:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 539, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3860:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 546, + "initialValue": { + "arguments": [ + { + "id": 543, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "3893:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 544, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "3899:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 541, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3875:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3881:11:1", + "memberName": "_revokeRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 361, + "src": "3875:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3875:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3860:47:1" + }, + { + "condition": { + "id": 547, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 558, + "nodeType": "IfStatement", + "src": "3917:74:1", + "trueBody": { + "id": 557, + "nodeType": "Block", + "src": "3930:61:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 554, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "3972:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 548, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "3944:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3946:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3944:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7485_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 552, + "indexExpression": { + "id": 550, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "3959:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3944:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 553, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3965:6:1", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7539, + "src": "3944:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3944:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 556, + "nodeType": "ExpressionStatement", + "src": "3944:36:1" + } + ] + } + }, + { + "expression": { + "id": 559, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "4007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 532, + "id": 560, + "nodeType": "Return", + "src": "4000:14:1" + } + ] + }, + "documentation": { + "id": 523, + "nodeType": "StructuredDocumentation", + "src": "3571:92:1", + "text": " @dev Overload {AccessControl-_revokeRole} to track enumerable memberships" + }, + "id": 562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "3677:11:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 529, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3737:8:1" + }, + "parameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "mutability": "mutable", + "name": "role", + "nameLocation": "3697:4:1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3689:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3689:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "mutability": "mutable", + "name": "account", + "nameLocation": "3711:7:1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3703:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3703:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3688:31:1" + }, + "returnParameters": { + "id": 532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3755:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 530, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3755:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3754:6:1" + }, + "scope": 563, + "src": "3668:353:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 564, + "src": "592:3431:1", + "usedErrors": [ + 580, + 583, + 3187, + 3190 + ], + "usedEvents": [ + 588, + 3199, + 3208, + 3217 + ] + } + ], + "src": "129:3895:1" + }, + "id": 1 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "exportedSymbols": { + "Initializable": [ + 817 + ] + }, + "id": 818, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 565, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:2" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Initializable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 566, + "nodeType": "StructuredDocumentation", + "src": "139:2209:2", + "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" + }, + "fullyImplemented": true, + "id": 817, + "linearizedBaseContracts": [ + 817 + ], + "name": "Initializable", + "nameLocation": "2367:13:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Initializable.InitializableStorage", + "documentation": { + "id": 567, + "nodeType": "StructuredDocumentation", + "src": "2387:293:2", + "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" + }, + "id": 574, + "members": [ + { + "constant": false, + "id": 570, + "mutability": "mutable", + "name": "_initialized", + "nameLocation": "2820:12:2", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "2813:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 569, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2813:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "_initializing", + "nameLocation": "2955:13:2", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "2950:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 572, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2950:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "InitializableStorage", + "nameLocation": "2692:20:2", + "nodeType": "StructDefinition", + "scope": 817, + "src": "2685:290:2", + "visibility": "public" + }, + { + "constant": true, + "id": 577, + "mutability": "constant", + "name": "INITIALIZABLE_STORAGE", + "nameLocation": "3123:21:2", + "nodeType": "VariableDeclaration", + "scope": 817, + "src": "3098:115:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3098:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:66:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", + "typeString": "int_const 1089...(70 digits omitted)...9600" + }, + "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 578, + "nodeType": "StructuredDocumentation", + "src": "3220:60:2", + "text": " @dev The contract is already initialized." + }, + "errorSelector": "f92ee8a9", + "id": 580, + "name": "InvalidInitialization", + "nameLocation": "3291:21:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 579, + "nodeType": "ParameterList", + "parameters": [], + "src": "3312:2:2" + }, + "src": "3285:30:2" + }, + { + "documentation": { + "id": 581, + "nodeType": "StructuredDocumentation", + "src": "3321:57:2", + "text": " @dev The contract is not initializing." + }, + "errorSelector": "d7e6bcf8", + "id": 583, + "name": "NotInitializing", + "nameLocation": "3389:15:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 582, + "nodeType": "ParameterList", + "parameters": [], + "src": "3404:2:2" + }, + "src": "3383:24:2" + }, + { + "anonymous": false, + "documentation": { + "id": 584, + "nodeType": "StructuredDocumentation", + "src": "3413:90:2", + "text": " @dev Triggered when the contract has been initialized or reinitialized." + }, + "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", + "id": 588, + "name": "Initialized", + "nameLocation": "3514:11:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 586, + "indexed": false, + "mutability": "mutable", + "name": "version", + "nameLocation": "3533:7:2", + "nodeType": "VariableDeclaration", + "scope": 588, + "src": "3526:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 585, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3526:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3525:16:2" + }, + "src": "3508:34:2" + }, + { + "body": { + "id": 670, + "nodeType": "Block", + "src": "4092:1081:2", + "statements": [ + { + "assignments": [ + 593 + ], + "declarations": [ + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "$", + "nameLocation": "4187:1:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4158:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 592, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 591, + "name": "InitializableStorage", + "nameLocations": [ + "4158:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4158:20:2" + }, + "referencedDeclaration": 574, + "src": "4158:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 596, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 594, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "4191:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4191:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4158:59:2" + }, + { + "assignments": [ + 598 + ], + "declarations": [ + { + "constant": false, + "id": 598, + "mutability": "mutable", + "name": "isTopLevelCall", + "nameLocation": "4284:14:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4279:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 597, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4279:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 602, + "initialValue": { + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4301:16:2", + "subExpression": { + "expression": { + "id": 599, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4302:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 600, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4304:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "4302:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4279:38:2" + }, + { + "assignments": [ + 604 + ], + "declarations": [ + { + "constant": false, + "id": 604, + "mutability": "mutable", + "name": "initialized", + "nameLocation": "4334:11:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4327:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 603, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4327:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 607, + "initialValue": { + "expression": { + "id": 605, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4348:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 606, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4350:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "4348:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4327:35:2" + }, + { + "assignments": [ + 609 + ], + "declarations": [ + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "initialSetup", + "nameLocation": "4711:12:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4706:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 608, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 615, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 610, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "4726:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4741:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4726:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 613, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "4746:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4726:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4706:54:2" + }, + { + "assignments": [ + 617 + ], + "declarations": [ + { + "constant": false, + "id": 617, + "mutability": "mutable", + "name": "construction", + "nameLocation": "4775:12:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4770:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 616, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 630, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 618, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "4790:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4805:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4790:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 623, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4818:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$817", + "typeString": "contract Initializable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Initializable_$817", + "typeString": "contract Initializable" + } + ], + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4810:7:2", + "typeDescriptions": {} + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4810:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4824:4:2", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4810:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4829:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4810:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4810:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4790:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4770:70:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4855:13:2", + "subExpression": { + "id": 631, + "name": "initialSetup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "4856:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4872:13:2", + "subExpression": { + "id": 633, + "name": "construction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "4873:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4855:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 640, + "nodeType": "IfStatement", + "src": "4851:91:2", + "trueBody": { + "id": 639, + "nodeType": "Block", + "src": "4887:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 636, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "4908:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4908:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 638, + "nodeType": "RevertStatement", + "src": "4901:30:2" + } + ] + } + }, + { + "expression": { + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 641, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4951:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4953:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "4951:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4968:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4951:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 646, + "nodeType": "ExpressionStatement", + "src": "4951:18:2" + }, + { + "condition": { + "id": 647, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "4983:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 655, + "nodeType": "IfStatement", + "src": "4979:67:2", + "trueBody": { + "id": 654, + "nodeType": "Block", + "src": "4999:47:2", + "statements": [ + { + "expression": { + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 648, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "5013:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 650, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5015:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "5013:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5031:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5013:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 653, + "nodeType": "ExpressionStatement", + "src": "5013:22:2" + } + ] + } + }, + { + "id": 656, + "nodeType": "PlaceholderStatement", + "src": "5055:1:2" + }, + { + "condition": { + "id": 657, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "5070:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 669, + "nodeType": "IfStatement", + "src": "5066:101:2", + "trueBody": { + "id": 668, + "nodeType": "Block", + "src": "5086:81:2", + "statements": [ + { + "expression": { + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 658, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "5100:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5102:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "5100:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5118:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5100:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "5100:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "31", + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5154:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 664, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "5142:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5142:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 667, + "nodeType": "EmitStatement", + "src": "5137:19:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 589, + "nodeType": "StructuredDocumentation", + "src": "3548:516:2", + "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." + }, + "id": 671, + "name": "initializer", + "nameLocation": "4078:11:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 590, + "nodeType": "ParameterList", + "parameters": [], + "src": "4089:2:2" + }, + "src": "4069:1104:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 717, + "nodeType": "Block", + "src": "6291:392:2", + "statements": [ + { + "assignments": [ + 678 + ], + "declarations": [ + { + "constant": false, + "id": 678, + "mutability": "mutable", + "name": "$", + "nameLocation": "6386:1:2", + "nodeType": "VariableDeclaration", + "scope": 717, + "src": "6357:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 676, + "name": "InitializableStorage", + "nameLocations": [ + "6357:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "6357:20:2" + }, + "referencedDeclaration": 574, + "src": "6357:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 679, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "6390:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6390:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6357:59:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 682, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6431:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6433:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6431:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 684, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6450:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6452:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "6450:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 686, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6468:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6450:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6431:44:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 693, + "nodeType": "IfStatement", + "src": "6427:105:2", + "trueBody": { + "id": 692, + "nodeType": "Block", + "src": "6477:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 689, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "6498:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 691, + "nodeType": "RevertStatement", + "src": "6491:30:2" + } + ] + } + }, + { + "expression": { + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 694, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6541:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 696, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6543:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "6541:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 697, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6558:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6541:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 699, + "nodeType": "ExpressionStatement", + "src": "6541:24:2" + }, + { + "expression": { + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 700, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6575:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 702, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6577:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6575:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6593:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6575:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 705, + "nodeType": "ExpressionStatement", + "src": "6575:22:2" + }, + { + "id": 706, + "nodeType": "PlaceholderStatement", + "src": "6607:1:2" + }, + { + "expression": { + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 707, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6618:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6620:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6618:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6636:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6618:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 712, + "nodeType": "ExpressionStatement", + "src": "6618:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 714, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6668:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 713, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "6656:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6656:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "EmitStatement", + "src": "6651:25:2" + } + ] + }, + "documentation": { + "id": 672, + "nodeType": "StructuredDocumentation", + "src": "5179:1068:2", + "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." + }, + "id": 718, + "name": "reinitializer", + "nameLocation": "6261:13:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 674, + "mutability": "mutable", + "name": "version", + "nameLocation": "6282:7:2", + "nodeType": "VariableDeclaration", + "scope": 718, + "src": "6275:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 673, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6275:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6274:16:2" + }, + "src": "6252:431:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 725, + "nodeType": "Block", + "src": "6921:48:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 721, + "name": "_checkInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "6931:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6931:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 723, + "nodeType": "ExpressionStatement", + "src": "6931:20:2" + }, + { + "id": 724, + "nodeType": "PlaceholderStatement", + "src": "6961:1:2" + } + ] + }, + "documentation": { + "id": 719, + "nodeType": "StructuredDocumentation", + "src": "6689:199:2", + "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." + }, + "id": 726, + "name": "onlyInitializing", + "nameLocation": "6902:16:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [], + "src": "6918:2:2" + }, + "src": "6893:76:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 738, + "nodeType": "Block", + "src": "7136:89:2", + "statements": [ + { + "condition": { + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7150:18:2", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 730, + "name": "_isInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "7151:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 737, + "nodeType": "IfStatement", + "src": "7146:73:2", + "trueBody": { + "id": 736, + "nodeType": "Block", + "src": "7170:49:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 733, + "name": "NotInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 583, + "src": "7191:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "RevertStatement", + "src": "7184:24:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 727, + "nodeType": "StructuredDocumentation", + "src": "6975:104:2", + "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." + }, + "id": 739, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkInitializing", + "nameLocation": "7093:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 728, + "nodeType": "ParameterList", + "parameters": [], + "src": "7111:2:2" + }, + "returnParameters": { + "id": 729, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:2" + }, + "scope": 817, + "src": "7084:141:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 784, + "nodeType": "Block", + "src": "7760:373:2", + "statements": [ + { + "assignments": [ + 745 + ], + "declarations": [ + { + "constant": false, + "id": 745, + "mutability": "mutable", + "name": "$", + "nameLocation": "7855:1:2", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "7826:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 744, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 743, + "name": "InitializableStorage", + "nameLocations": [ + "7826:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "7826:20:2" + }, + "referencedDeclaration": 574, + "src": "7826:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 748, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 746, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "7859:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7859:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7826:59:2" + }, + { + "condition": { + "expression": { + "id": 749, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "7900:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7902:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "7900:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 755, + "nodeType": "IfStatement", + "src": "7896:76:2", + "trueBody": { + "id": 754, + "nodeType": "Block", + "src": "7917:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 751, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "7938:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7938:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 753, + "nodeType": "RevertStatement", + "src": "7931:30:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 756, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "7985:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 757, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7987:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "7985:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8008:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 759, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8008:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 758, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8003:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8003:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8016:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8003:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "7985:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 783, + "nodeType": "IfStatement", + "src": "7981:146:2", + "trueBody": { + "id": 782, + "nodeType": "Block", + "src": "8021:106:2", + "statements": [ + { + "expression": { + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 764, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "8035:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 766, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8037:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "8035:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 768, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8057:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 767, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8052:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8065:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8052:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8035:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "8035:33:2" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8104:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 776, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8104:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 775, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8099:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8112:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8099:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 774, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "8087:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8087:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "EmitStatement", + "src": "8082:34:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 740, + "nodeType": "StructuredDocumentation", + "src": "7231:475:2", + "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." + }, + "id": 785, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_disableInitializers", + "nameLocation": "7720:20:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "7740:2:2" + }, + "returnParameters": { + "id": 742, + "nodeType": "ParameterList", + "parameters": [], + "src": "7760:0:2" + }, + "scope": 817, + "src": "7711:422:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 795, + "nodeType": "Block", + "src": "8308:63:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 791, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "8325:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8325:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8352:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "8325:39:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 790, + "id": 794, + "nodeType": "Return", + "src": "8318:46:2" + } + ] + }, + "documentation": { + "id": 786, + "nodeType": "StructuredDocumentation", + "src": "8139:99:2", + "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." + }, + "id": 796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializedVersion", + "nameLocation": "8252:22:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 787, + "nodeType": "ParameterList", + "parameters": [], + "src": "8274:2:2" + }, + "returnParameters": { + "id": 790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 796, + "src": "8300:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 788, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8300:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8299:8:2" + }, + "scope": 817, + "src": "8243:128:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 806, + "nodeType": "Block", + "src": "8543:64:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 802, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "8560:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8560:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 804, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8587:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "8560:40:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 801, + "id": 805, + "nodeType": "Return", + "src": "8553:47:2" + } + ] + }, + "documentation": { + "id": 797, + "nodeType": "StructuredDocumentation", + "src": "8377:105:2", + "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." + }, + "id": 807, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitializing", + "nameLocation": "8496:15:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [], + "src": "8511:2:2" + }, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 807, + "src": "8537:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8537:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8536:6:2" + }, + "scope": 817, + "src": "8487:120:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 815, + "nodeType": "Block", + "src": "8827:80:2", + "statements": [ + { + "AST": { + "nativeSrc": "8846:55:2", + "nodeType": "YulBlock", + "src": "8846:55:2", + "statements": [ + { + "nativeSrc": "8860:31:2", + "nodeType": "YulAssignment", + "src": "8860:31:2", + "value": { + "name": "INITIALIZABLE_STORAGE", + "nativeSrc": "8870:21:2", + "nodeType": "YulIdentifier", + "src": "8870:21:2" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "8860:6:2", + "nodeType": "YulIdentifier", + "src": "8860:6:2" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 812, + "isOffset": false, + "isSlot": true, + "src": "8860:6:2", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 577, + "isOffset": false, + "isSlot": false, + "src": "8870:21:2", + "valueSize": 1 + } + ], + "id": 814, + "nodeType": "InlineAssembly", + "src": "8837:64:2" + } + ] + }, + "documentation": { + "id": 808, + "nodeType": "StructuredDocumentation", + "src": "8613:67:2", + "text": " @dev Returns a pointer to the storage namespace." + }, + "id": 816, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializableStorage", + "nameLocation": "8746:24:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [], + "src": "8770:2:2" + }, + "returnParameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 812, + "mutability": "mutable", + "name": "$", + "nameLocation": "8824:1:2", + "nodeType": "VariableDeclaration", + "scope": 816, + "src": "8795:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 811, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 810, + "name": "InitializableStorage", + "nameLocations": [ + "8795:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "8795:20:2" + }, + "referencedDeclaration": 574, + "src": "8795:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "8794:32:2" + }, + "scope": 817, + "src": "8737:170:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 818, + "src": "2349:6560:2", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "113:8797:2" + }, + "id": 2 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "exportedSymbols": { + "ERC1967Utils": [ + 3806 + ], + "IERC1822Proxiable": [ + 3328 + ], + "Initializable": [ + 817 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 1000, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 819, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:3" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "file": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "id": 821, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 3329, + "src": "141:88:3", + "symbolAliases": [ + { + "foreign": { + "id": 820, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3328, + "src": "149:17:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 823, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 3807, + "src": "230:84:3", + "symbolAliases": [ + { + "foreign": { + "id": 822, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "238:12:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "./Initializable.sol", + "id": 825, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 818, + "src": "315:50:3", + "symbolAliases": [ + { + "foreign": { + "id": 824, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "323:13:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 827, + "name": "Initializable", + "nameLocations": [ + "1023:13:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "1023:13:3" + }, + "id": 828, + "nodeType": "InheritanceSpecifier", + "src": "1023:13:3" + }, + { + "baseName": { + "id": 829, + "name": "IERC1822Proxiable", + "nameLocations": [ + "1038:17:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3328, + "src": "1038:17:3" + }, + "id": 830, + "nodeType": "InheritanceSpecifier", + "src": "1038:17:3" + } + ], + "canonicalName": "UUPSUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 826, + "nodeType": "StructuredDocumentation", + "src": "367:618:3", + "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism." + }, + "fullyImplemented": false, + "id": 999, + "linearizedBaseContracts": [ + 999, + 3328, + 817 + ], + "name": "UUPSUpgradeable", + "nameLocation": "1004:15:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 831, + "nodeType": "StructuredDocumentation", + "src": "1062:61:3", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 837, + "mutability": "immutable", + "name": "__self", + "nameLocation": "1154:6:3", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "1128:48:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 832, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1128:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "id": 835, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1171:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1163:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1163:7:3", + "typeDescriptions": {} + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1163:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 838, + "nodeType": "StructuredDocumentation", + "src": "1183:631:3", + "text": " @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade." + }, + "functionSelector": "ad3cb1cc", + "id": 841, + "mutability": "constant", + "name": "UPGRADE_INTERFACE_VERSION", + "nameLocation": "1842:25:3", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "1819:58:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 839, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1819:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "352e302e30", + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1870:7:3", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c", + "typeString": "literal_string \"5.0.0\"" + }, + "value": "5.0.0" + }, + "visibility": "public" + }, + { + "documentation": { + "id": 842, + "nodeType": "StructuredDocumentation", + "src": "1884:65:3", + "text": " @dev The call is from an unauthorized context." + }, + "errorSelector": "e07c8dba", + "id": 844, + "name": "UUPSUnauthorizedCallContext", + "nameLocation": "1960:27:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 843, + "nodeType": "ParameterList", + "parameters": [], + "src": "1987:2:3" + }, + "src": "1954:36:3" + }, + { + "documentation": { + "id": 845, + "nodeType": "StructuredDocumentation", + "src": "1996:68:3", + "text": " @dev The storage `slot` is unsupported as a UUID." + }, + "errorSelector": "aa1d49a4", + "id": 849, + "name": "UUPSUnsupportedProxiableUUID", + "nameLocation": "2075:28:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2112:4:3", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "2104:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 846, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2104:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2103:14:3" + }, + "src": "2069:49:3" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "2643:41:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 852, + "name": "_checkProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 931, + "src": "2653:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2653:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 854, + "nodeType": "ExpressionStatement", + "src": "2653:13:3" + }, + { + "id": 855, + "nodeType": "PlaceholderStatement", + "src": "2676:1:3" + } + ] + }, + "documentation": { + "id": 850, + "nodeType": "StructuredDocumentation", + "src": "2124:493:3", + "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail." + }, + "id": 857, + "name": "onlyProxy", + "nameLocation": "2631:9:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 851, + "nodeType": "ParameterList", + "parameters": [], + "src": "2640:2:3" + }, + "src": "2622:62:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 864, + "nodeType": "Block", + "src": "2914:48:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 860, + "name": "_checkNotDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "2924:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2924:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "2924:20:3" + }, + { + "id": 863, + "nodeType": "PlaceholderStatement", + "src": "2954:1:3" + } + ] + }, + "documentation": { + "id": 858, + "nodeType": "StructuredDocumentation", + "src": "2690:195:3", + "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies." + }, + "id": 865, + "name": "notDelegated", + "nameLocation": "2899:12:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [], + "src": "2911:2:3" + }, + "src": "2890:72:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 870, + "nodeType": "Block", + "src": "3028:7:3", + "statements": [] + }, + "id": 871, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 868, + "kind": "modifierInvocation", + "modifierName": { + "id": 867, + "name": "onlyInitializing", + "nameLocations": [ + "3011:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3011:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3011:16:3" + } + ], + "name": "__UUPSUpgradeable_init", + "nameLocation": "2977:22:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [], + "src": "2999:2:3" + }, + "returnParameters": { + "id": 869, + "nodeType": "ParameterList", + "parameters": [], + "src": "3028:0:3" + }, + "scope": 999, + "src": "2968:67:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 876, + "nodeType": "Block", + "src": "3111:7:3", + "statements": [] + }, + "id": 877, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 874, + "kind": "modifierInvocation", + "modifierName": { + "id": 873, + "name": "onlyInitializing", + "nameLocations": [ + "3094:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3094:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3094:16:3" + } + ], + "name": "__UUPSUpgradeable_init_unchained", + "nameLocation": "3050:32:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 872, + "nodeType": "ParameterList", + "parameters": [], + "src": "3082:2:3" + }, + "returnParameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [], + "src": "3111:0:3" + }, + "scope": 999, + "src": "3041:77:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3327 + ], + "body": { + "id": 888, + "nodeType": "Block", + "src": "3783:56:3", + "statements": [ + { + "expression": { + "expression": { + "id": 885, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "3800:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3813:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 3533, + "src": "3800:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 884, + "id": 887, + "nodeType": "Return", + "src": "3793:39:3" + } + ] + }, + "documentation": { + "id": 878, + "nodeType": "StructuredDocumentation", + "src": "3123:577:3", + "text": " @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "functionSelector": "52d1902d", + "id": 889, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 881, + "kind": "modifierInvocation", + "modifierName": { + "id": 880, + "name": "notDelegated", + "nameLocations": [ + "3752:12:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 865, + "src": "3752:12:3" + }, + "nodeType": "ModifierInvocation", + "src": "3752:12:3" + } + ], + "name": "proxiableUUID", + "nameLocation": "3714:13:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 879, + "nodeType": "ParameterList", + "parameters": [], + "src": "3727:2:3" + }, + "returnParameters": { + "id": 884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 883, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "3774:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 882, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3774:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3773:9:3" + }, + "scope": 999, + "src": "3705:134:3", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 908, + "nodeType": "Block", + "src": "4263:109:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 900, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4291:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 899, + "name": "_authorizeUpgrade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "4273:17:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4273:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 902, + "nodeType": "ExpressionStatement", + "src": "4273:36:3" + }, + { + "expression": { + "arguments": [ + { + "id": 904, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4341:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 905, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "4360:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 903, + "name": "_upgradeToAndCallUUPS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "4319:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4319:46:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "4319:46:3" + } + ] + }, + "documentation": { + "id": 890, + "nodeType": "StructuredDocumentation", + "src": "3845:308:3", + "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall" + }, + "functionSelector": "4f1ef286", + "id": 909, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 897, + "kind": "modifierInvocation", + "modifierName": { + "id": 896, + "name": "onlyProxy", + "nameLocations": [ + "4253:9:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "4253:9:3" + }, + "nodeType": "ModifierInvocation", + "src": "4253:9:3" + } + ], + "name": "upgradeToAndCall", + "nameLocation": "4167:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "4192:17:3", + "nodeType": "VariableDeclaration", + "scope": 909, + "src": "4184:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4184:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 894, + "mutability": "mutable", + "name": "data", + "nameLocation": "4224:4:3", + "nodeType": "VariableDeclaration", + "scope": 909, + "src": "4211:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 893, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4211:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4183:46:3" + }, + "returnParameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [], + "src": "4263:0:3" + }, + "scope": 999, + "src": "4158:214:3", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 930, + "nodeType": "Block", + "src": "4644:267:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 915, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4679:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4671:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4671:7:3", + "typeDescriptions": {} + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4671:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 917, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "4688:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4671:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 919, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "4749:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4762:17:3", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3564, + "src": "4749:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4749:32:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 922, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "4785:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4749:42:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4671:120:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 929, + "nodeType": "IfStatement", + "src": "4654:251:3", + "trueBody": { + "id": 928, + "nodeType": "Block", + "src": "4844:61:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 925, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4865:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4865:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 927, + "nodeType": "RevertStatement", + "src": "4858:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 910, + "nodeType": "StructuredDocumentation", + "src": "4378:216:3", + "text": " @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}." + }, + "id": 931, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkProxy", + "nameLocation": "4608:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [], + "src": "4619:2:3" + }, + "returnParameters": { + "id": 912, + "nodeType": "ParameterList", + "parameters": [], + "src": "4644:0:3" + }, + "scope": 999, + "src": "4599:312:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 946, + "nodeType": "Block", + "src": "5080:161:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 937, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5102:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5094:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5094:7:3", + "typeDescriptions": {} + } + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5094:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 939, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5111:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5094:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 945, + "nodeType": "IfStatement", + "src": "5090:145:3", + "trueBody": { + "id": 944, + "nodeType": "Block", + "src": "5119:116:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 941, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "5195:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5195:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "RevertStatement", + "src": "5188:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 932, + "nodeType": "StructuredDocumentation", + "src": "4917:106:3", + "text": " @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}." + }, + "id": 947, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNotDelegated", + "nameLocation": "5037:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 933, + "nodeType": "ParameterList", + "parameters": [], + "src": "5055:2:3" + }, + "returnParameters": { + "id": 934, + "nodeType": "ParameterList", + "parameters": [], + "src": "5080:0:3" + }, + "scope": 999, + "src": "5028:213:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 948, + "nodeType": "StructuredDocumentation", + "src": "5247:372:3", + "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```" + }, + "id": 953, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_authorizeUpgrade", + "nameLocation": "5633:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 950, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5659:17:3", + "nodeType": "VariableDeclaration", + "scope": 953, + "src": "5651:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5651:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5650:27:3" + }, + "returnParameters": { + "id": 952, + "nodeType": "ParameterList", + "parameters": [], + "src": "5694:0:3" + }, + "scope": 999, + "src": "5624:71:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 997, + "nodeType": "Block", + "src": "6137:453:3", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 986, + "nodeType": "Block", + "src": "6227:212:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 969, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "6245:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 970, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "6253:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6266:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 3533, + "src": "6253:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6245:40:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 978, + "nodeType": "IfStatement", + "src": "6241:120:3", + "trueBody": { + "id": 977, + "nodeType": "Block", + "src": "6287:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 974, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "6341:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 973, + "name": "UUPSUnsupportedProxiableUUID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6312:28:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6312:34:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 976, + "nodeType": "RevertStatement", + "src": "6305:41:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 982, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6404:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 983, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "6423:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 979, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "6374:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6387:16:3", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3625, + "src": "6374:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6374:54:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "6374:54:3" + } + ] + }, + "errorName": "", + "id": 987, + "nodeType": "TryCatchClause", + "parameters": { + "id": 968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 967, + "mutability": "mutable", + "name": "slot", + "nameLocation": "6221:4:3", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "6213:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 966, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6213:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6212:14:3" + }, + "src": "6204:235:3" + }, + { + "block": { + "id": 994, + "nodeType": "Block", + "src": "6446:138:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 991, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6555:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 988, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "6513:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6526:28:3", + "memberName": "ERC1967InvalidImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3538, + "src": "6513:41:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6513:60:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 993, + "nodeType": "RevertStatement", + "src": "6506:67:3" + } + ] + }, + "errorName": "", + "id": 995, + "nodeType": "TryCatchClause", + "src": "6440:144:3" + } + ], + "externalCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 962, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6169:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 961, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3328, + "src": "6151:17:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1822Proxiable_$3328_$", + "typeString": "type(contract IERC1822Proxiable)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6151:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1822Proxiable_$3328", + "typeString": "contract IERC1822Proxiable" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6188:13:3", + "memberName": "proxiableUUID", + "nodeType": "MemberAccess", + "referencedDeclaration": 3327, + "src": "6151:50:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6151:52:3", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 996, + "nodeType": "TryStatement", + "src": "6147:437:3" + } + ] + }, + "documentation": { + "id": 954, + "nodeType": "StructuredDocumentation", + "src": "5701:346:3", + "text": " @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 998, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_upgradeToAndCallUUPS", + "nameLocation": "6061:21:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6091:17:3", + "nodeType": "VariableDeclaration", + "scope": 998, + "src": "6083:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6083:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "data", + "nameLocation": "6123:4:3", + "nodeType": "VariableDeclaration", + "scope": 998, + "src": "6110:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6110:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6082:46:3" + }, + "returnParameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [], + "src": "6137:0:3" + }, + "scope": 999, + "src": "6052:538:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1000, + "src": "986:5606:3", + "usedErrors": [ + 580, + 583, + 844, + 849, + 3538, + 3551, + 5005, + 5008 + ], + "usedEvents": [ + 588, + 3517 + ] + } + ], + "src": "115:6478:3" + }, + "id": 3 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2832 + ], + "ERC165Upgradeable": [ + 3177 + ], + "ERC721Upgradeable": [ + 2131 + ], + "IERC165": [ + 6000 + ], + "IERC721": [ + 4914 + ], + "IERC721Errors": [ + 3418 + ], + "IERC721Metadata": [ + 4992 + ], + "IERC721Receiver": [ + 4932 + ], + "Initializable": [ + 817 + ], + "Strings": [ + 5640 + ] + }, + "id": 2132, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1001, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:4" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 1003, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 4915, + "src": "133:73:4", + "symbolAliases": [ + { + "foreign": { + "id": 1002, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "141:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "id": 1005, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 4933, + "src": "207:89:4", + "symbolAliases": [ + { + "foreign": { + "id": 1004, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "215:15:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "id": 1007, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 4993, + "src": "297:100:4", + "symbolAliases": [ + { + "foreign": { + "id": 1006, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4992, + "src": "305:15:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../../utils/ContextUpgradeable.sol", + "id": 1009, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 2833, + "src": "398:70:4", + "symbolAliases": [ + { + "foreign": { + "id": 1008, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2832, + "src": "406:18:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "file": "@openzeppelin/contracts/utils/Strings.sol", + "id": 1011, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 5641, + "src": "469:66:4", + "symbolAliases": [ + { + "foreign": { + "id": 1010, + "name": "Strings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5640, + "src": "477:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 1013, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 6001, + "src": "536:80:4", + "symbolAliases": [ + { + "foreign": { + "id": 1012, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "544:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "file": "../../utils/introspection/ERC165Upgradeable.sol", + "id": 1015, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 3178, + "src": "617:82:4", + "symbolAliases": [ + { + "foreign": { + "id": 1014, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3177, + "src": "625:17:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "id": 1017, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 3466, + "src": "700:84:4", + "symbolAliases": [ + { + "foreign": { + "id": 1016, + "name": "IERC721Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3418, + "src": "708:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 1019, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2132, + "sourceUnit": 818, + "src": "785:66:4", + "symbolAliases": [ + { + "foreign": { + "id": 1018, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "793:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1021, + "name": "Initializable", + "nameLocations": [ + "1139:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "1139:13:4" + }, + "id": 1022, + "nodeType": "InheritanceSpecifier", + "src": "1139:13:4" + }, + { + "baseName": { + "id": 1023, + "name": "ContextUpgradeable", + "nameLocations": [ + "1154:18:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2832, + "src": "1154:18:4" + }, + "id": 1024, + "nodeType": "InheritanceSpecifier", + "src": "1154:18:4" + }, + { + "baseName": { + "id": 1025, + "name": "ERC165Upgradeable", + "nameLocations": [ + "1174:17:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3177, + "src": "1174:17:4" + }, + "id": 1026, + "nodeType": "InheritanceSpecifier", + "src": "1174:17:4" + }, + { + "baseName": { + "id": 1027, + "name": "IERC721", + "nameLocations": [ + "1193:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "1193:7:4" + }, + "id": 1028, + "nodeType": "InheritanceSpecifier", + "src": "1193:7:4" + }, + { + "baseName": { + "id": 1029, + "name": "IERC721Metadata", + "nameLocations": [ + "1202:15:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4992, + "src": "1202:15:4" + }, + "id": 1030, + "nodeType": "InheritanceSpecifier", + "src": "1202:15:4" + }, + { + "baseName": { + "id": 1031, + "name": "IERC721Errors", + "nameLocations": [ + "1219:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3418, + "src": "1219:13:4" + }, + "id": 1032, + "nodeType": "InheritanceSpecifier", + "src": "1219:13:4" + } + ], + "canonicalName": "ERC721Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1020, + "nodeType": "StructuredDocumentation", + "src": "853:246:4", + "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}." + }, + "fullyImplemented": true, + "id": 2131, + "linearizedBaseContracts": [ + 2131, + 3418, + 4992, + 4914, + 3177, + 6000, + 2832, + 817 + ], + "name": "ERC721Upgradeable", + "nameLocation": "1118:17:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 1035, + "libraryName": { + "id": 1033, + "name": "Strings", + "nameLocations": [ + "1245:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5640, + "src": "1245:7:4" + }, + "nodeType": "UsingForDirective", + "src": "1239:26:4", + "typeName": { + "id": 1034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1257:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "ERC721Upgradeable.ERC721Storage", + "documentation": { + "id": 1036, + "nodeType": "StructuredDocumentation", + "src": "1271:64:4", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721" + }, + "id": 1059, + "members": [ + { + "constant": false, + "id": 1038, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1400:5:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1393:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1037, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1040, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1447:7:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1440:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1039, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1440:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1044, + "mutability": "mutable", + "name": "_owners", + "nameLocation": "1501:7:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1465:43:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 1043, + "keyName": "tokenId", + "keyNameLocation": "1481:7:4", + "keyType": { + "id": 1041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1465:35:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1492:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1048, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1553:9:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1519:43:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1047, + "keyName": "owner", + "keyNameLocation": "1535:5:4", + "keyType": { + "id": 1045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1519:33:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1046, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1052, + "mutability": "mutable", + "name": "_tokenApprovals", + "nameLocation": "1609:15:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1573:51:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 1051, + "keyName": "tokenId", + "keyNameLocation": "1589:7:4", + "keyType": { + "id": 1049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1581:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1573:35:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1050, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1600:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1058, + "mutability": "mutable", + "name": "_operatorApprovals", + "nameLocation": "1695:18:4", + "nodeType": "VariableDeclaration", + "scope": 1059, + "src": "1635:78:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 1057, + "keyName": "owner", + "keyNameLocation": "1651:5:4", + "keyType": { + "id": 1053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1643:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1635:59:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1056, + "keyName": "operator", + "keyNameLocation": "1676:8:4", + "keyType": { + "id": 1054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1660:33:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1055, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1688:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721Storage", + "nameLocation": "1347:13:4", + "nodeType": "StructDefinition", + "scope": 2131, + "src": "1340:380:4", + "visibility": "public" + }, + { + "constant": true, + "id": 1062, + "mutability": "constant", + "name": "ERC721StorageLocation", + "nameLocation": "1861:21:4", + "nodeType": "VariableDeclaration", + "scope": 2131, + "src": "1836:115:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1060, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1836:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307838306262326236333863633230626334643061363064363639343066336162346130306331643762333133343937636138326662306234616230303739333030", + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1885:66:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_58226744478722834339948329933988999792353370511964151963072532422914231210752_by_1", + "typeString": "int_const 5822...(69 digits omitted)...0752" + }, + "value": "0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300" + }, + "visibility": "private" + }, + { + "body": { + "id": 1069, + "nodeType": "Block", + "src": "2034:80:4", + "statements": [ + { + "AST": { + "nativeSrc": "2053:55:4", + "nodeType": "YulBlock", + "src": "2053:55:4", + "statements": [ + { + "nativeSrc": "2067:31:4", + "nodeType": "YulAssignment", + "src": "2067:31:4", + "value": { + "name": "ERC721StorageLocation", + "nativeSrc": "2077:21:4", + "nodeType": "YulIdentifier", + "src": "2077:21:4" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2067:6:4", + "nodeType": "YulIdentifier", + "src": "2067:6:4" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1066, + "isOffset": false, + "isSlot": true, + "src": "2067:6:4", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 1062, + "isOffset": false, + "isSlot": false, + "src": "2077:21:4", + "valueSize": 1 + } + ], + "id": 1068, + "nodeType": "InlineAssembly", + "src": "2044:64:4" + } + ] + }, + "id": 1070, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721Storage", + "nameLocation": "1967:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [], + "src": "1984:2:4" + }, + "returnParameters": { + "id": 1067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "mutability": "mutable", + "name": "$", + "nameLocation": "2031:1:4", + "nodeType": "VariableDeclaration", + "scope": 1070, + "src": "2009:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1065, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1064, + "name": "ERC721Storage", + "nameLocations": [ + "2009:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "2009:13:4" + }, + "referencedDeclaration": 1059, + "src": "2009:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "src": "2008:25:4" + }, + "scope": 2131, + "src": "1958:156:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1085, + "nodeType": "Block", + "src": "2326:56:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1081, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "2360:5:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 1082, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1075, + "src": "2367:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1080, + "name": "__ERC721_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1114, + "src": "2336:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2336:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1084, + "nodeType": "ExpressionStatement", + "src": "2336:39:4" + } + ] + }, + "documentation": { + "id": 1071, + "nodeType": "StructuredDocumentation", + "src": "2120:108:4", + "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." + }, + "id": 1086, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1078, + "kind": "modifierInvocation", + "modifierName": { + "id": 1077, + "name": "onlyInitializing", + "nameLocations": [ + "2309:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2309:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "2309:16:4" + } + ], + "name": "__ERC721_init", + "nameLocation": "2242:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1073, + "mutability": "mutable", + "name": "name_", + "nameLocation": "2270:5:4", + "nodeType": "VariableDeclaration", + "scope": 1086, + "src": "2256:19:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1072, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2256:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1075, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "2291:7:4", + "nodeType": "VariableDeclaration", + "scope": 1086, + "src": "2277:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1074, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2277:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2255:44:4" + }, + "returnParameters": { + "id": 1079, + "nodeType": "ParameterList", + "parameters": [], + "src": "2326:0:4" + }, + "scope": 2131, + "src": "2233:149:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1113, + "nodeType": "Block", + "src": "2491:116:4", + "statements": [ + { + "assignments": [ + 1097 + ], + "declarations": [ + { + "constant": false, + "id": 1097, + "mutability": "mutable", + "name": "$", + "nameLocation": "2523:1:4", + "nodeType": "VariableDeclaration", + "scope": 1113, + "src": "2501:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1096, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1095, + "name": "ERC721Storage", + "nameLocations": [ + "2501:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "2501:13:4" + }, + "referencedDeclaration": 1059, + "src": "2501:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1100, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1098, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "2527:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2527:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2501:45:4" + }, + { + "expression": { + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1101, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1097, + "src": "2556:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2558:5:4", + "memberName": "_name", + "nodeType": "MemberAccess", + "referencedDeclaration": 1038, + "src": "2556:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1104, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1088, + "src": "2566:5:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2556:15:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1106, + "nodeType": "ExpressionStatement", + "src": "2556:15:4" + }, + { + "expression": { + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1097, + "src": "2581:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2583:7:4", + "memberName": "_symbol", + "nodeType": "MemberAccess", + "referencedDeclaration": 1040, + "src": "2581:9:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1110, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1090, + "src": "2593:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2581:19:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1112, + "nodeType": "ExpressionStatement", + "src": "2581:19:4" + } + ] + }, + "id": 1114, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1093, + "kind": "modifierInvocation", + "modifierName": { + "id": 1092, + "name": "onlyInitializing", + "nameLocations": [ + "2474:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2474:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "2474:16:4" + } + ], + "name": "__ERC721_init_unchained", + "nameLocation": "2397:23:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1088, + "mutability": "mutable", + "name": "name_", + "nameLocation": "2435:5:4", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "2421:19:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1087, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2421:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1090, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "2456:7:4", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "2442:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1089, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2442:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2420:44:4" + }, + "returnParameters": { + "id": 1094, + "nodeType": "ParameterList", + "parameters": [], + "src": "2491:0:4" + }, + "scope": 2131, + "src": "2388:219:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3176, + 5999 + ], + "body": { + "id": 1144, + "nodeType": "Block", + "src": "2793:192:4", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1125, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "2822:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1127, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "2842:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721_$4914_$", + "typeString": "type(contract IERC721)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721_$4914_$", + "typeString": "type(contract IERC721)" + } + ], + "id": 1126, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2837:4:4", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2837:13:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$4914", + "typeString": "type(contract IERC721)" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2851:11:4", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2837:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2822:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1131, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "2878:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1133, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4992, + "src": "2898:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4992_$", + "typeString": "type(contract IERC721Metadata)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4992_$", + "typeString": "type(contract IERC721Metadata)" + } + ], + "id": 1132, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2893:4:4", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2893:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$4992", + "typeString": "type(contract IERC721Metadata)" + } + }, + "id": 1135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2915:11:4", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2893:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2878:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2822:104:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 1140, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "2966:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 1138, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2942:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721Upgradeable_$2131_$", + "typeString": "type(contract super ERC721Upgradeable)" + } + }, + "id": 1139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2948:17:4", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 3176, + "src": "2942:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 1141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2942:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2822:156:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1124, + "id": 1143, + "nodeType": "Return", + "src": "2803:175:4" + } + ] + }, + "documentation": { + "id": 1115, + "nodeType": "StructuredDocumentation", + "src": "2613:56:4", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 1145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2683:17:4", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1121, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 1119, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2750:17:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3177, + "src": "2750:17:4" + }, + { + "id": 1120, + "name": "IERC165", + "nameLocations": [ + "2769:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "2769:7:4" + } + ], + "src": "2741:36:4" + }, + "parameters": { + "id": 1118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2708:11:4", + "nodeType": "VariableDeclaration", + "scope": 1145, + "src": "2701:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1116, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2701:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2700:20:4" + }, + "returnParameters": { + "id": 1124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1123, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1145, + "src": "2787:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1122, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2787:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2786:6:4" + }, + "scope": 2131, + "src": "2674:311:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4839 + ], + "body": { + "id": 1179, + "nodeType": "Block", + "src": "3116:193:4", + "statements": [ + { + "assignments": [ + 1155 + ], + "declarations": [ + { + "constant": false, + "id": 1155, + "mutability": "mutable", + "name": "$", + "nameLocation": "3148:1:4", + "nodeType": "VariableDeclaration", + "scope": 1179, + "src": "3126:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1154, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1153, + "name": "ERC721Storage", + "nameLocations": [ + "3126:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "3126:13:4" + }, + "referencedDeclaration": 1059, + "src": "3126:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1158, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1156, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "3152:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3152:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3126:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1159, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1148, + "src": "3185:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3202:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3194:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3194:7:4", + "typeDescriptions": {} + } + }, + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3194:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3185:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1173, + "nodeType": "IfStatement", + "src": "3181:87:4", + "trueBody": { + "id": 1172, + "nodeType": "Block", + "src": "3206:62:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3254:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3246:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3246:7:4", + "typeDescriptions": {} + } + }, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3246:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1165, + "name": "ERC721InvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3376, + "src": "3227:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3227:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1171, + "nodeType": "RevertStatement", + "src": "3220:37:4" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1174, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "3284:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1175, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3286:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1048, + "src": "3284:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1177, + "indexExpression": { + "id": 1176, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1148, + "src": "3296:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3284:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1152, + "id": 1178, + "nodeType": "Return", + "src": "3277:25:4" + } + ] + }, + "documentation": { + "id": 1146, + "nodeType": "StructuredDocumentation", + "src": "2991:48:4", + "text": " @dev See {IERC721-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 1180, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3053:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1148, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3071:5:4", + "nodeType": "VariableDeclaration", + "scope": 1180, + "src": "3063:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3063:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3062:15:4" + }, + "returnParameters": { + "id": 1152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1151, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1180, + "src": "3107:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1150, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3107:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3106:9:4" + }, + "scope": 2131, + "src": "3044:265:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4847 + ], + "body": { + "id": 1192, + "nodeType": "Block", + "src": "3438:46:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1189, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1183, + "src": "3469:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1188, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "3455:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3455:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1187, + "id": 1191, + "nodeType": "Return", + "src": "3448:29:4" + } + ] + }, + "documentation": { + "id": 1181, + "nodeType": "StructuredDocumentation", + "src": "3315:46:4", + "text": " @dev See {IERC721-ownerOf}." + }, + "functionSelector": "6352211e", + "id": 1193, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "3375:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1183, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3391:7:4", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "3383:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3383:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3382:17:4" + }, + "returnParameters": { + "id": 1187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1186, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "3429:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3429:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3428:9:4" + }, + "scope": 2131, + "src": "3366:118:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4977 + ], + "body": { + "id": 1208, + "nodeType": "Block", + "src": "3606:86:4", + "statements": [ + { + "assignments": [ + 1201 + ], + "declarations": [ + { + "constant": false, + "id": 1201, + "mutability": "mutable", + "name": "$", + "nameLocation": "3638:1:4", + "nodeType": "VariableDeclaration", + "scope": 1208, + "src": "3616:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1200, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1199, + "name": "ERC721Storage", + "nameLocations": [ + "3616:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "3616:13:4" + }, + "referencedDeclaration": 1059, + "src": "3616:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1204, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1202, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "3642:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3642:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3616:45:4" + }, + { + "expression": { + "expression": { + "id": 1205, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "3678:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1206, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3680:5:4", + "memberName": "_name", + "nodeType": "MemberAccess", + "referencedDeclaration": 1038, + "src": "3678:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1198, + "id": 1207, + "nodeType": "Return", + "src": "3671:14:4" + } + ] + }, + "documentation": { + "id": 1194, + "nodeType": "StructuredDocumentation", + "src": "3490:51:4", + "text": " @dev See {IERC721Metadata-name}." + }, + "functionSelector": "06fdde03", + "id": 1209, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "3555:4:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1195, + "nodeType": "ParameterList", + "parameters": [], + "src": "3559:2:4" + }, + "returnParameters": { + "id": 1198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1197, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "3591:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1196, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3591:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3590:15:4" + }, + "scope": 2131, + "src": "3546:146:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4983 + ], + "body": { + "id": 1224, + "nodeType": "Block", + "src": "3818:88:4", + "statements": [ + { + "assignments": [ + 1217 + ], + "declarations": [ + { + "constant": false, + "id": 1217, + "mutability": "mutable", + "name": "$", + "nameLocation": "3850:1:4", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "3828:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1216, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1215, + "name": "ERC721Storage", + "nameLocations": [ + "3828:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "3828:13:4" + }, + "referencedDeclaration": 1059, + "src": "3828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1220, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1218, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "3854:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3854:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3828:45:4" + }, + { + "expression": { + "expression": { + "id": 1221, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "3890:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3892:7:4", + "memberName": "_symbol", + "nodeType": "MemberAccess", + "referencedDeclaration": 1040, + "src": "3890:9:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1214, + "id": 1223, + "nodeType": "Return", + "src": "3883:16:4" + } + ] + }, + "documentation": { + "id": 1210, + "nodeType": "StructuredDocumentation", + "src": "3698:53:4", + "text": " @dev See {IERC721Metadata-symbol}." + }, + "functionSelector": "95d89b41", + "id": 1225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "3765:6:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1211, + "nodeType": "ParameterList", + "parameters": [], + "src": "3771:2:4" + }, + "returnParameters": { + "id": 1214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1213, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1225, + "src": "3803:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1212, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3803:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3802:15:4" + }, + "scope": 2131, + "src": "3756:150:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4991 + ], + "body": { + "id": 1260, + "nodeType": "Block", + "src": "4051:176:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1234, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "4075:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1233, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "4061:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4061:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1236, + "nodeType": "ExpressionStatement", + "src": "4061:22:4" + }, + { + "assignments": [ + 1238 + ], + "declarations": [ + { + "constant": false, + "id": 1238, + "mutability": "mutable", + "name": "baseURI", + "nameLocation": "4108:7:4", + "nodeType": "VariableDeclaration", + "scope": 1260, + "src": "4094:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1237, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4094:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 1241, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1239, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1270, + "src": "4118:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4118:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4094:34:4" + }, + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1244, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1238, + "src": "4151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4145:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 1242, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4145:5:4", + "typeDescriptions": {} + } + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4145:14:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4160:6:4", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4145:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4169:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4145:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "", + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4218:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4145:75:4", + "trueExpression": { + "arguments": [ + { + "id": 1252, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1238, + "src": "4187:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1253, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "4196:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4204:8:4", + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 5453, + "src": "4196:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4196:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4173:6:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1249, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4173:6:4", + "typeDescriptions": {} + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4180:6:4", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "4173:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4173:42:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 1232, + "id": 1259, + "nodeType": "Return", + "src": "4138:82:4" + } + ] + }, + "documentation": { + "id": 1226, + "nodeType": "StructuredDocumentation", + "src": "3912:55:4", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 1261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "3981:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1228, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3998:7:4", + "nodeType": "VariableDeclaration", + "scope": 1261, + "src": "3990:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3990:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3989:17:4" + }, + "returnParameters": { + "id": 1232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1231, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1261, + "src": "4036:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1230, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4036:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4035:15:4" + }, + "scope": 2131, + "src": "3972:255:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1269, + "nodeType": "Block", + "src": "4535:26:4", + "statements": [ + { + "expression": { + "hexValue": "", + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4552:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "functionReturnParameters": 1266, + "id": 1268, + "nodeType": "Return", + "src": "4545:9:4" + } + ] + }, + "documentation": { + "id": 1262, + "nodeType": "StructuredDocumentation", + "src": "4233:231:4", + "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts." + }, + "id": 1270, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_baseURI", + "nameLocation": "4478:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1263, + "nodeType": "ParameterList", + "parameters": [], + "src": "4486:2:4" + }, + "returnParameters": { + "id": 1266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1265, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1270, + "src": "4520:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1264, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4520:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4519:15:4" + }, + "scope": 2131, + "src": "4469:92:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 4887 + ], + "body": { + "id": 1285, + "nodeType": "Block", + "src": "4679:52:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1279, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1273, + "src": "4698:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1280, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "4702:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1281, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "4711:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4711:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1278, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1918, + 1992 + ], + "referencedDeclaration": 1918, + "src": "4689:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4689:35:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1284, + "nodeType": "ExpressionStatement", + "src": "4689:35:4" + } + ] + }, + "documentation": { + "id": 1271, + "nodeType": "StructuredDocumentation", + "src": "4567:46:4", + "text": " @dev See {IERC721-approve}." + }, + "functionSelector": "095ea7b3", + "id": 1286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4627:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1273, + "mutability": "mutable", + "name": "to", + "nameLocation": "4643:2:4", + "nodeType": "VariableDeclaration", + "scope": 1286, + "src": "4635:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4635:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4655:7:4", + "nodeType": "VariableDeclaration", + "scope": 1286, + "src": "4647:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4647:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4634:29:4" + }, + "returnParameters": { + "id": 1277, + "nodeType": "ParameterList", + "parameters": [], + "src": "4679:0:4" + }, + "scope": 2131, + "src": "4618:113:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4903 + ], + "body": { + "id": 1302, + "nodeType": "Block", + "src": "4868:78:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1295, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1289, + "src": "4892:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1294, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "4878:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4878:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1297, + "nodeType": "ExpressionStatement", + "src": "4878:22:4" + }, + { + "expression": { + "arguments": [ + { + "id": 1299, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1289, + "src": "4931:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1298, + "name": "_getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "4918:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4918:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1293, + "id": 1301, + "nodeType": "Return", + "src": "4911:28:4" + } + ] + }, + "documentation": { + "id": 1287, + "nodeType": "StructuredDocumentation", + "src": "4737:50:4", + "text": " @dev See {IERC721-getApproved}." + }, + "functionSelector": "081812fc", + "id": 1303, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "4801:11:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1289, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4821:7:4", + "nodeType": "VariableDeclaration", + "scope": 1303, + "src": "4813:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4812:17:4" + }, + "returnParameters": { + "id": 1293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1292, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1303, + "src": "4859:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4859:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4858:9:4" + }, + "scope": 2131, + "src": "4792:154:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4895 + ], + "body": { + "id": 1318, + "nodeType": "Block", + "src": "5088:69:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1312, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "5117:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5117:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1314, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "5131:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1315, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1308, + "src": "5141:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1311, + "name": "_setApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2037, + "src": "5098:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5098:52:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1317, + "nodeType": "ExpressionStatement", + "src": "5098:52:4" + } + ] + }, + "documentation": { + "id": 1304, + "nodeType": "StructuredDocumentation", + "src": "4952:56:4", + "text": " @dev See {IERC721-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 1319, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "5022:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1306, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5048:8:4", + "nodeType": "VariableDeclaration", + "scope": 1319, + "src": "5040:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5040:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1308, + "mutability": "mutable", + "name": "approved", + "nameLocation": "5063:8:4", + "nodeType": "VariableDeclaration", + "scope": 1319, + "src": "5058:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1307, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5058:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5039:33:4" + }, + "returnParameters": { + "id": 1310, + "nodeType": "ParameterList", + "parameters": [], + "src": "5088:0:4" + }, + "scope": 2131, + "src": "5013:144:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4913 + ], + "body": { + "id": 1342, + "nodeType": "Block", + "src": "5317:116:4", + "statements": [ + { + "assignments": [ + 1331 + ], + "declarations": [ + { + "constant": false, + "id": 1331, + "mutability": "mutable", + "name": "$", + "nameLocation": "5349:1:4", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5327:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1330, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1329, + "name": "ERC721Storage", + "nameLocations": [ + "5327:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "5327:13:4" + }, + "referencedDeclaration": 1059, + "src": "5327:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1334, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1332, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "5353:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5353:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5327:45:4" + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 1335, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1331, + "src": "5389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5391:18:4", + "memberName": "_operatorApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1058, + "src": "5389:20:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 1338, + "indexExpression": { + "id": 1337, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1322, + "src": "5410:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5389:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1340, + "indexExpression": { + "id": 1339, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1324, + "src": "5417:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5389:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1328, + "id": 1341, + "nodeType": "Return", + "src": "5382:44:4" + } + ] + }, + "documentation": { + "id": 1320, + "nodeType": "StructuredDocumentation", + "src": "5163:55:4", + "text": " @dev See {IERC721-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 1343, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "5232:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1322, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5257:5:4", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "5249:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5249:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1324, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5272:8:4", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "5264:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5264:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5248:33:4" + }, + "returnParameters": { + "id": 1328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1327, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "5311:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1326, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5311:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5310:6:4" + }, + "scope": 2131, + "src": "5223:210:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4879 + ], + "body": { + "id": 1388, + "nodeType": "Block", + "src": "5575:498:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1353, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "5589:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5603:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5595:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5595:7:4", + "typeDescriptions": {} + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5595:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5589:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1367, + "nodeType": "IfStatement", + "src": "5585:87:4", + "trueBody": { + "id": 1366, + "nodeType": "Block", + "src": "5607:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5658:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5650:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5650:7:4", + "typeDescriptions": {} + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5650:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1359, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3400, + "src": "5628:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5628:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1365, + "nodeType": "RevertStatement", + "src": "5621:40:4" + } + ] + } + }, + { + "assignments": [ + 1369 + ], + "declarations": [ + { + "constant": false, + "id": 1369, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "5898:13:4", + "nodeType": "VariableDeclaration", + "scope": 1388, + "src": "5890:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5890:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1376, + "initialValue": { + "arguments": [ + { + "id": 1371, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "5922:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1372, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "5926:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1373, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "5935:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5935:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1370, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "5914:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5914:34:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5890:58:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1377, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "5962:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1378, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "5979:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5962:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1387, + "nodeType": "IfStatement", + "src": "5958:109:4", + "trueBody": { + "id": 1386, + "nodeType": "Block", + "src": "5985:82:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1381, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "6027:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1382, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "6033:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1383, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "6042:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1380, + "name": "ERC721IncorrectOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3390, + "src": "6006:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) pure" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6006:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1385, + "nodeType": "RevertStatement", + "src": "5999:57:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1344, + "nodeType": "StructuredDocumentation", + "src": "5439:51:4", + "text": " @dev See {IERC721-transferFrom}." + }, + "functionSelector": "23b872dd", + "id": 1389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "5504:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "mutability": "mutable", + "name": "from", + "nameLocation": "5525:4:4", + "nodeType": "VariableDeclaration", + "scope": 1389, + "src": "5517:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5517:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1348, + "mutability": "mutable", + "name": "to", + "nameLocation": "5539:2:4", + "nodeType": "VariableDeclaration", + "scope": 1389, + "src": "5531:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1350, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5551:7:4", + "nodeType": "VariableDeclaration", + "scope": 1389, + "src": "5543:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5543:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5516:43:4" + }, + "returnParameters": { + "id": 1352, + "nodeType": "ParameterList", + "parameters": [], + "src": "5575:0:4" + }, + "scope": 2131, + "src": "5495:578:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4869 + ], + "body": { + "id": 1406, + "nodeType": "Block", + "src": "6215:56:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1400, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1392, + "src": "6242:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1401, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1394, + "src": "6248:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1402, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "6252:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6261:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1399, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1407, + 1433 + ], + "referencedDeclaration": 1433, + "src": "6225:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6225:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1405, + "nodeType": "ExpressionStatement", + "src": "6225:39:4" + } + ] + }, + "documentation": { + "id": 1390, + "nodeType": "StructuredDocumentation", + "src": "6079:55:4", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "42842e0e", + "id": 1407, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6148:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1392, + "mutability": "mutable", + "name": "from", + "nameLocation": "6173:4:4", + "nodeType": "VariableDeclaration", + "scope": 1407, + "src": "6165:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6165:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1394, + "mutability": "mutable", + "name": "to", + "nameLocation": "6187:2:4", + "nodeType": "VariableDeclaration", + "scope": 1407, + "src": "6179:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6179:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1396, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6199:7:4", + "nodeType": "VariableDeclaration", + "scope": 1407, + "src": "6191:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6191:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6164:43:4" + }, + "returnParameters": { + "id": 1398, + "nodeType": "ParameterList", + "parameters": [], + "src": "6215:0:4" + }, + "scope": 2131, + "src": "6139:132:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 4859 + ], + "body": { + "id": 1432, + "nodeType": "Block", + "src": "6440:105:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1420, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "6463:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1421, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1412, + "src": "6469:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1422, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1414, + "src": "6473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1419, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1389, + "src": "6450:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6450:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1424, + "nodeType": "ExpressionStatement", + "src": "6450:31:4" + }, + { + "expression": { + "arguments": [ + { + "id": 1426, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1410, + "src": "6514:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1427, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1412, + "src": "6520:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1428, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1414, + "src": "6524:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1429, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1416, + "src": "6533:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1425, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "6491:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6491:47:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1431, + "nodeType": "ExpressionStatement", + "src": "6491:47:4" + } + ] + }, + "documentation": { + "id": 1408, + "nodeType": "StructuredDocumentation", + "src": "6277:55:4", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "b88d4fde", + "id": 1433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6346:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1410, + "mutability": "mutable", + "name": "from", + "nameLocation": "6371:4:4", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "6363:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6363:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1412, + "mutability": "mutable", + "name": "to", + "nameLocation": "6385:2:4", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "6377:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6377:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1414, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6397:7:4", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "6389:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6389:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1416, + "mutability": "mutable", + "name": "data", + "nameLocation": "6419:4:4", + "nodeType": "VariableDeclaration", + "scope": 1433, + "src": "6406:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1415, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6406:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6362:62:4" + }, + "returnParameters": { + "id": 1418, + "nodeType": "ParameterList", + "parameters": [], + "src": "6440:0:4" + }, + "scope": 2131, + "src": "6337:208:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1452, + "nodeType": "Block", + "src": "7134:97:4", + "statements": [ + { + "assignments": [ + 1443 + ], + "declarations": [ + { + "constant": false, + "id": 1443, + "mutability": "mutable", + "name": "$", + "nameLocation": "7166:1:4", + "nodeType": "VariableDeclaration", + "scope": 1452, + "src": "7144:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1442, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1441, + "name": "ERC721Storage", + "nameLocations": [ + "7144:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "7144:13:4" + }, + "referencedDeclaration": 1059, + "src": "7144:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1446, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1444, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "7170:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7170:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7144:45:4" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1447, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1443, + "src": "7206:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7208:7:4", + "memberName": "_owners", + "nodeType": "MemberAccess", + "referencedDeclaration": 1044, + "src": "7206:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1450, + "indexExpression": { + "id": 1449, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1436, + "src": "7216:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7206:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1440, + "id": 1451, + "nodeType": "Return", + "src": "7199:25:4" + } + ] + }, + "documentation": { + "id": 1434, + "nodeType": "StructuredDocumentation", + "src": "6551:503:4", + "text": " @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`." + }, + "id": 1453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_ownerOf", + "nameLocation": "7068:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1436, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7085:7:4", + "nodeType": "VariableDeclaration", + "scope": 1453, + "src": "7077:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1435, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7077:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7076:17:4" + }, + "returnParameters": { + "id": 1440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1439, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1453, + "src": "7125:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7125:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7124:9:4" + }, + "scope": 2131, + "src": "7059:172:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1472, + "nodeType": "Block", + "src": "7426:105:4", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "mutability": "mutable", + "name": "$", + "nameLocation": "7458:1:4", + "nodeType": "VariableDeclaration", + "scope": 1472, + "src": "7436:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1462, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1461, + "name": "ERC721Storage", + "nameLocations": [ + "7436:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "7436:13:4" + }, + "referencedDeclaration": 1059, + "src": "7436:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1466, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1464, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "7462:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7462:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7436:45:4" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1467, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "7498:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7500:15:4", + "memberName": "_tokenApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1052, + "src": "7498:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1470, + "indexExpression": { + "id": 1469, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "7516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7498:26:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1460, + "id": 1471, + "nodeType": "Return", + "src": "7491:33:4" + } + ] + }, + "documentation": { + "id": 1454, + "nodeType": "StructuredDocumentation", + "src": "7237:105:4", + "text": " @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted." + }, + "id": 1473, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getApproved", + "nameLocation": "7356:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1456, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7377:7:4", + "nodeType": "VariableDeclaration", + "scope": 1473, + "src": "7369:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7369:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7368:17:4" + }, + "returnParameters": { + "id": 1460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1459, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1473, + "src": "7417:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7417:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7416:9:4" + }, + "scope": 2131, + "src": "7347:184:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1508, + "nodeType": "Block", + "src": "7951:163:4", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1485, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "7980:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7999:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7991:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7991:7:4", + "typeDescriptions": {} + } + }, + "id": 1489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7991:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7980:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1491, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "8018:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1492, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "8027:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8018:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 1495, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "8055:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1496, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "8062:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1494, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "8038:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8038:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8018:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1500, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "8087:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1499, + "name": "_getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "8074:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8074:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1502, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1478, + "src": "8099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8074:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8018:88:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1505, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8017:90:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7980:127:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1484, + "id": 1507, + "nodeType": "Return", + "src": "7961:146:4" + } + ] + }, + "documentation": { + "id": 1474, + "nodeType": "StructuredDocumentation", + "src": "7537:300:4", + "text": " @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption." + }, + "id": 1509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isAuthorized", + "nameLocation": "7851:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1476, + "mutability": "mutable", + "name": "owner", + "nameLocation": "7873:5:4", + "nodeType": "VariableDeclaration", + "scope": 1509, + "src": "7865:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7865:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1478, + "mutability": "mutable", + "name": "spender", + "nameLocation": "7888:7:4", + "nodeType": "VariableDeclaration", + "scope": 1509, + "src": "7880:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7880:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1480, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7905:7:4", + "nodeType": "VariableDeclaration", + "scope": 1509, + "src": "7897:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7897:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7864:49:4" + }, + "returnParameters": { + "id": 1484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1509, + "src": "7945:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1482, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7945:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7944:6:4" + }, + "scope": 2131, + "src": "7842:272:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1545, + "nodeType": "Block", + "src": "8645:271:4", + "statements": [ + { + "condition": { + "id": 1524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8659:39:4", + "subExpression": { + "arguments": [ + { + "id": 1520, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "8674:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1521, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "8681:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1522, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "8690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1519, + "name": "_isAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1509, + "src": "8660:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) view returns (bool)" + } + }, + "id": 1523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8660:38:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1544, + "nodeType": "IfStatement", + "src": "8655:255:4", + "trueBody": { + "id": 1543, + "nodeType": "Block", + "src": "8700:210:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1525, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "8718:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8735:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8727:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8727:7:4", + "typeDescriptions": {} + } + }, + "id": 1529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8727:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8718:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1541, + "nodeType": "Block", + "src": "8816:84:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1537, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "8868:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1538, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "8877:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1536, + "name": "ERC721InsufficientApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3407, + "src": "8841:26:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8841:44:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1540, + "nodeType": "RevertStatement", + "src": "8834:51:4" + } + ] + }, + "id": 1542, + "nodeType": "IfStatement", + "src": "8714:186:4", + "trueBody": { + "id": 1535, + "nodeType": "Block", + "src": "8739:71:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1532, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "8787:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1531, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "8764:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8764:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1534, + "nodeType": "RevertStatement", + "src": "8757:38:4" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 1510, + "nodeType": "StructuredDocumentation", + "src": "8120:423:4", + "text": " @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption." + }, + "id": 1546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkAuthorized", + "nameLocation": "8557:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1512, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8582:5:4", + "nodeType": "VariableDeclaration", + "scope": 1546, + "src": "8574:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8574:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1514, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8597:7:4", + "nodeType": "VariableDeclaration", + "scope": 1546, + "src": "8589:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8589:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1516, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8614:7:4", + "nodeType": "VariableDeclaration", + "scope": 1546, + "src": "8606:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1515, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8606:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8573:49:4" + }, + "returnParameters": { + "id": 1518, + "nodeType": "ParameterList", + "parameters": [], + "src": "8645:0:4" + }, + "scope": 2131, + "src": "8548:368:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1569, + "nodeType": "Block", + "src": "9633:135:4", + "statements": [ + { + "assignments": [ + 1556 + ], + "declarations": [ + { + "constant": false, + "id": 1556, + "mutability": "mutable", + "name": "$", + "nameLocation": "9665:1:4", + "nodeType": "VariableDeclaration", + "scope": 1569, + "src": "9643:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1555, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1554, + "name": "ERC721Storage", + "nameLocations": [ + "9643:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "9643:13:4" + }, + "referencedDeclaration": 1059, + "src": "9643:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1559, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1557, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "9669:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9669:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9643:45:4" + }, + { + "id": 1568, + "nodeType": "UncheckedBlock", + "src": "9698:64:4", + "statements": [ + { + "expression": { + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1560, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "9722:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9724:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1048, + "src": "9722:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1564, + "indexExpression": { + "id": 1562, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1549, + "src": "9734:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9722:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 1565, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "9746:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "9722:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "9722:29:4" + } + ] + } + ] + }, + "documentation": { + "id": 1547, + "nodeType": "StructuredDocumentation", + "src": "8922:631:4", + "text": " @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another." + }, + "id": 1570, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "9567:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1549, + "mutability": "mutable", + "name": "account", + "nameLocation": "9592:7:4", + "nodeType": "VariableDeclaration", + "scope": 1570, + "src": "9584:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9584:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1551, + "mutability": "mutable", + "name": "value", + "nameLocation": "9609:5:4", + "nodeType": "VariableDeclaration", + "scope": 1570, + "src": "9601:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1550, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9601:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "9583:32:4" + }, + "returnParameters": { + "id": 1553, + "nodeType": "ParameterList", + "parameters": [], + "src": "9633:0:4" + }, + "scope": 2131, + "src": "9558:210:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1671, + "nodeType": "Block", + "src": "10456:761:4", + "statements": [ + { + "assignments": [ + 1584 + ], + "declarations": [ + { + "constant": false, + "id": 1584, + "mutability": "mutable", + "name": "$", + "nameLocation": "10488:1:4", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "10466:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1583, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1582, + "name": "ERC721Storage", + "nameLocations": [ + "10466:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "10466:13:4" + }, + "referencedDeclaration": 1059, + "src": "10466:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1587, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1585, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "10492:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10492:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10466:45:4" + }, + { + "assignments": [ + 1589 + ], + "declarations": [ + { + "constant": false, + "id": 1589, + "mutability": "mutable", + "name": "from", + "nameLocation": "10529:4:4", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "10521:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10521:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1593, + "initialValue": { + "arguments": [ + { + "id": 1591, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "10545:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1590, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1453, + "src": "10536:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10536:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10521:32:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1594, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "10613:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10629:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1595, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10621:7:4", + "typeDescriptions": {} + } + }, + "id": 1598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10621:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10613:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1607, + "nodeType": "IfStatement", + "src": "10609:86:4", + "trueBody": { + "id": 1606, + "nodeType": "Block", + "src": "10633:62:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1601, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "10664:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1602, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "10670:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1603, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "10676:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1600, + "name": "_checkAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1546, + "src": "10647:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) view" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10647:37:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1605, + "nodeType": "ExpressionStatement", + "src": "10647:37:4" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1608, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "10739:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10755:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10747:7:4", + "typeDescriptions": {} + } + }, + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10747:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10739:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1637, + "nodeType": "IfStatement", + "src": "10735:258:4", + "trueBody": { + "id": 1636, + "nodeType": "Block", + "src": "10759:234:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10872:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10864:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10864:7:4", + "typeDescriptions": {} + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10864:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1619, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "10876:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10893:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10885:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1620, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10885:7:4", + "typeDescriptions": {} + } + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10885:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "66616c7365", + "id": 1624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10897:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1614, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1918, + 1992 + ], + "referencedDeclaration": 1992, + "src": "10855:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,bool)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10855:48:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "ExpressionStatement", + "src": "10855:48:4" + }, + { + "id": 1635, + "nodeType": "UncheckedBlock", + "src": "10918:65:4", + "statements": [ + { + "expression": { + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1627, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "10946:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1630, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10948:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1048, + "src": "10946:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1631, + "indexExpression": { + "id": 1629, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "10958:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10946:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10967:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10946:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1634, + "nodeType": "ExpressionStatement", + "src": "10946:22:4" + } + ] + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1638, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "11007:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11021:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11013:7:4", + "typeDescriptions": {} + } + }, + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11013:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11007:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1654, + "nodeType": "IfStatement", + "src": "11003:109:4", + "trueBody": { + "id": 1653, + "nodeType": "Block", + "src": "11025:87:4", + "statements": [ + { + "id": 1652, + "nodeType": "UncheckedBlock", + "src": "11039:63:4", + "statements": [ + { + "expression": { + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1644, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "11067:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11069:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1048, + "src": "11067:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1648, + "indexExpression": { + "id": 1646, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "11079:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11067:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11086:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11067:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1651, + "nodeType": "ExpressionStatement", + "src": "11067:20:4" + } + ] + } + ] + } + }, + { + "expression": { + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1655, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "11122:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11124:7:4", + "memberName": "_owners", + "nodeType": "MemberAccess", + "referencedDeclaration": 1044, + "src": "11122:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1659, + "indexExpression": { + "id": 1657, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "11132:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11122:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1660, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "11143:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11122:23:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1662, + "nodeType": "ExpressionStatement", + "src": "11122:23:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1664, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "11170:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1665, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "11176:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1666, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "11180:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1663, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "11161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11161:27:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1668, + "nodeType": "EmitStatement", + "src": "11156:32:4" + }, + { + "expression": { + "id": 1669, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1589, + "src": "11206:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1581, + "id": 1670, + "nodeType": "Return", + "src": "11199:11:4" + } + ] + }, + "documentation": { + "id": 1571, + "nodeType": "StructuredDocumentation", + "src": "9774:582:4", + "text": " @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}." + }, + "id": 1672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "10370:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1573, + "mutability": "mutable", + "name": "to", + "nameLocation": "10386:2:4", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "10378:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10378:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1575, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "10398:7:4", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "10390:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10390:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1577, + "mutability": "mutable", + "name": "auth", + "nameLocation": "10415:4:4", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "10407:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10407:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10377:43:4" + }, + "returnParameters": { + "id": 1581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1580, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "10447:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10447:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10446:9:4" + }, + "scope": 2131, + "src": "10361:856:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1721, + "nodeType": "Block", + "src": "11592:274:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1680, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "11606:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11620:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11612:7:4", + "typeDescriptions": {} + } + }, + "id": 1684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11612:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11606:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1694, + "nodeType": "IfStatement", + "src": "11602:87:4", + "trueBody": { + "id": 1693, + "nodeType": "Block", + "src": "11624:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11675:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11667:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11667:7:4", + "typeDescriptions": {} + } + }, + "id": 1690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11667:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1686, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3400, + "src": "11645:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11645:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1692, + "nodeType": "RevertStatement", + "src": "11638:40:4" + } + ] + } + }, + { + "assignments": [ + 1696 + ], + "declarations": [ + { + "constant": false, + "id": 1696, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "11706:13:4", + "nodeType": "VariableDeclaration", + "scope": 1721, + "src": "11698:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11698:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1705, + "initialValue": { + "arguments": [ + { + "id": 1698, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "11730:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1699, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "11734:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11751:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11743:7:4", + "typeDescriptions": {} + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11743:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1697, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "11722:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11722:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11698:56:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1706, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "11768:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11793:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11785:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11785:7:4", + "typeDescriptions": {} + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11785:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11768:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1720, + "nodeType": "IfStatement", + "src": "11764:96:4", + "trueBody": { + "id": 1719, + "nodeType": "Block", + "src": "11797:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11846:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11838:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11838:7:4", + "typeDescriptions": {} + } + }, + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11838:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1712, + "name": "ERC721InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3395, + "src": "11818:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11818:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1718, + "nodeType": "RevertStatement", + "src": "11811:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1673, + "nodeType": "StructuredDocumentation", + "src": "11223:311:4", + "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." + }, + "id": 1722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "11548:5:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1675, + "mutability": "mutable", + "name": "to", + "nameLocation": "11562:2:4", + "nodeType": "VariableDeclaration", + "scope": 1722, + "src": "11554:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1674, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11554:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1677, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "11574:7:4", + "nodeType": "VariableDeclaration", + "scope": 1722, + "src": "11566:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11566:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11553:29:4" + }, + "returnParameters": { + "id": 1679, + "nodeType": "ParameterList", + "parameters": [], + "src": "11592:0:4" + }, + "scope": 2131, + "src": "11539:327:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1736, + "nodeType": "Block", + "src": "12274:43:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1731, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1725, + "src": "12294:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1732, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1727, + "src": "12298:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12307:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1730, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1737, + 1763 + ], + "referencedDeclaration": 1763, + "src": "12284:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 1734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12284:26:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1735, + "nodeType": "ExpressionStatement", + "src": "12284:26:4" + } + ] + }, + "documentation": { + "id": 1723, + "nodeType": "StructuredDocumentation", + "src": "11872:340:4", + "text": " @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 1737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "12226:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1725, + "mutability": "mutable", + "name": "to", + "nameLocation": "12244:2:4", + "nodeType": "VariableDeclaration", + "scope": 1737, + "src": "12236:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12236:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1727, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "12256:7:4", + "nodeType": "VariableDeclaration", + "scope": 1737, + "src": "12248:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12248:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12235:29:4" + }, + "returnParameters": { + "id": 1729, + "nodeType": "ParameterList", + "parameters": [], + "src": "12274:0:4" + }, + "scope": 2131, + "src": "12217:100:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1762, + "nodeType": "Block", + "src": "12622:98:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1748, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "12638:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1749, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "12642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1747, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1722, + "src": "12632:5:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12632:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1751, + "nodeType": "ExpressionStatement", + "src": "12632:18:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12691:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12683:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12683:7:4", + "typeDescriptions": {} + } + }, + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12683:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1757, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "12695:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1758, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1742, + "src": "12699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1759, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1744, + "src": "12708:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1752, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "12660:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12660:53:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1761, + "nodeType": "ExpressionStatement", + "src": "12660:53:4" + } + ] + }, + "documentation": { + "id": 1738, + "nodeType": "StructuredDocumentation", + "src": "12323:210:4", + "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 1763, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "12547:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1740, + "mutability": "mutable", + "name": "to", + "nameLocation": "12565:2:4", + "nodeType": "VariableDeclaration", + "scope": 1763, + "src": "12557:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12557:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1742, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "12577:7:4", + "nodeType": "VariableDeclaration", + "scope": 1763, + "src": "12569:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12569:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1744, + "mutability": "mutable", + "name": "data", + "nameLocation": "12599:4:4", + "nodeType": "VariableDeclaration", + "scope": 1763, + "src": "12586:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1743, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12586:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "12556:48:4" + }, + "returnParameters": { + "id": 1746, + "nodeType": "ParameterList", + "parameters": [], + "src": "12622:0:4" + }, + "scope": 2131, + "src": "12538:182:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1795, + "nodeType": "Block", + "src": "13087:186:4", + "statements": [ + { + "assignments": [ + 1770 + ], + "declarations": [ + { + "constant": false, + "id": 1770, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "13105:13:4", + "nodeType": "VariableDeclaration", + "scope": 1795, + "src": "13097:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13097:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1782, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13137:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13129:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13129:7:4", + "typeDescriptions": {} + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13129:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1776, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1766, + "src": "13141:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13158:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13150:7:4", + "typeDescriptions": {} + } + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13150:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1771, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "13121:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13121:40:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13097:64:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1783, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1770, + "src": "13175:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13200:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13192:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13192:7:4", + "typeDescriptions": {} + } + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13192:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13175:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1794, + "nodeType": "IfStatement", + "src": "13171:96:4", + "trueBody": { + "id": 1793, + "nodeType": "Block", + "src": "13204:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1790, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1766, + "src": "13248:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1789, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "13225:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13225:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1792, + "nodeType": "RevertStatement", + "src": "13218:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1764, + "nodeType": "StructuredDocumentation", + "src": "12726:315:4", + "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." + }, + "id": 1796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "13055:5:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1766, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13069:7:4", + "nodeType": "VariableDeclaration", + "scope": 1796, + "src": "13061:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13061:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13060:17:4" + }, + "returnParameters": { + "id": 1768, + "nodeType": "ParameterList", + "parameters": [], + "src": "13087:0:4" + }, + "scope": 2131, + "src": "13046:227:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1855, + "nodeType": "Block", + "src": "13668:389:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1806, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "13682:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13696:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13688:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1807, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13688:7:4", + "typeDescriptions": {} + } + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13688:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13682:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1820, + "nodeType": "IfStatement", + "src": "13678:87:4", + "trueBody": { + "id": 1819, + "nodeType": "Block", + "src": "13700:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13751:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13743:7:4", + "typeDescriptions": {} + } + }, + "id": 1816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13743:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1812, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3400, + "src": "13721:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13721:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1818, + "nodeType": "RevertStatement", + "src": "13714:40:4" + } + ] + } + }, + { + "assignments": [ + 1822 + ], + "declarations": [ + { + "constant": false, + "id": 1822, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "13782:13:4", + "nodeType": "VariableDeclaration", + "scope": 1855, + "src": "13774:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13774:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1831, + "initialValue": { + "arguments": [ + { + "id": 1824, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "13806:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1825, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "13810:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13827:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13819:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13819:7:4", + "typeDescriptions": {} + } + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13819:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1823, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "13798:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13798:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13774:56:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1832, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "13844:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13869:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13861:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13861:7:4", + "typeDescriptions": {} + } + }, + "id": 1836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13861:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13844:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1843, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "13946:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1844, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1799, + "src": "13963:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13946:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1853, + "nodeType": "IfStatement", + "src": "13942:109:4", + "trueBody": { + "id": 1852, + "nodeType": "Block", + "src": "13969:82:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1847, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1799, + "src": "14011:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1848, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "14017:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1849, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "14026:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1846, + "name": "ERC721IncorrectOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3390, + "src": "13990:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) pure" + } + }, + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13990:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1851, + "nodeType": "RevertStatement", + "src": "13983:57:4" + } + ] + } + }, + "id": 1854, + "nodeType": "IfStatement", + "src": "13840:211:4", + "trueBody": { + "id": 1842, + "nodeType": "Block", + "src": "13873:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1839, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "13917:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1838, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "13894:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13894:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1841, + "nodeType": "RevertStatement", + "src": "13887:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1797, + "nodeType": "StructuredDocumentation", + "src": "13279:313:4", + "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." + }, + "id": 1856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "13606:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1799, + "mutability": "mutable", + "name": "from", + "nameLocation": "13624:4:4", + "nodeType": "VariableDeclaration", + "scope": 1856, + "src": "13616:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1798, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13616:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1801, + "mutability": "mutable", + "name": "to", + "nameLocation": "13638:2:4", + "nodeType": "VariableDeclaration", + "scope": 1856, + "src": "13630:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13630:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1803, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13650:7:4", + "nodeType": "VariableDeclaration", + "scope": 1856, + "src": "13642:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13615:43:4" + }, + "returnParameters": { + "id": 1805, + "nodeType": "ParameterList", + "parameters": [], + "src": "13668:0:4" + }, + "scope": 2131, + "src": "13597:460:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1873, + "nodeType": "Block", + "src": "15065:53:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1867, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "15089:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1868, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "15095:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1869, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "15099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15108:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1866, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1874, + 1900 + ], + "referencedDeclaration": 1900, + "src": "15075:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15075:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1872, + "nodeType": "ExpressionStatement", + "src": "15075:36:4" + } + ] + }, + "documentation": { + "id": 1857, + "nodeType": "StructuredDocumentation", + "src": "14063:922:4", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 1874, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "14999:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1859, + "mutability": "mutable", + "name": "from", + "nameLocation": "15021:4:4", + "nodeType": "VariableDeclaration", + "scope": 1874, + "src": "15013:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1858, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15013:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1861, + "mutability": "mutable", + "name": "to", + "nameLocation": "15035:2:4", + "nodeType": "VariableDeclaration", + "scope": 1874, + "src": "15027:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15027:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1863, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15047:7:4", + "nodeType": "VariableDeclaration", + "scope": 1874, + "src": "15039:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1862, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15039:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15012:43:4" + }, + "returnParameters": { + "id": 1865, + "nodeType": "ParameterList", + "parameters": [], + "src": "15065:0:4" + }, + "scope": 2131, + "src": "14990:128:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1899, + "nodeType": "Block", + "src": "15457:102:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1887, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "15477:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1888, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "15483:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1889, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "15487:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1886, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "15467:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15467:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1891, + "nodeType": "ExpressionStatement", + "src": "15467:28:4" + }, + { + "expression": { + "arguments": [ + { + "id": 1893, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "15528:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1894, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "15534:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1895, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "15538:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1896, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "15547:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1892, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "15505:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15505:47:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1898, + "nodeType": "ExpressionStatement", + "src": "15505:47:4" + } + ] + }, + "documentation": { + "id": 1875, + "nodeType": "StructuredDocumentation", + "src": "15124:226:4", + "text": " @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 1900, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "15364:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1877, + "mutability": "mutable", + "name": "from", + "nameLocation": "15386:4:4", + "nodeType": "VariableDeclaration", + "scope": 1900, + "src": "15378:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1876, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15378:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "to", + "nameLocation": "15400:2:4", + "nodeType": "VariableDeclaration", + "scope": 1900, + "src": "15392:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15392:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15412:7:4", + "nodeType": "VariableDeclaration", + "scope": 1900, + "src": "15404:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15404:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "mutability": "mutable", + "name": "data", + "nameLocation": "15434:4:4", + "nodeType": "VariableDeclaration", + "scope": 1900, + "src": "15421:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1882, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15421:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15377:62:4" + }, + "returnParameters": { + "id": 1885, + "nodeType": "ParameterList", + "parameters": [], + "src": "15457:0:4" + }, + "scope": 2131, + "src": "15355:204:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1917, + "nodeType": "Block", + "src": "16072:50:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1911, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "16091:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1912, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "16095:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1913, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1907, + "src": "16104:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "74727565", + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16110:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1910, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1918, + 1992 + ], + "referencedDeclaration": 1992, + "src": "16082:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,bool)" + } + }, + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16082:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1916, + "nodeType": "ExpressionStatement", + "src": "16082:33:4" + } + ] + }, + "documentation": { + "id": 1901, + "nodeType": "StructuredDocumentation", + "src": "15565:432:4", + "text": " @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 1918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "16011:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1903, + "mutability": "mutable", + "name": "to", + "nameLocation": "16028:2:4", + "nodeType": "VariableDeclaration", + "scope": 1918, + "src": "16020:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1902, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16020:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1905, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16040:7:4", + "nodeType": "VariableDeclaration", + "scope": 1918, + "src": "16032:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1904, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16032:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1907, + "mutability": "mutable", + "name": "auth", + "nameLocation": "16057:4:4", + "nodeType": "VariableDeclaration", + "scope": 1918, + "src": "16049:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16049:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16019:43:4" + }, + "returnParameters": { + "id": 1909, + "nodeType": "ParameterList", + "parameters": [], + "src": "16072:0:4" + }, + "scope": 2131, + "src": "16002:120:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1991, + "nodeType": "Block", + "src": "16398:625:4", + "statements": [ + { + "assignments": [ + 1932 + ], + "declarations": [ + { + "constant": false, + "id": 1932, + "mutability": "mutable", + "name": "$", + "nameLocation": "16430:1:4", + "nodeType": "VariableDeclaration", + "scope": 1991, + "src": "16408:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1931, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1930, + "name": "ERC721Storage", + "nameLocations": [ + "16408:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "16408:13:4" + }, + "referencedDeclaration": 1059, + "src": "16408:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1935, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1933, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "16434:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16434:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16408:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1936, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1927, + "src": "16519:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1937, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "16532:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16548:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16540:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16540:7:4", + "typeDescriptions": {} + } + }, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16540:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16532:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16519:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1982, + "nodeType": "IfStatement", + "src": "16515:460:4", + "trueBody": { + "id": 1981, + "nodeType": "Block", + "src": "16552:423:4", + "statements": [ + { + "assignments": [ + 1945 + ], + "declarations": [ + { + "constant": false, + "id": 1945, + "mutability": "mutable", + "name": "owner", + "nameLocation": "16574:5:4", + "nodeType": "VariableDeclaration", + "scope": 1981, + "src": "16566:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16566:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1949, + "initialValue": { + "arguments": [ + { + "id": 1947, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "16596:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1946, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "16582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16582:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16566:38:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1950, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "16732:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16748:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16740:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16740:7:4", + "typeDescriptions": {} + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16740:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16732:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1956, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "16754:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1957, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "16763:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16754:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16732:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16771:30:4", + "subExpression": { + "arguments": [ + { + "id": 1961, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "16789:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1962, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "16796:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1960, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "16772:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16772:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16732:69:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1971, + "nodeType": "IfStatement", + "src": "16728:142:4", + "trueBody": { + "id": 1970, + "nodeType": "Block", + "src": "16803:67:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1967, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "16850:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1966, + "name": "ERC721InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3412, + "src": "16828:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16828:27:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1969, + "nodeType": "RevertStatement", + "src": "16821:34:4" + } + ] + } + }, + { + "condition": { + "id": 1972, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1927, + "src": "16888:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1980, + "nodeType": "IfStatement", + "src": "16884:81:4", + "trueBody": { + "id": 1979, + "nodeType": "Block", + "src": "16899:66:4", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 1974, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "16931:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1975, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1921, + "src": "16938:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1976, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "16942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1973, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4822, + "src": "16922:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16922:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1978, + "nodeType": "EmitStatement", + "src": "16917:33:4" + } + ] + } + } + ] + } + }, + { + "expression": { + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1983, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "16985:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16987:15:4", + "memberName": "_tokenApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1052, + "src": "16985:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1987, + "indexExpression": { + "id": 1985, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "17003:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16985:26:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1988, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1921, + "src": "17014:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16985:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1990, + "nodeType": "ExpressionStatement", + "src": "16985:31:4" + } + ] + }, + "documentation": { + "id": 1919, + "nodeType": "StructuredDocumentation", + "src": "16128:171:4", + "text": " @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers." + }, + "id": 1992, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "16313:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1921, + "mutability": "mutable", + "name": "to", + "nameLocation": "16330:2:4", + "nodeType": "VariableDeclaration", + "scope": 1992, + "src": "16322:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16322:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1923, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16342:7:4", + "nodeType": "VariableDeclaration", + "scope": 1992, + "src": "16334:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16334:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1925, + "mutability": "mutable", + "name": "auth", + "nameLocation": "16359:4:4", + "nodeType": "VariableDeclaration", + "scope": 1992, + "src": "16351:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16351:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1927, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "16370:9:4", + "nodeType": "VariableDeclaration", + "scope": 1992, + "src": "16365:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1926, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16365:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16321:59:4" + }, + "returnParameters": { + "id": 1929, + "nodeType": "ParameterList", + "parameters": [], + "src": "16398:0:4" + }, + "scope": 2131, + "src": "16304:719:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2036, + "nodeType": "Block", + "src": "17325:276:4", + "statements": [ + { + "assignments": [ + 2004 + ], + "declarations": [ + { + "constant": false, + "id": 2004, + "mutability": "mutable", + "name": "$", + "nameLocation": "17357:1:4", + "nodeType": "VariableDeclaration", + "scope": 2036, + "src": "17335:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 2003, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2002, + "name": "ERC721Storage", + "nameLocations": [ + "17335:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1059, + "src": "17335:13:4" + }, + "referencedDeclaration": 1059, + "src": "17335:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 2007, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2005, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "17361:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1059_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17361:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17335:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2008, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "17394:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17414:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17406:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17406:7:4", + "typeDescriptions": {} + } + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17406:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17394:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2019, + "nodeType": "IfStatement", + "src": "17390:91:4", + "trueBody": { + "id": 2018, + "nodeType": "Block", + "src": "17418:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2015, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "17461:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2014, + "name": "ERC721InvalidOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "17439:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17439:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2017, + "nodeType": "RevertStatement", + "src": "17432:38:4" + } + ] + } + }, + { + "expression": { + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2020, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2004, + "src": "17490:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1059_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 2024, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17492:18:4", + "memberName": "_operatorApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1058, + "src": "17490:20:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 2025, + "indexExpression": { + "id": 2022, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "17511:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17490:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2026, + "indexExpression": { + "id": 2023, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "17518:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17490:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2027, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "17530:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "17490:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2029, + "nodeType": "ExpressionStatement", + "src": "17490:48:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2031, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "17568:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2032, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "17575:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2033, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "17585:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2030, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4831, + "src": "17553:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17553:41:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2035, + "nodeType": "EmitStatement", + "src": "17548:46:4" + } + ] + }, + "documentation": { + "id": 1993, + "nodeType": "StructuredDocumentation", + "src": "17029:198:4", + "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event." + }, + "id": 2037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setApprovalForAll", + "nameLocation": "17241:18:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1995, + "mutability": "mutable", + "name": "owner", + "nameLocation": "17268:5:4", + "nodeType": "VariableDeclaration", + "scope": 2037, + "src": "17260:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17260:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "operator", + "nameLocation": "17283:8:4", + "nodeType": "VariableDeclaration", + "scope": 2037, + "src": "17275:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17275:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1999, + "mutability": "mutable", + "name": "approved", + "nameLocation": "17298:8:4", + "nodeType": "VariableDeclaration", + "scope": 2037, + "src": "17293:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1998, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17293:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17259:48:4" + }, + "returnParameters": { + "id": 2001, + "nodeType": "ParameterList", + "parameters": [], + "src": "17325:0:4" + }, + "scope": 2131, + "src": "17232:369:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2065, + "nodeType": "Block", + "src": "17908:169:4", + "statements": [ + { + "assignments": [ + 2046 + ], + "declarations": [ + { + "constant": false, + "id": 2046, + "mutability": "mutable", + "name": "owner", + "nameLocation": "17926:5:4", + "nodeType": "VariableDeclaration", + "scope": 2065, + "src": "17918:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17918:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2050, + "initialValue": { + "arguments": [ + { + "id": 2048, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2040, + "src": "17943:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2047, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1453, + "src": "17934:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17934:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17918:33:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2051, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "17965:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17982:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17974:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17974:7:4", + "typeDescriptions": {} + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17974:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17965:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2062, + "nodeType": "IfStatement", + "src": "17961:88:4", + "trueBody": { + "id": 2061, + "nodeType": "Block", + "src": "17986:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2058, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2040, + "src": "18030:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2057, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "18007:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18007:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2060, + "nodeType": "RevertStatement", + "src": "18000:38:4" + } + ] + } + }, + { + "expression": { + "id": 2063, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "18065:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2044, + "id": 2064, + "nodeType": "Return", + "src": "18058:12:4" + } + ] + }, + "documentation": { + "id": 2038, + "nodeType": "StructuredDocumentation", + "src": "17607:224:4", + "text": " @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}." + }, + "id": 2066, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireOwned", + "nameLocation": "17845:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2040, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17867:7:4", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "17859:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17858:17:4" + }, + "returnParameters": { + "id": 2044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2043, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2066, + "src": "17899:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17899:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17898:9:4" + }, + "scope": 2131, + "src": "17836:241:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2129, + "nodeType": "Block", + "src": "18718:680:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2078, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "18732:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18735:4:4", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "18732:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18740:6:4", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18732:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18749:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18732:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2128, + "nodeType": "IfStatement", + "src": "18728:664:4", + "trueBody": { + "id": 2127, + "nodeType": "Block", + "src": "18752:640:4", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 2107, + "nodeType": "Block", + "src": "18866:162:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2096, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "18888:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 2097, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "18898:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4932_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18914:16:4", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 4931, + "src": "18898:32:4", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18931:8:4", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "18898:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "18888:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2106, + "nodeType": "IfStatement", + "src": "18884:130:4", + "trueBody": { + "id": 2105, + "nodeType": "Block", + "src": "18941:73:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2102, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "18992:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2101, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3400, + "src": "18970:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18970:25:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2104, + "nodeType": "RevertStatement", + "src": "18963:32:4" + } + ] + } + } + ] + }, + "errorName": "", + "id": 2108, + "nodeType": "TryCatchClause", + "parameters": { + "id": 2095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2094, + "mutability": "mutable", + "name": "retval", + "nameLocation": "18858:6:4", + "nodeType": "VariableDeclaration", + "scope": 2108, + "src": "18851:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2093, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "18851:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "18850:15:4" + }, + "src": "18842:186:4" + }, + { + "block": { + "id": 2124, + "nodeType": "Block", + "src": "19057:325:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2112, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2110, + "src": "19079:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19086:6:4", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19079:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19096:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "19079:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2122, + "nodeType": "Block", + "src": "19178:190:4", + "statements": [ + { + "AST": { + "nativeSrc": "19264:86:4", + "nodeType": "YulBlock", + "src": "19264:86:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19301:2:4", + "nodeType": "YulLiteral", + "src": "19301:2:4", + "type": "", + "value": "32" + }, + { + "name": "reason", + "nativeSrc": "19305:6:4", + "nodeType": "YulIdentifier", + "src": "19305:6:4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19297:3:4", + "nodeType": "YulIdentifier", + "src": "19297:3:4" + }, + "nativeSrc": "19297:15:4", + "nodeType": "YulFunctionCall", + "src": "19297:15:4" + }, + { + "arguments": [ + { + "name": "reason", + "nativeSrc": "19320:6:4", + "nodeType": "YulIdentifier", + "src": "19320:6:4" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19314:5:4", + "nodeType": "YulIdentifier", + "src": "19314:5:4" + }, + "nativeSrc": "19314:13:4", + "nodeType": "YulFunctionCall", + "src": "19314:13:4" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19290:6:4", + "nodeType": "YulIdentifier", + "src": "19290:6:4" + }, + "nativeSrc": "19290:38:4", + "nodeType": "YulFunctionCall", + "src": "19290:38:4" + }, + "nativeSrc": "19290:38:4", + "nodeType": "YulExpressionStatement", + "src": "19290:38:4" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2110, + "isOffset": false, + "isSlot": false, + "src": "19305:6:4", + "valueSize": 1 + }, + { + "declaration": 2110, + "isOffset": false, + "isSlot": false, + "src": "19320:6:4", + "valueSize": 1 + } + ], + "id": 2121, + "nodeType": "InlineAssembly", + "src": "19255:95:4" + } + ] + }, + "id": 2123, + "nodeType": "IfStatement", + "src": "19075:293:4", + "trueBody": { + "id": 2120, + "nodeType": "Block", + "src": "19099:73:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2117, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "19150:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2116, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3400, + "src": "19128:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19128:25:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2119, + "nodeType": "RevertStatement", + "src": "19121:32:4" + } + ] + } + } + ] + }, + "errorName": "", + "id": 2125, + "nodeType": "TryCatchClause", + "parameters": { + "id": 2111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2110, + "mutability": "mutable", + "name": "reason", + "nameLocation": "19049:6:4", + "nodeType": "VariableDeclaration", + "scope": 2125, + "src": "19036:19:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2109, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19036:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19035:21:4" + }, + "src": "19029:353:4" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2087, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "18807:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18807:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2089, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2069, + "src": "18821:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2090, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "18827:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2091, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "18836:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2084, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "18786:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2083, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "18770:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4932_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18770:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$4932", + "typeString": "contract IERC721Receiver" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18790:16:4", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 4931, + "src": "18770:36:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18770:71:4", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 2126, + "nodeType": "TryStatement", + "src": "18766:616:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 2067, + "nodeType": "StructuredDocumentation", + "src": "18083:528:4", + "text": " @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call" + }, + "id": 2130, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nameLocation": "18625:22:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2069, + "mutability": "mutable", + "name": "from", + "nameLocation": "18656:4:4", + "nodeType": "VariableDeclaration", + "scope": 2130, + "src": "18648:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18648:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2071, + "mutability": "mutable", + "name": "to", + "nameLocation": "18670:2:4", + "nodeType": "VariableDeclaration", + "scope": 2130, + "src": "18662:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18662:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2073, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18682:7:4", + "nodeType": "VariableDeclaration", + "scope": 2130, + "src": "18674:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18674:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "data", + "nameLocation": "18704:4:4", + "nodeType": "VariableDeclaration", + "scope": 2130, + "src": "18691:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2074, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18691:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18647:62:4" + }, + "returnParameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [], + "src": "18718:0:4" + }, + "scope": 2131, + "src": "18616:782:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2132, + "src": "1100:18300:4", + "usedErrors": [ + 580, + 583, + 3376, + 3381, + 3390, + 3395, + 3400, + 3407, + 3412, + 3417 + ], + "usedEvents": [ + 588, + 4813, + 4822, + 4831 + ] + } + ], + "src": "107:19294:4" + }, + "id": 4 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "exportedSymbols": { + "ERC721EnumerableUpgradeable": [ + 2616 + ], + "ERC721Upgradeable": [ + 2131 + ], + "IERC165": [ + 6000 + ], + "IERC721Enumerable": [ + 4964 + ], + "Initializable": [ + 817 + ] + }, + "id": 2617, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2133, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "128:24:5" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "../ERC721Upgradeable.sol", + "id": 2135, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2617, + "sourceUnit": 2132, + "src": "154:59:5", + "symbolAliases": [ + { + "foreign": { + "id": 2134, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "162:17:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "id": 2137, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2617, + "sourceUnit": 4965, + "src": "214:104:5", + "symbolAliases": [ + { + "foreign": { + "id": 2136, + "name": "IERC721Enumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4964, + "src": "222:17:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 2139, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2617, + "sourceUnit": 6001, + "src": "319:80:5", + "symbolAliases": [ + { + "foreign": { + "id": 2138, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "327:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../../proxy/utils/Initializable.sol", + "id": 2141, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2617, + "sourceUnit": 818, + "src": "400:69:5", + "symbolAliases": [ + { + "foreign": { + "id": 2140, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "408:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2143, + "name": "Initializable", + "nameLocations": [ + "911:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "911:13:5" + }, + "id": 2144, + "nodeType": "InheritanceSpecifier", + "src": "911:13:5" + }, + { + "baseName": { + "id": 2145, + "name": "ERC721Upgradeable", + "nameLocations": [ + "926:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "926:17:5" + }, + "id": 2146, + "nodeType": "InheritanceSpecifier", + "src": "926:17:5" + }, + { + "baseName": { + "id": 2147, + "name": "IERC721Enumerable", + "nameLocations": [ + "945:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4964, + "src": "945:17:5" + }, + "id": 2148, + "nodeType": "InheritanceSpecifier", + "src": "945:17:5" + } + ], + "canonicalName": "ERC721EnumerableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2142, + "nodeType": "StructuredDocumentation", + "src": "471:390:5", + "text": " @dev This implements an optional extension of {ERC721} defined in the EIP that adds enumerability\n of all the token ids in the contract as well as all token ids owned by each account.\n CAUTION: `ERC721` extensions that implement custom `balanceOf` logic, such as `ERC721Consecutive`,\n interfere with enumerability and should not be used together with `ERC721Enumerable`." + }, + "fullyImplemented": true, + "id": 2616, + "linearizedBaseContracts": [ + 2616, + 4964, + 2131, + 3418, + 4992, + 4914, + 3177, + 6000, + 2832, + 817 + ], + "name": "ERC721EnumerableUpgradeable", + "nameLocation": "880:27:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "documentation": { + "id": 2149, + "nodeType": "StructuredDocumentation", + "src": "969:74:5", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721Enumerable" + }, + "id": 2167, + "members": [ + { + "constant": false, + "id": 2155, + "mutability": "mutable", + "name": "_ownedTokens", + "nameLocation": "1149:12:5", + "nodeType": "VariableDeclaration", + "scope": 2167, + "src": "1089:72:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + }, + "typeName": { + "id": 2154, + "keyName": "owner", + "keyNameLocation": "1105:5:5", + "keyType": { + "id": 2150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1097:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1089:59:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2153, + "keyName": "index", + "keyNameLocation": "1130:5:5", + "keyType": { + "id": 2151, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1122:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1114:33:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1139:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2159, + "mutability": "mutable", + "name": "_ownedTokensIndex", + "nameLocation": "1207:17:5", + "nodeType": "VariableDeclaration", + "scope": 2167, + "src": "1171:53:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 2158, + "keyName": "tokenId", + "keyNameLocation": "1187:7:5", + "keyType": { + "id": 2156, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1179:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1171:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1198:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2162, + "mutability": "mutable", + "name": "_allTokens", + "nameLocation": "1245:10:5", + "nodeType": "VariableDeclaration", + "scope": 2167, + "src": "1235:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2161, + "nodeType": "ArrayTypeName", + "src": "1235:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2166, + "mutability": "mutable", + "name": "_allTokensIndex", + "nameLocation": "1301:15:5", + "nodeType": "VariableDeclaration", + "scope": 2167, + "src": "1265:51:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 2165, + "keyName": "tokenId", + "keyNameLocation": "1281:7:5", + "keyType": { + "id": 2163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1273:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1265:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1292:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721EnumerableStorage", + "nameLocation": "1055:23:5", + "nodeType": "StructDefinition", + "scope": 2616, + "src": "1048:275:5", + "visibility": "public" + }, + { + "constant": true, + "id": 2170, + "mutability": "constant", + "name": "ERC721EnumerableStorageLocation", + "nameLocation": "1474:31:5", + "nodeType": "VariableDeclaration", + "scope": 2616, + "src": "1449:125:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2168, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1449:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836343565303339373035343930303838646161643839626165323530343961333466346139303732643339383533376231616232343235663234636265643030", + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1508:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_45397393259163386851312917324915499687179714947200100876063949632302666738944_by_1", + "typeString": "int_const 4539...(69 digits omitted)...8944" + }, + "value": "0x645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00" + }, + "visibility": "private" + }, + { + "body": { + "id": 2177, + "nodeType": "Block", + "src": "1677:90:5", + "statements": [ + { + "AST": { + "nativeSrc": "1696:65:5", + "nodeType": "YulBlock", + "src": "1696:65:5", + "statements": [ + { + "nativeSrc": "1710:41:5", + "nodeType": "YulAssignment", + "src": "1710:41:5", + "value": { + "name": "ERC721EnumerableStorageLocation", + "nativeSrc": "1720:31:5", + "nodeType": "YulIdentifier", + "src": "1720:31:5" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1710:6:5", + "nodeType": "YulIdentifier", + "src": "1710:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2174, + "isOffset": false, + "isSlot": true, + "src": "1710:6:5", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2170, + "isOffset": false, + "isSlot": false, + "src": "1720:31:5", + "valueSize": 1 + } + ], + "id": 2176, + "nodeType": "InlineAssembly", + "src": "1687:74:5" + } + ] + }, + "id": 2178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721EnumerableStorage", + "nameLocation": "1590:27:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2171, + "nodeType": "ParameterList", + "parameters": [], + "src": "1617:2:5" + }, + "returnParameters": { + "id": 2175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2174, + "mutability": "mutable", + "name": "$", + "nameLocation": "1674:1:5", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "1642:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2173, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2172, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "1642:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "1642:23:5" + }, + "referencedDeclaration": 2167, + "src": "1642:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1641:35:5" + }, + "scope": 2616, + "src": "1581:186:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 2179, + "nodeType": "StructuredDocumentation", + "src": "1773:168:5", + "text": " @dev An `owner`'s token query was out of bounds for `index`.\n NOTE: The owner being `address(0)` indicates a global out of bounds index." + }, + "errorSelector": "a57d13dc", + "id": 2185, + "name": "ERC721OutOfBoundsIndex", + "nameLocation": "1952:22:5", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2181, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1983:5:5", + "nodeType": "VariableDeclaration", + "scope": 2185, + "src": "1975:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1975:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2183, + "mutability": "mutable", + "name": "index", + "nameLocation": "1998:5:5", + "nodeType": "VariableDeclaration", + "scope": 2185, + "src": "1990:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1990:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1974:30:5" + }, + "src": "1946:59:5" + }, + { + "documentation": { + "id": 2186, + "nodeType": "StructuredDocumentation", + "src": "2011:50:5", + "text": " @dev Batch mint is not allowed." + }, + "errorSelector": "59171fc1", + "id": 2188, + "name": "ERC721EnumerableForbiddenBatchMint", + "nameLocation": "2072:34:5", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2187, + "nodeType": "ParameterList", + "parameters": [], + "src": "2106:2:5" + }, + "src": "2066:43:5" + }, + { + "body": { + "id": 2193, + "nodeType": "Block", + "src": "2176:7:5", + "statements": [] + }, + "id": 2194, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2191, + "kind": "modifierInvocation", + "modifierName": { + "id": 2190, + "name": "onlyInitializing", + "nameLocations": [ + "2159:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2159:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2159:16:5" + } + ], + "name": "__ERC721Enumerable_init", + "nameLocation": "2124:23:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2189, + "nodeType": "ParameterList", + "parameters": [], + "src": "2147:2:5" + }, + "returnParameters": { + "id": 2192, + "nodeType": "ParameterList", + "parameters": [], + "src": "2176:0:5" + }, + "scope": 2616, + "src": "2115:68:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2199, + "nodeType": "Block", + "src": "2260:7:5", + "statements": [] + }, + "id": 2200, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2197, + "kind": "modifierInvocation", + "modifierName": { + "id": 2196, + "name": "onlyInitializing", + "nameLocations": [ + "2243:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2243:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2243:16:5" + } + ], + "name": "__ERC721Enumerable_init_unchained", + "nameLocation": "2198:33:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2195, + "nodeType": "ParameterList", + "parameters": [], + "src": "2231:2:5" + }, + "returnParameters": { + "id": 2198, + "nodeType": "ParameterList", + "parameters": [], + "src": "2260:0:5" + }, + "scope": 2616, + "src": "2189:78:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1145, + 5999 + ], + "body": { + "id": 2223, + "nodeType": "Block", + "src": "2452:114:5", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2211, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2203, + "src": "2469:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2213, + "name": "IERC721Enumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4964, + "src": "2489:17:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$4964_$", + "typeString": "type(contract IERC721Enumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$4964_$", + "typeString": "type(contract IERC721Enumerable)" + } + ], + "id": 2212, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2484:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2484:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Enumerable_$4964", + "typeString": "type(contract IERC721Enumerable)" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2508:11:5", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2484:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2469:50:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 2219, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2203, + "src": "2547:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2217, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2523:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2616_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2529:17:5", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "2523:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2523:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2469:90:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2210, + "id": 2222, + "nodeType": "Return", + "src": "2462:97:5" + } + ] + }, + "documentation": { + "id": 2201, + "nodeType": "StructuredDocumentation", + "src": "2272:56:5", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 2224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2342:17:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2207, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 2205, + "name": "IERC165", + "nameLocations": [ + "2409:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "2409:7:5" + }, + { + "id": 2206, + "name": "ERC721Upgradeable", + "nameLocations": [ + "2418:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "2418:17:5" + } + ], + "src": "2400:36:5" + }, + "parameters": { + "id": 2204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2203, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2367:11:5", + "nodeType": "VariableDeclaration", + "scope": 2224, + "src": "2360:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2202, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2360:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2359:20:5" + }, + "returnParameters": { + "id": 2210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2209, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2224, + "src": "2446:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2208, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2446:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2445:6:5" + }, + "scope": 2616, + "src": "2333:233:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4955 + ], + "body": { + "id": 2259, + "nodeType": "Block", + "src": "2742:235:5", + "statements": [ + { + "assignments": [ + 2236 + ], + "declarations": [ + { + "constant": false, + "id": 2236, + "mutability": "mutable", + "name": "$", + "nameLocation": "2784:1:5", + "nodeType": "VariableDeclaration", + "scope": 2259, + "src": "2752:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2234, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "2752:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "2752:23:5" + }, + "referencedDeclaration": 2167, + "src": "2752:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2239, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2237, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "2788:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2788:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2752:65:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2240, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2229, + "src": "2831:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "id": 2242, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2227, + "src": "2850:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2241, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "2840:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2840:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2831:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2251, + "nodeType": "IfStatement", + "src": "2827:99:5", + "trueBody": { + "id": 2250, + "nodeType": "Block", + "src": "2858:68:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2246, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2227, + "src": "2902:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2247, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2229, + "src": "2909:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2245, + "name": "ERC721OutOfBoundsIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "2879:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2879:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2249, + "nodeType": "RevertStatement", + "src": "2872:43:5" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2252, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "2942:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2944:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2155, + "src": "2942:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2255, + "indexExpression": { + "id": 2254, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2227, + "src": "2957:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2942:21:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2257, + "indexExpression": { + "id": 2256, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2229, + "src": "2964:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2942:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2233, + "id": 2258, + "nodeType": "Return", + "src": "2935:35:5" + } + ] + }, + "documentation": { + "id": 2225, + "nodeType": "StructuredDocumentation", + "src": "2572:68:5", + "text": " @dev See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "functionSelector": "2f745c59", + "id": 2260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "2654:19:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2227, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2682:5:5", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "2674:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2674:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2229, + "mutability": "mutable", + "name": "index", + "nameLocation": "2697:5:5", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "2689:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2689:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2673:30:5" + }, + "returnParameters": { + "id": 2233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2260, + "src": "2733:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2231, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2733:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2732:9:5" + }, + "scope": 2616, + "src": "2645:332:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4945 + ], + "body": { + "id": 2276, + "nodeType": "Block", + "src": "3109:118:5", + "statements": [ + { + "assignments": [ + 2268 + ], + "declarations": [ + { + "constant": false, + "id": 2268, + "mutability": "mutable", + "name": "$", + "nameLocation": "3151:1:5", + "nodeType": "VariableDeclaration", + "scope": 2276, + "src": "3119:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2267, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2266, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "3119:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "3119:23:5" + }, + "referencedDeclaration": 2167, + "src": "3119:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2271, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2269, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "3155:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3155:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3119:65:5" + }, + { + "expression": { + "expression": { + "expression": { + "id": 2272, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2268, + "src": "3201:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3203:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "3201:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3214:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3201:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2265, + "id": 2275, + "nodeType": "Return", + "src": "3194:26:5" + } + ] + }, + "documentation": { + "id": 2261, + "nodeType": "StructuredDocumentation", + "src": "2983:60:5", + "text": " @dev See {IERC721Enumerable-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 2277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3057:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2262, + "nodeType": "ParameterList", + "parameters": [], + "src": "3068:2:5" + }, + "returnParameters": { + "id": 2265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2264, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2277, + "src": "3100:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3100:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3099:9:5" + }, + "scope": 2616, + "src": "3048:179:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4963 + ], + "body": { + "id": 2310, + "nodeType": "Block", + "src": "3374:228:5", + "statements": [ + { + "assignments": [ + 2287 + ], + "declarations": [ + { + "constant": false, + "id": 2287, + "mutability": "mutable", + "name": "$", + "nameLocation": "3416:1:5", + "nodeType": "VariableDeclaration", + "scope": 2310, + "src": "3384:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2286, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2285, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "3384:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "3384:23:5" + }, + "referencedDeclaration": 2167, + "src": "3384:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2290, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2288, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "3420:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3420:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3384:65:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2291, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2280, + "src": "3463:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2292, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2277, + "src": "3472:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3472:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3463:22:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2304, + "nodeType": "IfStatement", + "src": "3459:101:5", + "trueBody": { + "id": 2303, + "nodeType": "Block", + "src": "3487:73:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 2298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3531:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3531:7:5", + "typeDescriptions": {} + } + }, + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3531:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2300, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2280, + "src": "3543:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2295, + "name": "ERC721OutOfBoundsIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2185, + "src": "3508:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3508:41:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2302, + "nodeType": "RevertStatement", + "src": "3501:48:5" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 2305, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "3576:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3578:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "3576:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2308, + "indexExpression": { + "id": 2307, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2280, + "src": "3589:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3576:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2284, + "id": 2309, + "nodeType": "Return", + "src": "3569:26:5" + } + ] + }, + "documentation": { + "id": 2278, + "nodeType": "StructuredDocumentation", + "src": "3233:61:5", + "text": " @dev See {IERC721Enumerable-tokenByIndex}." + }, + "functionSelector": "4f6ccce7", + "id": 2311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "3308:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2280, + "mutability": "mutable", + "name": "index", + "nameLocation": "3329:5:5", + "nodeType": "VariableDeclaration", + "scope": 2311, + "src": "3321:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3321:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3320:15:5" + }, + "returnParameters": { + "id": 2284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2283, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2311, + "src": "3365:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3365:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3364:9:5" + }, + "scope": 2616, + "src": "3299:303:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1672 + ], + "body": { + "id": 2379, + "nodeType": "Block", + "src": "3762:521:5", + "statements": [ + { + "assignments": [ + 2325 + ], + "declarations": [ + { + "constant": false, + "id": 2325, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "3780:13:5", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "3772:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3772:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2332, + "initialValue": { + "arguments": [ + { + "id": 2328, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2314, + "src": "3810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2329, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "3814:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2330, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "3823:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2326, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3796:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2616_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3802:7:5", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 1672, + "src": "3796:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3796:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3772:56:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2333, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "3843:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3868:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3860:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3860:7:5", + "typeDescriptions": {} + } + }, + "id": 2337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3860:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3843:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2344, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "3947:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2345, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2314, + "src": "3964:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3947:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2353, + "nodeType": "IfStatement", + "src": "3943:106:5", + "trueBody": { + "id": 2352, + "nodeType": "Block", + "src": "3968:81:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2348, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "4015:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2349, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "4030:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2347, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2526, + "src": "3982:32:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3982:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2351, + "nodeType": "ExpressionStatement", + "src": "3982:56:5" + } + ] + } + }, + "id": 2354, + "nodeType": "IfStatement", + "src": "3839:210:5", + "trueBody": { + "id": 2343, + "nodeType": "Block", + "src": "3872:65:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2340, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "3918:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2339, + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2452, + "src": "3886:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3886:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2342, + "nodeType": "ExpressionStatement", + "src": "3886:40:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2355, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2314, + "src": "4062:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4076:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4068:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4068:7:5", + "typeDescriptions": {} + } + }, + "id": 2359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4068:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4062:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2366, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "4160:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2367, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2314, + "src": "4177:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4160:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2375, + "nodeType": "IfStatement", + "src": "4156:90:5", + "trueBody": { + "id": 2374, + "nodeType": "Block", + "src": "4181:65:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2370, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2314, + "src": "4223:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2371, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "4227:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2369, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2421, + "src": "4195:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4195:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2373, + "nodeType": "ExpressionStatement", + "src": "4195:40:5" + } + ] + } + }, + "id": 2376, + "nodeType": "IfStatement", + "src": "4058:188:5", + "trueBody": { + "id": 2365, + "nodeType": "Block", + "src": "4080:70:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2362, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "4131:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2361, + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2590, + "src": "4094:36:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4094:45:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2364, + "nodeType": "ExpressionStatement", + "src": "4094:45:5" + } + ] + } + }, + { + "expression": { + "id": 2377, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "4263:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2323, + "id": 2378, + "nodeType": "Return", + "src": "4256:20:5" + } + ] + }, + "documentation": { + "id": 2312, + "nodeType": "StructuredDocumentation", + "src": "3608:45:5", + "text": " @dev See {ERC721-_update}." + }, + "id": 2380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "3667:7:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2320, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3735:8:5" + }, + "parameters": { + "id": 2319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2314, + "mutability": "mutable", + "name": "to", + "nameLocation": "3683:2:5", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "3675:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3675:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2316, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3695:7:5", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "3687:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3687:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2318, + "mutability": "mutable", + "name": "auth", + "nameLocation": "3712:4:5", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "3704:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3704:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3674:43:5" + }, + "returnParameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "3753:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3753:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3752:9:5" + }, + "scope": 2616, + "src": "3658:625:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2420, + "nodeType": "Block", + "src": "4651:219:5", + "statements": [ + { + "assignments": [ + 2390 + ], + "declarations": [ + { + "constant": false, + "id": 2390, + "mutability": "mutable", + "name": "$", + "nameLocation": "4693:1:5", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "4661:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2389, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2388, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "4661:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "4661:23:5" + }, + "referencedDeclaration": 2167, + "src": "4661:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2393, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2391, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "4697:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4697:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4661:65:5" + }, + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "mutability": "mutable", + "name": "length", + "nameLocation": "4744:6:5", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "4736:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2397, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2383, + "src": "4763:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2396, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "4753:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4753:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4769:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4753:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4736:34:5" + }, + { + "expression": { + "id": 2410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2402, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "4780:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2406, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4782:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2155, + "src": "4780:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2407, + "indexExpression": { + "id": 2404, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2383, + "src": "4795:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4780:18:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2408, + "indexExpression": { + "id": 2405, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "4799:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4780:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2409, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2385, + "src": "4809:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4780:36:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2411, + "nodeType": "ExpressionStatement", + "src": "4780:36:5" + }, + { + "expression": { + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2412, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "4826:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4828:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2159, + "src": "4826:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2416, + "indexExpression": { + "id": 2414, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2385, + "src": "4846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4826:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2417, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "4857:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4826:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2419, + "nodeType": "ExpressionStatement", + "src": "4826:37:5" + } + ] + }, + "documentation": { + "id": 2381, + "nodeType": "StructuredDocumentation", + "src": "4289:283:5", + "text": " @dev Private function to add a token to this extension's ownership-tracking data structures.\n @param to address representing the new owner of the given token ID\n @param tokenId uint256 ID of the token to be added to the tokens list of the given address" + }, + "id": 2421, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnerEnumeration", + "nameLocation": "4586:27:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2383, + "mutability": "mutable", + "name": "to", + "nameLocation": "4622:2:5", + "nodeType": "VariableDeclaration", + "scope": 2421, + "src": "4614:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4614:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2385, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4634:7:5", + "nodeType": "VariableDeclaration", + "scope": 2421, + "src": "4626:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4613:29:5" + }, + "returnParameters": { + "id": 2387, + "nodeType": "ParameterList", + "parameters": [], + "src": "4651:0:5" + }, + "scope": 2616, + "src": "4577:293:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2451, + "nodeType": "Block", + "src": "5131:176:5", + "statements": [ + { + "assignments": [ + 2429 + ], + "declarations": [ + { + "constant": false, + "id": 2429, + "mutability": "mutable", + "name": "$", + "nameLocation": "5173:1:5", + "nodeType": "VariableDeclaration", + "scope": 2451, + "src": "5141:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2428, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2427, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "5141:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "5141:23:5" + }, + "referencedDeclaration": 2167, + "src": "5141:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2432, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2430, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "5177:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5177:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5141:65:5" + }, + { + "expression": { + "id": 2441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2433, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2429, + "src": "5216:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2436, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5218:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2166, + "src": "5216:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2437, + "indexExpression": { + "id": 2435, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "5234:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5216:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 2438, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2429, + "src": "5245:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2439, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5247:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "5245:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5258:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5245:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5216:48:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2442, + "nodeType": "ExpressionStatement", + "src": "5216:48:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2448, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "5292:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2443, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2429, + "src": "5274:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5276:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "5274:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5287:4:5", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "5274:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256)" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5274:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2450, + "nodeType": "ExpressionStatement", + "src": "5274:26:5" + } + ] + }, + "documentation": { + "id": 2422, + "nodeType": "StructuredDocumentation", + "src": "4876:184:5", + "text": " @dev Private function to add a token to this extension's token tracking data structures.\n @param tokenId uint256 ID of the token to be added to the tokens list" + }, + "id": 2452, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToAllTokensEnumeration", + "nameLocation": "5074:31:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2424, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5114:7:5", + "nodeType": "VariableDeclaration", + "scope": 2452, + "src": "5106:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5106:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5105:17:5" + }, + "returnParameters": { + "id": 2426, + "nodeType": "ParameterList", + "parameters": [], + "src": "5131:0:5" + }, + "scope": 2616, + "src": "5065:242:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2525, + "nodeType": "Block", + "src": "6005:965:5", + "statements": [ + { + "assignments": [ + 2462 + ], + "declarations": [ + { + "constant": false, + "id": 2462, + "mutability": "mutable", + "name": "$", + "nameLocation": "6047:1:5", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "6015:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2461, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2460, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "6015:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "6015:23:5" + }, + "referencedDeclaration": 2167, + "src": "6015:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2465, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2463, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "6051:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6051:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6015:65:5" + }, + { + "assignments": [ + 2467 + ], + "declarations": [ + { + "constant": false, + "id": 2467, + "mutability": "mutable", + "name": "lastTokenIndex", + "nameLocation": "6269:14:5", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "6261:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6261:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2471, + "initialValue": { + "arguments": [ + { + "id": 2469, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2455, + "src": "6296:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2468, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1180, + "src": "6286:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6286:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6261:40:5" + }, + { + "assignments": [ + 2473 + ], + "declarations": [ + { + "constant": false, + "id": 2473, + "mutability": "mutable", + "name": "tokenIndex", + "nameLocation": "6319:10:5", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "6311:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6311:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2478, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6332:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6334:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2159, + "src": "6332:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2477, + "indexExpression": { + "id": 2476, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "6352:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6332:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6311:49:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2479, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2473, + "src": "6464:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2480, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "6478:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6464:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2510, + "nodeType": "IfStatement", + "src": "6460:329:5", + "trueBody": { + "id": 2509, + "nodeType": "Block", + "src": "6494:295:5", + "statements": [ + { + "assignments": [ + 2483 + ], + "declarations": [ + { + "constant": false, + "id": 2483, + "mutability": "mutable", + "name": "lastTokenId", + "nameLocation": "6516:11:5", + "nodeType": "VariableDeclaration", + "scope": 2509, + "src": "6508:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6508:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2490, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2484, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6530:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2485, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6532:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2155, + "src": "6530:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2487, + "indexExpression": { + "id": 2486, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2455, + "src": "6545:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6530:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2489, + "indexExpression": { + "id": 2488, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "6551:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6530:36:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6508:58:5" + }, + { + "expression": { + "id": 2499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2491, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6581:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6583:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2155, + "src": "6581:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2496, + "indexExpression": { + "id": 2493, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2455, + "src": "6596:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6581:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2497, + "indexExpression": { + "id": 2494, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2473, + "src": "6602:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6581:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2498, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2483, + "src": "6616:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6581:46:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2500, + "nodeType": "ExpressionStatement", + "src": "6581:46:5" + }, + { + "expression": { + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2501, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6699:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2504, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6701:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2159, + "src": "6699:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2505, + "indexExpression": { + "id": 2503, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2483, + "src": "6719:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6699:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2506, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2473, + "src": "6734:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6699:45:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2508, + "nodeType": "ExpressionStatement", + "src": "6699:45:5" + } + ] + } + }, + { + "expression": { + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6875:35:5", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2511, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6882:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6884:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2159, + "src": "6882:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2514, + "indexExpression": { + "id": 2513, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "6902:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6882:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2516, + "nodeType": "ExpressionStatement", + "src": "6875:35:5" + }, + { + "expression": { + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6920:43:5", + "subExpression": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2517, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "6927:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2518, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6929:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2155, + "src": "6927:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2520, + "indexExpression": { + "id": 2519, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2455, + "src": "6942:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6927:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2522, + "indexExpression": { + "id": 2521, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "6948:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6927:36:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2524, + "nodeType": "ExpressionStatement", + "src": "6920:43:5" + } + ] + }, + "documentation": { + "id": 2453, + "nodeType": "StructuredDocumentation", + "src": "5313:606:5", + "text": " @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n This has O(1) time complexity, but alters the order of the _ownedTokens array.\n @param from address representing the previous owner of the given token ID\n @param tokenId uint256 ID of the token to be removed from the tokens list of the given address" + }, + "id": 2526, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnerEnumeration", + "nameLocation": "5933:32:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2455, + "mutability": "mutable", + "name": "from", + "nameLocation": "5974:4:5", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "5966:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5966:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2457, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5988:7:5", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "5980:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5980:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5965:31:5" + }, + "returnParameters": { + "id": 2459, + "nodeType": "ParameterList", + "parameters": [], + "src": "6005:0:5" + }, + "scope": 2616, + "src": "5924:1046:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2589, + "nodeType": "Block", + "src": "7329:1079:5", + "statements": [ + { + "assignments": [ + 2534 + ], + "declarations": [ + { + "constant": false, + "id": 2534, + "mutability": "mutable", + "name": "$", + "nameLocation": "7371:1:5", + "nodeType": "VariableDeclaration", + "scope": 2589, + "src": "7339:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2533, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2532, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "7339:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2167, + "src": "7339:23:5" + }, + "referencedDeclaration": 2167, + "src": "7339:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2537, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2535, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "7375:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2167_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7375:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7339:65:5" + }, + { + "assignments": [ + 2539 + ], + "declarations": [ + { + "constant": false, + "id": 2539, + "mutability": "mutable", + "name": "lastTokenIndex", + "nameLocation": "7590:14:5", + "nodeType": "VariableDeclaration", + "scope": 2589, + "src": "7582:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7582:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2545, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2540, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "7607:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7609:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "7607:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7620:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7607:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7629:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7607:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7582:48:5" + }, + { + "assignments": [ + 2547 + ], + "declarations": [ + { + "constant": false, + "id": 2547, + "mutability": "mutable", + "name": "tokenIndex", + "nameLocation": "7648:10:5", + "nodeType": "VariableDeclaration", + "scope": 2589, + "src": "7640:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7640:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2552, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2548, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "7661:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7663:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2166, + "src": "7661:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2551, + "indexExpression": { + "id": 2550, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2529, + "src": "7679:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7661:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7640:47:5" + }, + { + "assignments": [ + 2554 + ], + "declarations": [ + { + "constant": false, + "id": 2554, + "mutability": "mutable", + "name": "lastTokenId", + "nameLocation": "8017:11:5", + "nodeType": "VariableDeclaration", + "scope": 2589, + "src": "8009:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8009:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2559, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2555, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "8031:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2556, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8033:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "8031:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2558, + "indexExpression": { + "id": 2557, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2539, + "src": "8044:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8031:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8009:50:5" + }, + { + "expression": { + "id": 2566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2560, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "8070:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2563, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8072:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "8070:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2564, + "indexExpression": { + "id": 2562, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "8083:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8070:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2565, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "8097:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8070:38:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2567, + "nodeType": "ExpressionStatement", + "src": "8070:38:5" + }, + { + "expression": { + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2568, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "8176:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8178:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2166, + "src": "8176:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2572, + "indexExpression": { + "id": 2570, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "8194:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8176:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2573, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2547, + "src": "8209:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8176:43:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2575, + "nodeType": "ExpressionStatement", + "src": "8176:43:5" + }, + { + "expression": { + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "8340:33:5", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2576, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "8347:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8349:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2166, + "src": "8347:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2579, + "indexExpression": { + "id": 2578, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2529, + "src": "8365:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8347:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2581, + "nodeType": "ExpressionStatement", + "src": "8340:33:5" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 2582, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2534, + "src": "8383:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2167_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2585, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8385:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2162, + "src": "8383:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8396:3:5", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "8383:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer)" + } + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8383:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2588, + "nodeType": "ExpressionStatement", + "src": "8383:18:5" + } + ] + }, + "documentation": { + "id": 2527, + "nodeType": "StructuredDocumentation", + "src": "6976:277:5", + "text": " @dev Private function to remove a token from this extension's token tracking data structures.\n This has O(1) time complexity, but alters the order of the _allTokens array.\n @param tokenId uint256 ID of the token to be removed from the tokens list" + }, + "id": 2590, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromAllTokensEnumeration", + "nameLocation": "7267:36:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2529, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7312:7:5", + "nodeType": "VariableDeclaration", + "scope": 2590, + "src": "7304:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7304:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7303:17:5" + }, + "returnParameters": { + "id": 2531, + "nodeType": "ParameterList", + "parameters": [], + "src": "7329:0:5" + }, + "scope": 2616, + "src": "7258:1150:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "baseFunctions": [ + 1570 + ], + "body": { + "id": 2614, + "nodeType": "Block", + "src": "8610:149:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2599, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2595, + "src": "8624:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8633:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8624:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2606, + "nodeType": "IfStatement", + "src": "8620:84:5", + "trueBody": { + "id": 2605, + "nodeType": "Block", + "src": "8636:68:5", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2602, + "name": "ERC721EnumerableForbiddenBatchMint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2188, + "src": "8657:34:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8657:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2604, + "nodeType": "RevertStatement", + "src": "8650:43:5" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2610, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2593, + "src": "8736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2611, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2595, + "src": "8745:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 2607, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "8713:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2616_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8719:16:5", + "memberName": "_increaseBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1570, + "src": "8713:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$", + "typeString": "function (address,uint128)" + } + }, + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8713:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2613, + "nodeType": "ExpressionStatement", + "src": "8713:39:5" + } + ] + }, + "documentation": { + "id": 2591, + "nodeType": "StructuredDocumentation", + "src": "8414:106:5", + "text": " See {ERC721-_increaseBalance}. We need that to account tokens that were minted in batch" + }, + "id": 2615, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "8534:16:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2597, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8601:8:5" + }, + "parameters": { + "id": 2596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2593, + "mutability": "mutable", + "name": "account", + "nameLocation": "8559:7:5", + "nodeType": "VariableDeclaration", + "scope": 2615, + "src": "8551:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8551:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2595, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8576:6:5", + "nodeType": "VariableDeclaration", + "scope": 2615, + "src": "8568:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2594, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8568:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "8550:33:5" + }, + "returnParameters": { + "id": 2598, + "nodeType": "ParameterList", + "parameters": [], + "src": "8610:0:5" + }, + "scope": 2616, + "src": "8525:234:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2617, + "src": "862:7899:5", + "usedErrors": [ + 580, + 583, + 2185, + 2188, + 3376, + 3381, + 3390, + 3395, + 3400, + 3407, + 3412, + 3417 + ], + "usedEvents": [ + 588, + 4813, + 4822, + 4831 + ] + } + ], + "src": "128:8634:5" + }, + "id": 5 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "exportedSymbols": { + "ERC721URIStorageUpgradeable": [ + 2786 + ], + "ERC721Upgradeable": [ + 2131 + ], + "IERC165": [ + 6000 + ], + "IERC4906": [ + 3314 + ], + "Initializable": [ + 817 + ], + "Strings": [ + 5640 + ] + }, + "id": 2787, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2618, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "128:24:6" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "../ERC721Upgradeable.sol", + "id": 2620, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2787, + "sourceUnit": 2132, + "src": "154:59:6", + "symbolAliases": [ + { + "foreign": { + "id": 2619, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "162:17:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "file": "@openzeppelin/contracts/utils/Strings.sol", + "id": 2622, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2787, + "sourceUnit": 5641, + "src": "214:66:6", + "symbolAliases": [ + { + "foreign": { + "id": 2621, + "name": "Strings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5640, + "src": "222:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "file": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "id": 2624, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2787, + "sourceUnit": 3315, + "src": "281:73:6", + "symbolAliases": [ + { + "foreign": { + "id": 2623, + "name": "IERC4906", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3314, + "src": "289:8:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 2626, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2787, + "sourceUnit": 6001, + "src": "355:80:6", + "symbolAliases": [ + { + "foreign": { + "id": 2625, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "363:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../../proxy/utils/Initializable.sol", + "id": 2628, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2787, + "sourceUnit": 818, + "src": "436:69:6", + "symbolAliases": [ + { + "foreign": { + "id": 2627, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "444:13:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2630, + "name": "Initializable", + "nameLocations": [ + "626:13:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "626:13:6" + }, + "id": 2631, + "nodeType": "InheritanceSpecifier", + "src": "626:13:6" + }, + { + "baseName": { + "id": 2632, + "name": "IERC4906", + "nameLocations": [ + "641:8:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3314, + "src": "641:8:6" + }, + "id": 2633, + "nodeType": "InheritanceSpecifier", + "src": "641:8:6" + }, + { + "baseName": { + "id": 2634, + "name": "ERC721Upgradeable", + "nameLocations": [ + "651:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "651:17:6" + }, + "id": 2635, + "nodeType": "InheritanceSpecifier", + "src": "651:17:6" + } + ], + "canonicalName": "ERC721URIStorageUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2629, + "nodeType": "StructuredDocumentation", + "src": "507:69:6", + "text": " @dev ERC721 token with storage based token URI management." + }, + "fullyImplemented": true, + "id": 2786, + "linearizedBaseContracts": [ + 2786, + 2131, + 3418, + 4992, + 3314, + 4914, + 3177, + 6000, + 2832, + 817 + ], + "name": "ERC721URIStorageUpgradeable", + "nameLocation": "595:27:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 2638, + "libraryName": { + "id": 2636, + "name": "Strings", + "nameLocations": [ + "681:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5640, + "src": "681:7:6" + }, + "nodeType": "UsingForDirective", + "src": "675:26:6", + "typeName": { + "id": 2637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "693:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 2644, + "mutability": "constant", + "name": "ERC4906_INTERFACE_ID", + "nameLocation": "913:20:6", + "nodeType": "VariableDeclaration", + "scope": 2786, + "src": "889:65:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2639, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "889:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "30783439303634393036", + "id": 2642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "943:10:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_1225148678_by_1", + "typeString": "int_const 1225148678" + }, + "value": "0x49064906" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1225148678_by_1", + "typeString": "int_const 1225148678" + } + ], + "id": 2641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "936:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 2640, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "936:6:6", + "typeDescriptions": {} + } + }, + "id": 2643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "936:18:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "private" + }, + { + "canonicalName": "ERC721URIStorageUpgradeable.ERC721URIStorageStorage", + "documentation": { + "id": 2645, + "nodeType": "StructuredDocumentation", + "src": "961:74:6", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721URIStorage" + }, + "id": 2650, + "members": [ + { + "constant": false, + "id": 2649, + "mutability": "mutable", + "name": "_tokenURIs", + "nameLocation": "1159:10:6", + "nodeType": "VariableDeclaration", + "scope": 2650, + "src": "1124:45:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 2648, + "keyName": "tokenId", + "keyNameLocation": "1140:7:6", + "keyType": { + "id": 2646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1132:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1124:34:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2647, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1151:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721URIStorageStorage", + "nameLocation": "1047:23:6", + "nodeType": "StructDefinition", + "scope": 2786, + "src": "1040:136:6", + "visibility": "public" + }, + { + "constant": true, + "id": 2653, + "mutability": "constant", + "name": "ERC721URIStorageStorageLocation", + "nameLocation": "1327:31:6", + "nodeType": "VariableDeclaration", + "scope": 2786, + "src": "1302:125:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2651, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1302:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830353432613431383831656531323861333635613732376232383263383666613835393537393439306239626234356161623835303336343863386537393030", + "id": 2652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1361:66:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2379308696314521910557677063879631722299242421128561970643328499819886835968_by_1", + "typeString": "int_const 2379...(68 digits omitted)...5968" + }, + "value": "0x0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e7900" + }, + "visibility": "private" + }, + { + "body": { + "id": 2660, + "nodeType": "Block", + "src": "1530:90:6", + "statements": [ + { + "AST": { + "nativeSrc": "1549:65:6", + "nodeType": "YulBlock", + "src": "1549:65:6", + "statements": [ + { + "nativeSrc": "1563:41:6", + "nodeType": "YulAssignment", + "src": "1563:41:6", + "value": { + "name": "ERC721URIStorageStorageLocation", + "nativeSrc": "1573:31:6", + "nodeType": "YulIdentifier", + "src": "1573:31:6" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1563:6:6", + "nodeType": "YulIdentifier", + "src": "1563:6:6" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2657, + "isOffset": false, + "isSlot": true, + "src": "1563:6:6", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2653, + "isOffset": false, + "isSlot": false, + "src": "1573:31:6", + "valueSize": 1 + } + ], + "id": 2659, + "nodeType": "InlineAssembly", + "src": "1540:74:6" + } + ] + }, + "id": 2661, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721URIStorageStorage", + "nameLocation": "1443:27:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2654, + "nodeType": "ParameterList", + "parameters": [], + "src": "1470:2:6" + }, + "returnParameters": { + "id": 2658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2657, + "mutability": "mutable", + "name": "$", + "nameLocation": "1527:1:6", + "nodeType": "VariableDeclaration", + "scope": 2661, + "src": "1495:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2656, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2655, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "1495:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2650, + "src": "1495:23:6" + }, + "referencedDeclaration": 2650, + "src": "1495:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1494:35:6" + }, + "scope": 2786, + "src": "1434:186:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2666, + "nodeType": "Block", + "src": "1687:7:6", + "statements": [] + }, + "id": 2667, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2664, + "kind": "modifierInvocation", + "modifierName": { + "id": 2663, + "name": "onlyInitializing", + "nameLocations": [ + "1670:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1670:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "1670:16:6" + } + ], + "name": "__ERC721URIStorage_init", + "nameLocation": "1635:23:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2662, + "nodeType": "ParameterList", + "parameters": [], + "src": "1658:2:6" + }, + "returnParameters": { + "id": 2665, + "nodeType": "ParameterList", + "parameters": [], + "src": "1687:0:6" + }, + "scope": 2786, + "src": "1626:68:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2672, + "nodeType": "Block", + "src": "1771:7:6", + "statements": [] + }, + "id": 2673, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2670, + "kind": "modifierInvocation", + "modifierName": { + "id": 2669, + "name": "onlyInitializing", + "nameLocations": [ + "1754:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1754:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "1754:16:6" + } + ], + "name": "__ERC721URIStorage_init_unchained", + "nameLocation": "1709:33:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2668, + "nodeType": "ParameterList", + "parameters": [], + "src": "1742:2:6" + }, + "returnParameters": { + "id": 2671, + "nodeType": "ParameterList", + "parameters": [], + "src": "1771:0:6" + }, + "scope": 2786, + "src": "1700:78:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1145, + 5999 + ], + "body": { + "id": 2693, + "nodeType": "Block", + "src": "1962:99:6", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2684, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "1979:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2685, + "name": "ERC4906_INTERFACE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "1994:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1979:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 2689, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "2042:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2687, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2018:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$2786_$", + "typeString": "type(contract super ERC721URIStorageUpgradeable)" + } + }, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2024:17:6", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "2018:23:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2018:36:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1979:75:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2683, + "id": 2692, + "nodeType": "Return", + "src": "1972:82:6" + } + ] + }, + "documentation": { + "id": 2674, + "nodeType": "StructuredDocumentation", + "src": "1783:55:6", + "text": " @dev See {IERC165-supportsInterface}" + }, + "functionSelector": "01ffc9a7", + "id": 2694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1852:17:6", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2680, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 2678, + "name": "ERC721Upgradeable", + "nameLocations": [ + "1919:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "1919:17:6" + }, + { + "id": 2679, + "name": "IERC165", + "nameLocations": [ + "1938:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "1938:7:6" + } + ], + "src": "1910:36:6" + }, + "parameters": { + "id": 2677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2676, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1877:11:6", + "nodeType": "VariableDeclaration", + "scope": 2694, + "src": "1870:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2675, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1870:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1869:20:6" + }, + "returnParameters": { + "id": 2683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2682, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2694, + "src": "1956:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2681, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1956:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1955:6:6" + }, + "scope": 2786, + "src": "1843:218:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1261 + ], + "body": { + "id": 2757, + "nodeType": "Block", + "src": "2215:582:6", + "statements": [ + { + "assignments": [ + 2705 + ], + "declarations": [ + { + "constant": false, + "id": 2705, + "mutability": "mutable", + "name": "$", + "nameLocation": "2257:1:6", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "2225:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2704, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2703, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "2225:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2650, + "src": "2225:23:6" + }, + "referencedDeclaration": 2650, + "src": "2225:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2708, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2706, + "name": "_getERC721URIStorageStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2261:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721URIStorageStorage_$2650_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer)" + } + }, + "id": 2707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2261:29:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2225:65:6" + }, + { + "expression": { + "arguments": [ + { + "id": 2710, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2697, + "src": "2314:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2709, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "2300:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2300:22:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2712, + "nodeType": "ExpressionStatement", + "src": "2300:22:6" + }, + { + "assignments": [ + 2714 + ], + "declarations": [ + { + "constant": false, + "id": 2714, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "2347:9:6", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "2333:23:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2713, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2333:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2719, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2715, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2705, + "src": "2359:1:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "id": 2716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2361:10:6", + "memberName": "_tokenURIs", + "nodeType": "MemberAccess", + "referencedDeclaration": 2649, + "src": "2359:12:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2718, + "indexExpression": { + "id": 2717, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2697, + "src": "2372:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2359:21:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2333:47:6" + }, + { + "assignments": [ + 2721 + ], + "declarations": [ + { + "constant": false, + "id": 2721, + "mutability": "mutable", + "name": "base", + "nameLocation": "2404:4:6", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "2390:18:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2720, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2390:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2724, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2722, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1270, + "src": "2411:8:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 2723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2411:10:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2390:31:6" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2727, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2721, + "src": "2500:4:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2494:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2725, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2494:5:6", + "typeDescriptions": {} + } + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2494:11:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2506:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2494:18:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2516:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2494:23:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2735, + "nodeType": "IfStatement", + "src": "2490:70:6", + "trueBody": { + "id": 2734, + "nodeType": "Block", + "src": "2519:41:6", + "statements": [ + { + "expression": { + "id": 2732, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2714, + "src": "2540:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2702, + "id": 2733, + "nodeType": "Return", + "src": "2533:16:6" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2738, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2714, + "src": "2665:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2659:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2736, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2659:5:6", + "typeDescriptions": {} + } + }, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2659:16:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2676:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2659:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2685:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2659:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2751, + "nodeType": "IfStatement", + "src": "2655:95:6", + "trueBody": { + "id": 2750, + "nodeType": "Block", + "src": "2688:62:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2746, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2721, + "src": "2723:4:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 2747, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2714, + "src": "2729:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 2744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2709:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 2743, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2709:6:6", + "typeDescriptions": {} + } + }, + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2716:6:6", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "2709:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2709:30:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2702, + "id": 2749, + "nodeType": "Return", + "src": "2702:37:6" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2754, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2697, + "src": "2782:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2752, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2767:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$2786_$", + "typeString": "type(contract super ERC721URIStorageUpgradeable)" + } + }, + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2773:8:6", + "memberName": "tokenURI", + "nodeType": "MemberAccess", + "referencedDeclaration": 1261, + "src": "2767:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) view returns (string memory)" + } + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2767:23:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2702, + "id": 2756, + "nodeType": "Return", + "src": "2760:30:6" + } + ] + }, + "documentation": { + "id": 2695, + "nodeType": "StructuredDocumentation", + "src": "2067:55:6", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 2758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "2136:8:6", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2699, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2182:8:6" + }, + "parameters": { + "id": 2698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2697, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2153:7:6", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "2145:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2145:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2144:17:6" + }, + "returnParameters": { + "id": 2702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2701, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "2200:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2700, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2200:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2199:15:6" + }, + "scope": 2786, + "src": "2127:670:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2784, + "nodeType": "Block", + "src": "2997:163:6", + "statements": [ + { + "assignments": [ + 2768 + ], + "declarations": [ + { + "constant": false, + "id": 2768, + "mutability": "mutable", + "name": "$", + "nameLocation": "3039:1:6", + "nodeType": "VariableDeclaration", + "scope": 2784, + "src": "3007:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2766, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "3007:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2650, + "src": "3007:23:6" + }, + "referencedDeclaration": 2650, + "src": "3007:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2771, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2769, + "name": "_getERC721URIStorageStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "3043:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721URIStorageStorage_$2650_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer)" + } + }, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3043:29:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3007:65:6" + }, + { + "expression": { + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2772, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2768, + "src": "3082:1:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2650_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3084:10:6", + "memberName": "_tokenURIs", + "nodeType": "MemberAccess", + "referencedDeclaration": 2649, + "src": "3082:12:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2776, + "indexExpression": { + "id": 2774, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2761, + "src": "3095:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3082:21:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2777, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2763, + "src": "3106:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3082:33:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2779, + "nodeType": "ExpressionStatement", + "src": "3082:33:6" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2781, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2761, + "src": "3145:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2780, + "name": "MetadataUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "3130:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3130:23:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2783, + "nodeType": "EmitStatement", + "src": "3125:28:6" + } + ] + }, + "documentation": { + "id": 2759, + "nodeType": "StructuredDocumentation", + "src": "2803:108:6", + "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Emits {MetadataUpdate}." + }, + "id": 2785, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nameLocation": "2925:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2761, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2946:7:6", + "nodeType": "VariableDeclaration", + "scope": 2785, + "src": "2938:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2938:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2763, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "2969:9:6", + "nodeType": "VariableDeclaration", + "scope": 2785, + "src": "2955:23:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2762, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2955:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2937:42:6" + }, + "returnParameters": { + "id": 2765, + "nodeType": "ParameterList", + "parameters": [], + "src": "2997:0:6" + }, + "scope": 2786, + "src": "2916:244:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2787, + "src": "577:2585:6", + "usedErrors": [ + 580, + 583, + 3376, + 3381, + 3390, + 3395, + 3400, + 3407, + 3412, + 3417 + ], + "usedEvents": [ + 588, + 3306, + 3313, + 4813, + 4822, + 4831 + ] + } + ], + "src": "128:3035:6" + }, + "id": 6 + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2832 + ], + "Initializable": [ + 817 + ] + }, + "id": 2833, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2788, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:7" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 2790, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2833, + "sourceUnit": 818, + "src": "126:63:7", + "symbolAliases": [ + { + "foreign": { + "id": 2789, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "134:13:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2792, + "name": "Initializable", + "nameLocations": [ + "728:13:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "728:13:7" + }, + "id": 2793, + "nodeType": "InheritanceSpecifier", + "src": "728:13:7" + } + ], + "canonicalName": "ContextUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2791, + "nodeType": "StructuredDocumentation", + "src": "191:496:7", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 2832, + "linearizedBaseContracts": [ + 2832, + 817 + ], + "name": "ContextUpgradeable", + "nameLocation": "706:18:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2798, + "nodeType": "Block", + "src": "800:7:7", + "statements": [] + }, + "id": 2799, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2796, + "kind": "modifierInvocation", + "modifierName": { + "id": 2795, + "name": "onlyInitializing", + "nameLocations": [ + "783:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "783:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "783:16:7" + } + ], + "name": "__Context_init", + "nameLocation": "757:14:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2794, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:2:7" + }, + "returnParameters": { + "id": 2797, + "nodeType": "ParameterList", + "parameters": [], + "src": "800:0:7" + }, + "scope": 2832, + "src": "748:59:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2804, + "nodeType": "Block", + "src": "875:7:7", + "statements": [] + }, + "id": 2805, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2802, + "kind": "modifierInvocation", + "modifierName": { + "id": 2801, + "name": "onlyInitializing", + "nameLocations": [ + "858:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "858:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "858:16:7" + } + ], + "name": "__Context_init_unchained", + "nameLocation": "822:24:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2800, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:2:7" + }, + "returnParameters": { + "id": 2803, + "nodeType": "ParameterList", + "parameters": [], + "src": "875:0:7" + }, + "scope": 2832, + "src": "813:69:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2813, + "nodeType": "Block", + "src": "949:34:7", + "statements": [ + { + "expression": { + "expression": { + "id": 2810, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "966:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "970:6:7", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "966:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2809, + "id": 2812, + "nodeType": "Return", + "src": "959:17:7" + } + ] + }, + "id": 2814, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "896:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2806, + "nodeType": "ParameterList", + "parameters": [], + "src": "906:2:7" + }, + "returnParameters": { + "id": 2809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2808, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2814, + "src": "940:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2807, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "940:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "939:9:7" + }, + "scope": 2832, + "src": "887:96:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2822, + "nodeType": "Block", + "src": "1056:32:7", + "statements": [ + { + "expression": { + "expression": { + "id": 2819, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1073:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1077:4:7", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "1073:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 2818, + "id": 2821, + "nodeType": "Return", + "src": "1066:15:7" + } + ] + }, + "id": 2823, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "998:8:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2815, + "nodeType": "ParameterList", + "parameters": [], + "src": "1006:2:7" + }, + "returnParameters": { + "id": 2818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2817, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2823, + "src": "1040:14:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1040:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1039:16:7" + }, + "scope": 2832, + "src": "989:99:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2830, + "nodeType": "Block", + "src": "1166:25:7", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1183:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2827, + "id": 2829, + "nodeType": "Return", + "src": "1176:8:7" + } + ] + }, + "id": 2831, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "1103:20:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2824, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:7" + }, + "returnParameters": { + "id": 2827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2826, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2831, + "src": "1157:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1156:9:7" + }, + "scope": 2832, + "src": "1094:97:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2833, + "src": "688:505:7", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "101:1093:7" + }, + "id": 7 + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2832 + ], + "Initializable": [ + 817 + ], + "PausableUpgradeable": [ + 3008 + ] + }, + "id": 3009, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2834, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:8" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 2836, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3009, + "sourceUnit": 2833, + "src": "128:67:8", + "symbolAliases": [ + { + "foreign": { + "id": 2835, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2832, + "src": "136:18:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 2838, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3009, + "sourceUnit": 818, + "src": "196:63:8", + "symbolAliases": [ + { + "foreign": { + "id": 2837, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "204:13:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2840, + "name": "Initializable", + "nameLocations": [ + "742:13:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "742:13:8" + }, + "id": 2841, + "nodeType": "InheritanceSpecifier", + "src": "742:13:8" + }, + { + "baseName": { + "id": 2842, + "name": "ContextUpgradeable", + "nameLocations": [ + "757:18:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2832, + "src": "757:18:8" + }, + "id": 2843, + "nodeType": "InheritanceSpecifier", + "src": "757:18:8" + } + ], + "canonicalName": "PausableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2839, + "nodeType": "StructuredDocumentation", + "src": "261:439:8", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 3008, + "linearizedBaseContracts": [ + 3008, + 2832, + 817 + ], + "name": "PausableUpgradeable", + "nameLocation": "719:19:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "PausableUpgradeable.PausableStorage", + "documentation": { + "id": 2844, + "nodeType": "StructuredDocumentation", + "src": "782:66:8", + "text": "@custom:storage-location erc7201:openzeppelin.storage.Pausable" + }, + "id": 2847, + "members": [ + { + "constant": false, + "id": 2846, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "891:7:8", + "nodeType": "VariableDeclaration", + "scope": 2847, + "src": "886:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2845, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "886:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "PausableStorage", + "nameLocation": "860:15:8", + "nodeType": "StructDefinition", + "scope": 3008, + "src": "853:52:8", + "visibility": "public" + }, + { + "constant": true, + "id": 2850, + "mutability": "constant", + "name": "PausableStorageLocation", + "nameLocation": "1048:23:8", + "nodeType": "VariableDeclaration", + "scope": 3008, + "src": "1023:117:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2848, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1023:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030", + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1074:66:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1", + "typeString": "int_const 9289...(69 digits omitted)...6832" + }, + "value": "0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300" + }, + "visibility": "private" + }, + { + "body": { + "id": 2857, + "nodeType": "Block", + "src": "1227:82:8", + "statements": [ + { + "AST": { + "nativeSrc": "1246:57:8", + "nodeType": "YulBlock", + "src": "1246:57:8", + "statements": [ + { + "nativeSrc": "1260:33:8", + "nodeType": "YulAssignment", + "src": "1260:33:8", + "value": { + "name": "PausableStorageLocation", + "nativeSrc": "1270:23:8", + "nodeType": "YulIdentifier", + "src": "1270:23:8" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1260:6:8", + "nodeType": "YulIdentifier", + "src": "1260:6:8" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2854, + "isOffset": false, + "isSlot": true, + "src": "1260:6:8", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2850, + "isOffset": false, + "isSlot": false, + "src": "1270:23:8", + "valueSize": 1 + } + ], + "id": 2856, + "nodeType": "InlineAssembly", + "src": "1237:66:8" + } + ] + }, + "id": 2858, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPausableStorage", + "nameLocation": "1156:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2851, + "nodeType": "ParameterList", + "parameters": [], + "src": "1175:2:8" + }, + "returnParameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2854, + "mutability": "mutable", + "name": "$", + "nameLocation": "1224:1:8", + "nodeType": "VariableDeclaration", + "scope": 2858, + "src": "1200:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2853, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2852, + "name": "PausableStorage", + "nameLocations": [ + "1200:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2847, + "src": "1200:15:8" + }, + "referencedDeclaration": 2847, + "src": "1200:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1199:27:8" + }, + "scope": 3008, + "src": "1147:162:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 2859, + "nodeType": "StructuredDocumentation", + "src": "1315:73:8", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 2863, + "name": "Paused", + "nameLocation": "1399:6:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 2862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2861, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "1414:7:8", + "nodeType": "VariableDeclaration", + "scope": 2863, + "src": "1406:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1406:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1405:17:8" + }, + "src": "1393:30:8" + }, + { + "anonymous": false, + "documentation": { + "id": 2864, + "nodeType": "StructuredDocumentation", + "src": "1429:70:8", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 2868, + "name": "Unpaused", + "nameLocation": "1510:8:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 2867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2866, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "1527:7:8", + "nodeType": "VariableDeclaration", + "scope": 2868, + "src": "1519:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1519:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1518:17:8" + }, + "src": "1504:32:8" + }, + { + "documentation": { + "id": 2869, + "nodeType": "StructuredDocumentation", + "src": "1542:76:8", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 2871, + "name": "EnforcedPause", + "nameLocation": "1629:13:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2870, + "nodeType": "ParameterList", + "parameters": [], + "src": "1642:2:8" + }, + "src": "1623:22:8" + }, + { + "documentation": { + "id": 2872, + "nodeType": "StructuredDocumentation", + "src": "1651:80:8", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 2874, + "name": "ExpectedPause", + "nameLocation": "1742:13:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2873, + "nodeType": "ParameterList", + "parameters": [], + "src": "1755:2:8" + }, + "src": "1736:22:8" + }, + { + "body": { + "id": 2883, + "nodeType": "Block", + "src": "1889:44:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2880, + "name": "__Pausable_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "1899:25:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1899:27:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2882, + "nodeType": "ExpressionStatement", + "src": "1899:27:8" + } + ] + }, + "documentation": { + "id": 2875, + "nodeType": "StructuredDocumentation", + "src": "1764:67:8", + "text": " @dev Initializes the contract in unpaused state." + }, + "id": 2884, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2878, + "kind": "modifierInvocation", + "modifierName": { + "id": 2877, + "name": "onlyInitializing", + "nameLocations": [ + "1872:16:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1872:16:8" + }, + "nodeType": "ModifierInvocation", + "src": "1872:16:8" + } + ], + "name": "__Pausable_init", + "nameLocation": "1845:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2876, + "nodeType": "ParameterList", + "parameters": [], + "src": "1860:2:8" + }, + "returnParameters": { + "id": 2879, + "nodeType": "ParameterList", + "parameters": [], + "src": "1889:0:8" + }, + "scope": 3008, + "src": "1836:97:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2901, + "nodeType": "Block", + "src": "2002:93:8", + "statements": [ + { + "assignments": [ + 2891 + ], + "declarations": [ + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "$", + "nameLocation": "2036:1:8", + "nodeType": "VariableDeclaration", + "scope": 2901, + "src": "2012:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2890, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2889, + "name": "PausableStorage", + "nameLocations": [ + "2012:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2847, + "src": "2012:15:8" + }, + "referencedDeclaration": 2847, + "src": "2012:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2894, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2892, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "2040:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2847_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2040:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2012:49:8" + }, + { + "expression": { + "id": 2899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2895, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2891, + "src": "2071:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2897, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2073:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "2071:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2083:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2071:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2900, + "nodeType": "ExpressionStatement", + "src": "2071:17:8" + } + ] + }, + "id": 2902, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2887, + "kind": "modifierInvocation", + "modifierName": { + "id": 2886, + "name": "onlyInitializing", + "nameLocations": [ + "1985:16:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1985:16:8" + }, + "nodeType": "ModifierInvocation", + "src": "1985:16:8" + } + ], + "name": "__Pausable_init_unchained", + "nameLocation": "1948:25:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2885, + "nodeType": "ParameterList", + "parameters": [], + "src": "1973:2:8" + }, + "returnParameters": { + "id": 2888, + "nodeType": "ParameterList", + "parameters": [], + "src": "2002:0:8" + }, + "scope": 3008, + "src": "1939:156:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2909, + "nodeType": "Block", + "src": "2306:47:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2905, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2946, + "src": "2316:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2316:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2907, + "nodeType": "ExpressionStatement", + "src": "2316:19:8" + }, + { + "id": 2908, + "nodeType": "PlaceholderStatement", + "src": "2345:1:8" + } + ] + }, + "documentation": { + "id": 2903, + "nodeType": "StructuredDocumentation", + "src": "2101:175:8", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 2910, + "name": "whenNotPaused", + "nameLocation": "2290:13:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2904, + "nodeType": "ParameterList", + "parameters": [], + "src": "2303:2:8" + }, + "src": "2281:72:8", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2917, + "nodeType": "Block", + "src": "2553:44:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2913, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "2563:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:16:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2915, + "nodeType": "ExpressionStatement", + "src": "2563:16:8" + }, + { + "id": 2916, + "nodeType": "PlaceholderStatement", + "src": "2589:1:8" + } + ] + }, + "documentation": { + "id": 2911, + "nodeType": "StructuredDocumentation", + "src": "2359:167:8", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 2918, + "name": "whenPaused", + "nameLocation": "2540:10:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2912, + "nodeType": "ParameterList", + "parameters": [], + "src": "2550:2:8" + }, + "src": "2531:66:8", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2933, + "nodeType": "Block", + "src": "2745:92:8", + "statements": [ + { + "assignments": [ + 2926 + ], + "declarations": [ + { + "constant": false, + "id": 2926, + "mutability": "mutable", + "name": "$", + "nameLocation": "2779:1:8", + "nodeType": "VariableDeclaration", + "scope": 2933, + "src": "2755:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2925, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2924, + "name": "PausableStorage", + "nameLocations": [ + "2755:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2847, + "src": "2755:15:8" + }, + "referencedDeclaration": 2847, + "src": "2755:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2929, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2927, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "2783:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2847_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2783:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2755:49:8" + }, + { + "expression": { + "expression": { + "id": 2930, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2926, + "src": "2821:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2931, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2823:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "2821:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2923, + "id": 2932, + "nodeType": "Return", + "src": "2814:16:8" + } + ] + }, + "documentation": { + "id": 2919, + "nodeType": "StructuredDocumentation", + "src": "2603:84:8", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 2934, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "2701:6:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2920, + "nodeType": "ParameterList", + "parameters": [], + "src": "2707:2:8" + }, + "returnParameters": { + "id": 2923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2922, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2934, + "src": "2739:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2921, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2739:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2738:6:8" + }, + "scope": 3008, + "src": "2692:145:8", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2945, + "nodeType": "Block", + "src": "2956:77:8", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2938, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2934, + "src": "2970:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2970:8:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2944, + "nodeType": "IfStatement", + "src": "2966:61:8", + "trueBody": { + "id": 2943, + "nodeType": "Block", + "src": "2980:47:8", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2940, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "3001:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3001:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2942, + "nodeType": "RevertStatement", + "src": "2994:22:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 2935, + "nodeType": "StructuredDocumentation", + "src": "2843:57:8", + "text": " @dev Throws if the contract is paused." + }, + "id": 2946, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "2914:17:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2936, + "nodeType": "ParameterList", + "parameters": [], + "src": "2931:2:8" + }, + "returnParameters": { + "id": 2937, + "nodeType": "ParameterList", + "parameters": [], + "src": "2956:0:8" + }, + "scope": 3008, + "src": "2905:128:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2958, + "nodeType": "Block", + "src": "3153:78:8", + "statements": [ + { + "condition": { + "id": 2952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3167:9:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2950, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2934, + "src": "3168:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3168:8:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2957, + "nodeType": "IfStatement", + "src": "3163:62:8", + "trueBody": { + "id": 2956, + "nodeType": "Block", + "src": "3178:47:8", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2953, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2874, + "src": "3199:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3199:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2955, + "nodeType": "RevertStatement", + "src": "3192:22:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 2947, + "nodeType": "StructuredDocumentation", + "src": "3039:61:8", + "text": " @dev Throws if the contract is not paused." + }, + "id": 2959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "3114:14:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2948, + "nodeType": "ParameterList", + "parameters": [], + "src": "3128:2:8" + }, + "returnParameters": { + "id": 2949, + "nodeType": "ParameterList", + "parameters": [], + "src": "3153:0:8" + }, + "scope": 3008, + "src": "3105:126:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2982, + "nodeType": "Block", + "src": "3415:127:8", + "statements": [ + { + "assignments": [ + 2967 + ], + "declarations": [ + { + "constant": false, + "id": 2967, + "mutability": "mutable", + "name": "$", + "nameLocation": "3449:1:8", + "nodeType": "VariableDeclaration", + "scope": 2982, + "src": "3425:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2966, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2965, + "name": "PausableStorage", + "nameLocations": [ + "3425:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2847, + "src": "3425:15:8" + }, + "referencedDeclaration": 2847, + "src": "3425:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2970, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2968, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "3453:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2847_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3453:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3425:49:8" + }, + { + "expression": { + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2971, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2967, + "src": "3484:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2973, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3486:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "3484:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3496:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3484:16:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2976, + "nodeType": "ExpressionStatement", + "src": "3484:16:8" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2978, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "3522:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3522:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2977, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2863, + "src": "3515:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3515:20:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2981, + "nodeType": "EmitStatement", + "src": "3510:25:8" + } + ] + }, + "documentation": { + "id": 2960, + "nodeType": "StructuredDocumentation", + "src": "3237:124:8", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 2983, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2963, + "kind": "modifierInvocation", + "modifierName": { + "id": 2962, + "name": "whenNotPaused", + "nameLocations": [ + "3401:13:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2910, + "src": "3401:13:8" + }, + "nodeType": "ModifierInvocation", + "src": "3401:13:8" + } + ], + "name": "_pause", + "nameLocation": "3375:6:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2961, + "nodeType": "ParameterList", + "parameters": [], + "src": "3381:2:8" + }, + "returnParameters": { + "id": 2964, + "nodeType": "ParameterList", + "parameters": [], + "src": "3415:0:8" + }, + "scope": 3008, + "src": "3366:176:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3006, + "nodeType": "Block", + "src": "3722:130:8", + "statements": [ + { + "assignments": [ + 2991 + ], + "declarations": [ + { + "constant": false, + "id": 2991, + "mutability": "mutable", + "name": "$", + "nameLocation": "3756:1:8", + "nodeType": "VariableDeclaration", + "scope": 3006, + "src": "3732:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2990, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2989, + "name": "PausableStorage", + "nameLocations": [ + "3732:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2847, + "src": "3732:15:8" + }, + "referencedDeclaration": 2847, + "src": "3732:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2994, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2992, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "3760:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2847_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3760:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3732:49:8" + }, + { + "expression": { + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2995, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "3791:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2847_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2997, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3793:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "3791:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3803:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3791:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3000, + "nodeType": "ExpressionStatement", + "src": "3791:17:8" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3002, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "3832:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3832:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3001, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2868, + "src": "3823:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3823:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3005, + "nodeType": "EmitStatement", + "src": "3818:27:8" + } + ] + }, + "documentation": { + "id": 2984, + "nodeType": "StructuredDocumentation", + "src": "3548:121:8", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 3007, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2987, + "kind": "modifierInvocation", + "modifierName": { + "id": 2986, + "name": "whenPaused", + "nameLocations": [ + "3711:10:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2918, + "src": "3711:10:8" + }, + "nodeType": "ModifierInvocation", + "src": "3711:10:8" + } + ], + "name": "_unpause", + "nameLocation": "3683:8:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2985, + "nodeType": "ParameterList", + "parameters": [], + "src": "3691:2:8" + }, + "returnParameters": { + "id": 2988, + "nodeType": "ParameterList", + "parameters": [], + "src": "3722:0:8" + }, + "scope": 3008, + "src": "3674:178:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3009, + "src": "701:3153:8", + "usedErrors": [ + 580, + 583, + 2871, + 2874 + ], + "usedEvents": [ + 588, + 2863, + 2868 + ] + } + ], + "src": "102:3753:8" + }, + "id": 8 + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "exportedSymbols": { + "Initializable": [ + 817 + ], + "ReentrancyGuardUpgradeable": [ + 3137 + ] + }, + "id": 3138, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3010, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:9" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 3012, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3138, + "sourceUnit": 818, + "src": "134:63:9", + "symbolAliases": [ + { + "foreign": { + "id": 3011, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "142:13:9", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 3014, + "name": "Initializable", + "nameLocations": [ + "998:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "998:13:9" + }, + "id": 3015, + "nodeType": "InheritanceSpecifier", + "src": "998:13:9" + } + ], + "canonicalName": "ReentrancyGuardUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3013, + "nodeType": "StructuredDocumentation", + "src": "199:750:9", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 3137, + "linearizedBaseContracts": [ + 3137, + 817 + ], + "name": "ReentrancyGuardUpgradeable", + "nameLocation": "968:26:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3018, + "mutability": "constant", + "name": "NOT_ENTERED", + "nameLocation": "1791:11:9", + "nodeType": "VariableDeclaration", + "scope": 3137, + "src": "1766:40:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1766:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1805:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 3021, + "mutability": "constant", + "name": "ENTERED", + "nameLocation": "1837:7:9", + "nodeType": "VariableDeclaration", + "scope": 3137, + "src": "1812:36:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1812:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 3020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1847:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "canonicalName": "ReentrancyGuardUpgradeable.ReentrancyGuardStorage", + "documentation": { + "id": 3022, + "nodeType": "StructuredDocumentation", + "src": "1855:73:9", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard" + }, + "id": 3025, + "members": [ + { + "constant": false, + "id": 3024, + "mutability": "mutable", + "name": "_status", + "nameLocation": "1981:7:9", + "nodeType": "VariableDeclaration", + "scope": 3025, + "src": "1973:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1973:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "ReentrancyGuardStorage", + "nameLocation": "1940:22:9", + "nodeType": "StructDefinition", + "scope": 3137, + "src": "1933:62:9", + "visibility": "public" + }, + { + "constant": true, + "id": 3028, + "mutability": "constant", + "name": "ReentrancyGuardStorageLocation", + "nameLocation": "2145:30:9", + "nodeType": "VariableDeclaration", + "scope": 3137, + "src": "2120:124:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3026, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2120:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030", + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:66:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1", + "typeString": "int_const 7031...(69 digits omitted)...8416" + }, + "value": "0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00" + }, + "visibility": "private" + }, + { + "body": { + "id": 3035, + "nodeType": "Block", + "src": "2345:89:9", + "statements": [ + { + "AST": { + "nativeSrc": "2364:64:9", + "nodeType": "YulBlock", + "src": "2364:64:9", + "statements": [ + { + "nativeSrc": "2378:40:9", + "nodeType": "YulAssignment", + "src": "2378:40:9", + "value": { + "name": "ReentrancyGuardStorageLocation", + "nativeSrc": "2388:30:9", + "nodeType": "YulIdentifier", + "src": "2388:30:9" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2378:6:9", + "nodeType": "YulIdentifier", + "src": "2378:6:9" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3032, + "isOffset": false, + "isSlot": true, + "src": "2378:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 3028, + "isOffset": false, + "isSlot": false, + "src": "2388:30:9", + "valueSize": 1 + } + ], + "id": 3034, + "nodeType": "InlineAssembly", + "src": "2355:73:9" + } + ] + }, + "id": 3036, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getReentrancyGuardStorage", + "nameLocation": "2260:26:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3029, + "nodeType": "ParameterList", + "parameters": [], + "src": "2286:2:9" + }, + "returnParameters": { + "id": 3033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3032, + "mutability": "mutable", + "name": "$", + "nameLocation": "2342:1:9", + "nodeType": "VariableDeclaration", + "scope": 3036, + "src": "2311:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3031, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3030, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2311:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3025, + "src": "2311:22:9" + }, + "referencedDeclaration": 3025, + "src": "2311:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2310:34:9" + }, + "scope": 3137, + "src": "2251:183:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 3037, + "nodeType": "StructuredDocumentation", + "src": "2440:52:9", + "text": " @dev Unauthorized reentrant call." + }, + "errorSelector": "3ee5aeb5", + "id": 3039, + "name": "ReentrancyGuardReentrantCall", + "nameLocation": "2503:28:9", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [], + "src": "2531:2:9" + }, + "src": "2497:37:9" + }, + { + "body": { + "id": 3047, + "nodeType": "Block", + "src": "2600:51:9", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3044, + "name": "__ReentrancyGuard_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3066, + "src": "2610:32:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2610:34:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3046, + "nodeType": "ExpressionStatement", + "src": "2610:34:9" + } + ] + }, + "id": 3048, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3042, + "kind": "modifierInvocation", + "modifierName": { + "id": 3041, + "name": "onlyInitializing", + "nameLocations": [ + "2583:16:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2583:16:9" + }, + "nodeType": "ModifierInvocation", + "src": "2583:16:9" + } + ], + "name": "__ReentrancyGuard_init", + "nameLocation": "2549:22:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3040, + "nodeType": "ParameterList", + "parameters": [], + "src": "2571:2:9" + }, + "returnParameters": { + "id": 3043, + "nodeType": "ParameterList", + "parameters": [], + "src": "2600:0:9" + }, + "scope": 3137, + "src": "2540:111:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3065, + "nodeType": "Block", + "src": "2727:113:9", + "statements": [ + { + "assignments": [ + 3055 + ], + "declarations": [ + { + "constant": false, + "id": 3055, + "mutability": "mutable", + "name": "$", + "nameLocation": "2768:1:9", + "nodeType": "VariableDeclaration", + "scope": 3065, + "src": "2737:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3054, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3053, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2737:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3025, + "src": "2737:22:9" + }, + "referencedDeclaration": 3025, + "src": "2737:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3058, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3056, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "2772:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$3025_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2772:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2737:63:9" + }, + { + "expression": { + "id": 3063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3059, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3055, + "src": "2810:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3061, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2812:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 3024, + "src": "2810:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3062, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3018, + "src": "2822:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2810:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3064, + "nodeType": "ExpressionStatement", + "src": "2810:23:9" + } + ] + }, + "id": 3066, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3051, + "kind": "modifierInvocation", + "modifierName": { + "id": 3050, + "name": "onlyInitializing", + "nameLocations": [ + "2710:16:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2710:16:9" + }, + "nodeType": "ModifierInvocation", + "src": "2710:16:9" + } + ], + "name": "__ReentrancyGuard_init_unchained", + "nameLocation": "2666:32:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3049, + "nodeType": "ParameterList", + "parameters": [], + "src": "2698:2:9" + }, + "returnParameters": { + "id": 3052, + "nodeType": "ParameterList", + "parameters": [], + "src": "2727:0:9" + }, + "scope": 3137, + "src": "2657:183:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3076, + "nodeType": "Block", + "src": "3241:79:9", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3069, + "name": "_nonReentrantBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3102, + "src": "3251:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3251:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3071, + "nodeType": "ExpressionStatement", + "src": "3251:21:9" + }, + { + "id": 3072, + "nodeType": "PlaceholderStatement", + "src": "3282:1:9" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3073, + "name": "_nonReentrantAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "3293:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3293:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3075, + "nodeType": "ExpressionStatement", + "src": "3293:20:9" + } + ] + }, + "documentation": { + "id": 3067, + "nodeType": "StructuredDocumentation", + "src": "2846:366:9", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work." + }, + "id": 3077, + "name": "nonReentrant", + "nameLocation": "3226:12:9", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3068, + "nodeType": "ParameterList", + "parameters": [], + "src": "3238:2:9" + }, + "src": "3217:103:9", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3101, + "nodeType": "Block", + "src": "3365:345:9", + "statements": [ + { + "assignments": [ + 3082 + ], + "declarations": [ + { + "constant": false, + "id": 3082, + "mutability": "mutable", + "name": "$", + "nameLocation": "3406:1:9", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "3375:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3081, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3080, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3375:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3025, + "src": "3375:22:9" + }, + "referencedDeclaration": 3025, + "src": "3375:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3085, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3083, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "3410:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$3025_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3410:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3375:63:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3086, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "3526:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3528:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 3024, + "src": "3526:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3088, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "3539:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3526:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3094, + "nodeType": "IfStatement", + "src": "3522:88:9", + "trueBody": { + "id": 3093, + "nodeType": "Block", + "src": "3548:62:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3090, + "name": "ReentrancyGuardReentrantCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3569:28:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3569:30:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3092, + "nodeType": "RevertStatement", + "src": "3562:37:9" + } + ] + } + }, + { + "expression": { + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3095, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "3684:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3686:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 3024, + "src": "3684:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3098, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "3696:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3684:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3100, + "nodeType": "ExpressionStatement", + "src": "3684:19:9" + } + ] + }, + "id": 3102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantBefore", + "nameLocation": "3335:19:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3078, + "nodeType": "ParameterList", + "parameters": [], + "src": "3354:2:9" + }, + "returnParameters": { + "id": 3079, + "nodeType": "ParameterList", + "parameters": [], + "src": "3365:0:9" + }, + "scope": 3137, + "src": "3326:384:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3117, + "nodeType": "Block", + "src": "3754:245:9", + "statements": [ + { + "assignments": [ + 3107 + ], + "declarations": [ + { + "constant": false, + "id": 3107, + "mutability": "mutable", + "name": "$", + "nameLocation": "3795:1:9", + "nodeType": "VariableDeclaration", + "scope": 3117, + "src": "3764:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3106, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3105, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3764:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3025, + "src": "3764:22:9" + }, + "referencedDeclaration": 3025, + "src": "3764:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3110, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3108, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "3799:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$3025_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3799:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3764:63:9" + }, + { + "expression": { + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3111, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3107, + "src": "3969:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3971:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 3024, + "src": "3969:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3114, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3018, + "src": "3981:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3969:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3116, + "nodeType": "ExpressionStatement", + "src": "3969:23:9" + } + ] + }, + "id": 3118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantAfter", + "nameLocation": "3725:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3103, + "nodeType": "ParameterList", + "parameters": [], + "src": "3743:2:9" + }, + "returnParameters": { + "id": 3104, + "nodeType": "ParameterList", + "parameters": [], + "src": "3754:0:9" + }, + "scope": 3137, + "src": "3716:283:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3135, + "nodeType": "Block", + "src": "4242:117:9", + "statements": [ + { + "assignments": [ + 3126 + ], + "declarations": [ + { + "constant": false, + "id": 3126, + "mutability": "mutable", + "name": "$", + "nameLocation": "4283:1:9", + "nodeType": "VariableDeclaration", + "scope": 3135, + "src": "4252:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3125, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3124, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "4252:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3025, + "src": "4252:22:9" + }, + "referencedDeclaration": 3025, + "src": "4252:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3129, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3127, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "4287:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$3025_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4287:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4252:63:9" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3130, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3126, + "src": "4332:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$3025_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3131, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4334:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 3024, + "src": "4332:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3132, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "4345:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4332:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3123, + "id": 3134, + "nodeType": "Return", + "src": "4325:27:9" + } + ] + }, + "documentation": { + "id": 3119, + "nodeType": "StructuredDocumentation", + "src": "4005:168:9", + "text": " @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack." + }, + "id": 3136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reentrancyGuardEntered", + "nameLocation": "4187:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3120, + "nodeType": "ParameterList", + "parameters": [], + "src": "4210:2:9" + }, + "returnParameters": { + "id": 3123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3122, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3136, + "src": "4236:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3121, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4236:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4235:6:9" + }, + "scope": 3137, + "src": "4178:181:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3138, + "src": "950:3411:9", + "usedErrors": [ + 580, + 583, + 3039 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "109:4253:9" + }, + "id": 9 + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "exportedSymbols": { + "ERC165Upgradeable": [ + 3177 + ], + "IERC165": [ + 6000 + ], + "Initializable": [ + 817 + ] + }, + "id": 3178, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3139, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:10" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 3141, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3178, + "sourceUnit": 6001, + "src": "140:80:10", + "symbolAliases": [ + { + "foreign": { + "id": 3140, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "148:7:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 3143, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3178, + "sourceUnit": 818, + "src": "221:66:10", + "symbolAliases": [ + { + "foreign": { + "id": 3142, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "229:13:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 3145, + "name": "Initializable", + "nameLocations": [ + "807:13:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "807:13:10" + }, + "id": 3146, + "nodeType": "InheritanceSpecifier", + "src": "807:13:10" + }, + { + "baseName": { + "id": 3147, + "name": "IERC165", + "nameLocations": [ + "822:7:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "822:7:10" + }, + "id": 3148, + "nodeType": "InheritanceSpecifier", + "src": "822:7:10" + } + ], + "canonicalName": "ERC165Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3144, + "nodeType": "StructuredDocumentation", + "src": "289:478:10", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```" + }, + "fullyImplemented": true, + "id": 3177, + "linearizedBaseContracts": [ + 3177, + 6000, + 817 + ], + "name": "ERC165Upgradeable", + "nameLocation": "786:17:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3153, + "nodeType": "Block", + "src": "887:7:10", + "statements": [] + }, + "id": 3154, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3151, + "kind": "modifierInvocation", + "modifierName": { + "id": 3150, + "name": "onlyInitializing", + "nameLocations": [ + "870:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "870:16:10" + }, + "nodeType": "ModifierInvocation", + "src": "870:16:10" + } + ], + "name": "__ERC165_init", + "nameLocation": "845:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3149, + "nodeType": "ParameterList", + "parameters": [], + "src": "858:2:10" + }, + "returnParameters": { + "id": 3152, + "nodeType": "ParameterList", + "parameters": [], + "src": "887:0:10" + }, + "scope": 3177, + "src": "836:58:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3159, + "nodeType": "Block", + "src": "961:7:10", + "statements": [] + }, + "id": 3160, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3157, + "kind": "modifierInvocation", + "modifierName": { + "id": 3156, + "name": "onlyInitializing", + "nameLocations": [ + "944:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "944:16:10" + }, + "nodeType": "ModifierInvocation", + "src": "944:16:10" + } + ], + "name": "__ERC165_init_unchained", + "nameLocation": "909:23:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3155, + "nodeType": "ParameterList", + "parameters": [], + "src": "932:2:10" + }, + "returnParameters": { + "id": 3158, + "nodeType": "ParameterList", + "parameters": [], + "src": "961:0:10" + }, + "scope": 3177, + "src": "900:68:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 5999 + ], + "body": { + "id": 3175, + "nodeType": "Block", + "src": "1116:64:10", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3168, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1133:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3170, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "1153:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC165_$6000_$", + "typeString": "type(contract IERC165)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC165_$6000_$", + "typeString": "type(contract IERC165)" + } + ], + "id": 3169, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1148:4:10", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1148:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$6000", + "typeString": "type(contract IERC165)" + } + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1162:11:10", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1148:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1133:40:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3167, + "id": 3174, + "nodeType": "Return", + "src": "1126:47:10" + } + ] + }, + "documentation": { + "id": 3161, + "nodeType": "StructuredDocumentation", + "src": "973:56:10", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 3176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1043:17:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3163, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1068:11:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "1061:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3162, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1061:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1060:20:10" + }, + "returnParameters": { + "id": 3167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3166, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "1110:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3165, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1110:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1109:6:10" + }, + "scope": 3177, + "src": "1034:146:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 3178, + "src": "768:414:10", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "114:1069:10" + }, + "id": 10 + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "exportedSymbols": { + "IAccessControl": [ + 3260 + ] + }, + "id": 3261, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3179, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:11" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccessControl", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3180, + "nodeType": "StructuredDocumentation", + "src": "135:89:11", + "text": " @dev External interface of AccessControl declared to support ERC165 detection." + }, + "fullyImplemented": false, + "id": 3260, + "linearizedBaseContracts": [ + 3260 + ], + "name": "IAccessControl", + "nameLocation": "235:14:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3181, + "nodeType": "StructuredDocumentation", + "src": "256:56:11", + "text": " @dev The `account` is missing a role." + }, + "errorSelector": "e2517d3f", + "id": 3187, + "name": "AccessControlUnauthorizedAccount", + "nameLocation": "323:32:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3183, + "mutability": "mutable", + "name": "account", + "nameLocation": "364:7:11", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "356:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "356:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3185, + "mutability": "mutable", + "name": "neededRole", + "nameLocation": "381:10:11", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "373:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "373:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "355:37:11" + }, + "src": "317:76:11" + }, + { + "documentation": { + "id": 3188, + "nodeType": "StructuredDocumentation", + "src": "399:148:11", + "text": " @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + }, + "errorSelector": "6697b232", + "id": 3190, + "name": "AccessControlBadConfirmation", + "nameLocation": "558:28:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3189, + "nodeType": "ParameterList", + "parameters": [], + "src": "586:2:11" + }, + "src": "552:37:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3191, + "nodeType": "StructuredDocumentation", + "src": "595:254:11", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this." + }, + "eventSelector": "bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", + "id": 3199, + "name": "RoleAdminChanged", + "nameLocation": "860:16:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3193, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "893:4:11", + "nodeType": "VariableDeclaration", + "scope": 3199, + "src": "877:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "877:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3195, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "915:17:11", + "nodeType": "VariableDeclaration", + "scope": 3199, + "src": "899:33:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3194, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "899:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3197, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "950:12:11", + "nodeType": "VariableDeclaration", + "scope": 3199, + "src": "934:28:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3196, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "934:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "876:87:11" + }, + "src": "854:110:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3200, + "nodeType": "StructuredDocumentation", + "src": "970:212:11", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}." + }, + "eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "id": 3208, + "name": "RoleGranted", + "nameLocation": "1193:11:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3202, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1221:4:11", + "nodeType": "VariableDeclaration", + "scope": 3208, + "src": "1205:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3201, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1205:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3204, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1243:7:11", + "nodeType": "VariableDeclaration", + "scope": 3208, + "src": "1227:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1227:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3206, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1268:6:11", + "nodeType": "VariableDeclaration", + "scope": 3208, + "src": "1252:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1204:71:11" + }, + "src": "1187:89:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3209, + "nodeType": "StructuredDocumentation", + "src": "1282:275:11", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "eventSelector": "f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b", + "id": 3217, + "name": "RoleRevoked", + "nameLocation": "1568:11:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3211, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1596:4:11", + "nodeType": "VariableDeclaration", + "scope": 3217, + "src": "1580:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3210, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1580:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3213, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1618:7:11", + "nodeType": "VariableDeclaration", + "scope": 3217, + "src": "1602:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1602:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3215, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1643:6:11", + "nodeType": "VariableDeclaration", + "scope": 3217, + "src": "1627:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1627:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1579:71:11" + }, + "src": "1562:89:11" + }, + { + "documentation": { + "id": 3218, + "nodeType": "StructuredDocumentation", + "src": "1657:76:11", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 3227, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "1747:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3220, + "mutability": "mutable", + "name": "role", + "nameLocation": "1763:4:11", + "nodeType": "VariableDeclaration", + "scope": 3227, + "src": "1755:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3219, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1755:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3222, + "mutability": "mutable", + "name": "account", + "nameLocation": "1777:7:11", + "nodeType": "VariableDeclaration", + "scope": 3227, + "src": "1769:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1769:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1754:31:11" + }, + "returnParameters": { + "id": 3226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3225, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3227, + "src": "1809:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3224, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1809:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1808:6:11" + }, + "scope": 3260, + "src": "1738:77:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3228, + "nodeType": "StructuredDocumentation", + "src": "1821:184:11", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 3235, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "2019:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3230, + "mutability": "mutable", + "name": "role", + "nameLocation": "2040:4:11", + "nodeType": "VariableDeclaration", + "scope": 3235, + "src": "2032:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3229, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2032:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2031:14:11" + }, + "returnParameters": { + "id": 3234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3233, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3235, + "src": "2069:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3232, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2069:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2068:9:11" + }, + "scope": 3260, + "src": "2010:68:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3236, + "nodeType": "StructuredDocumentation", + "src": "2084:239:11", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 3243, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "2337:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3238, + "mutability": "mutable", + "name": "role", + "nameLocation": "2355:4:11", + "nodeType": "VariableDeclaration", + "scope": 3243, + "src": "2347:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3237, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2347:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3240, + "mutability": "mutable", + "name": "account", + "nameLocation": "2369:7:11", + "nodeType": "VariableDeclaration", + "scope": 3243, + "src": "2361:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2361:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2346:31:11" + }, + "returnParameters": { + "id": 3242, + "nodeType": "ParameterList", + "parameters": [], + "src": "2386:0:11" + }, + "scope": 3260, + "src": "2328:59:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3244, + "nodeType": "StructuredDocumentation", + "src": "2393:223:11", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 3251, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "2630:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3246, + "mutability": "mutable", + "name": "role", + "nameLocation": "2649:4:11", + "nodeType": "VariableDeclaration", + "scope": 3251, + "src": "2641:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3245, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2641:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3248, + "mutability": "mutable", + "name": "account", + "nameLocation": "2663:7:11", + "nodeType": "VariableDeclaration", + "scope": 3251, + "src": "2655:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2655:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2640:31:11" + }, + "returnParameters": { + "id": 3250, + "nodeType": "ParameterList", + "parameters": [], + "src": "2680:0:11" + }, + "scope": 3260, + "src": "2621:60:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3252, + "nodeType": "StructuredDocumentation", + "src": "2687:491:11", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`." + }, + "functionSelector": "36568abe", + "id": 3259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "3192:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3254, + "mutability": "mutable", + "name": "role", + "nameLocation": "3213:4:11", + "nodeType": "VariableDeclaration", + "scope": 3259, + "src": "3205:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3253, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3205:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3256, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "3227:18:11", + "nodeType": "VariableDeclaration", + "scope": 3259, + "src": "3219:26:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3255, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3219:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3204:42:11" + }, + "returnParameters": { + "id": 3258, + "nodeType": "ParameterList", + "parameters": [], + "src": "3255:0:11" + }, + "scope": 3260, + "src": "3183:73:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3261, + "src": "225:3033:11", + "usedErrors": [ + 3187, + 3190 + ], + "usedEvents": [ + 3199, + 3208, + 3217 + ] + } + ], + "src": "109:3150:11" + }, + "id": 11 + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "exportedSymbols": { + "IAccessControl": [ + 3260 + ], + "IAccessControlEnumerable": [ + 3286 + ] + }, + "id": 3287, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3262, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "130:24:12" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "../IAccessControl.sol", + "id": 3264, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3287, + "sourceUnit": 3261, + "src": "156:53:12", + "symbolAliases": [ + { + "foreign": { + "id": 3263, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3260, + "src": "164:14:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3266, + "name": "IAccessControl", + "nameLocations": [ + "349:14:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3260, + "src": "349:14:12" + }, + "id": 3267, + "nodeType": "InheritanceSpecifier", + "src": "349:14:12" + } + ], + "canonicalName": "IAccessControlEnumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3265, + "nodeType": "StructuredDocumentation", + "src": "211:99:12", + "text": " @dev External interface of AccessControlEnumerable declared to support ERC165 detection." + }, + "fullyImplemented": false, + "id": 3286, + "linearizedBaseContracts": [ + 3286, + 3260 + ], + "name": "IAccessControlEnumerable", + "nameLocation": "321:24:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3268, + "nodeType": "StructuredDocumentation", + "src": "370:574:12", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 3277, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "958:13:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3270, + "mutability": "mutable", + "name": "role", + "nameLocation": "980:4:12", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "972:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "972:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3272, + "mutability": "mutable", + "name": "index", + "nameLocation": "994:5:12", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "986:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "986:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "971:29:12" + }, + "returnParameters": { + "id": 3276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3275, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "1024:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1024:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1023:9:12" + }, + "scope": 3286, + "src": "949:84:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3278, + "nodeType": "StructuredDocumentation", + "src": "1039:157:12", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 3285, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "1210:18:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3280, + "mutability": "mutable", + "name": "role", + "nameLocation": "1237:4:12", + "nodeType": "VariableDeclaration", + "scope": 3285, + "src": "1229:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3279, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1229:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1228:14:12" + }, + "returnParameters": { + "id": 3284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3283, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3285, + "src": "1266:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1266:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1265:9:12" + }, + "scope": 3286, + "src": "1201:74:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3287, + "src": "311:966:12", + "usedErrors": [ + 3187, + 3190 + ], + "usedEvents": [ + 3199, + 3208, + 3217 + ] + } + ], + "src": "130:1148:12" + }, + "id": 12 + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 6000 + ] + }, + "id": 3291, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3288, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:13" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../utils/introspection/IERC165.sol", + "id": 3290, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3291, + "sourceUnit": 6001, + "src": "132:59:13", + "symbolAliases": [ + { + "foreign": { + "id": 3289, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "140:7:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "106:86:13" + }, + "id": 13 + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "exportedSymbols": { + "IERC165": [ + 6000 + ], + "IERC4906": [ + 3314 + ], + "IERC721": [ + 4914 + ] + }, + "id": 3315, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3292, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:14" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "file": "./IERC165.sol", + "id": 3294, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3315, + "sourceUnit": 3291, + "src": "133:38:14", + "symbolAliases": [ + { + "foreign": { + "id": 3293, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "141:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC721.sol", + "file": "./IERC721.sol", + "id": 3296, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3315, + "sourceUnit": 3319, + "src": "172:38:14", + "symbolAliases": [ + { + "foreign": { + "id": 3295, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "180:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3298, + "name": "IERC165", + "nameLocations": [ + "279:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "279:7:14" + }, + "id": 3299, + "nodeType": "InheritanceSpecifier", + "src": "279:7:14" + }, + { + "baseName": { + "id": 3300, + "name": "IERC721", + "nameLocations": [ + "288:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "288:7:14" + }, + "id": 3301, + "nodeType": "InheritanceSpecifier", + "src": "288:7:14" + } + ], + "canonicalName": "IERC4906", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3297, + "nodeType": "StructuredDocumentation", + "src": "212:45:14", + "text": "@title EIP-721 Metadata Update Extension" + }, + "fullyImplemented": false, + "id": 3314, + "linearizedBaseContracts": [ + 3314, + 4914, + 6000 + ], + "name": "IERC4906", + "nameLocation": "267:8:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 3302, + "nodeType": "StructuredDocumentation", + "src": "302:201:14", + "text": "@dev This event emits when the metadata of a token is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFT." + }, + "eventSelector": "f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7", + "id": 3306, + "name": "MetadataUpdate", + "nameLocation": "514:14:14", + "nodeType": "EventDefinition", + "parameters": { + "id": 3305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3304, + "indexed": false, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "537:8:14", + "nodeType": "VariableDeclaration", + "scope": 3306, + "src": "529:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "529:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "528:18:14" + }, + "src": "508:39:14" + }, + { + "anonymous": false, + "documentation": { + "id": 3307, + "nodeType": "StructuredDocumentation", + "src": "553:212:14", + "text": "@dev This event emits when the metadata of a range of tokens is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFTs." + }, + "eventSelector": "6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c", + "id": 3313, + "name": "BatchMetadataUpdate", + "nameLocation": "776:19:14", + "nodeType": "EventDefinition", + "parameters": { + "id": 3312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3309, + "indexed": false, + "mutability": "mutable", + "name": "_fromTokenId", + "nameLocation": "804:12:14", + "nodeType": "VariableDeclaration", + "scope": 3313, + "src": "796:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3311, + "indexed": false, + "mutability": "mutable", + "name": "_toTokenId", + "nameLocation": "826:10:14", + "nodeType": "VariableDeclaration", + "scope": 3313, + "src": "818:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "818:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "795:42:14" + }, + "src": "770:68:14" + } + ], + "scope": 3315, + "src": "257:583:14", + "usedErrors": [], + "usedEvents": [ + 3306, + 3313, + 4813, + 4822, + 4831 + ] + } + ], + "src": "107:734:14" + }, + "id": 14 + }, + "@openzeppelin/contracts/interfaces/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 4914 + ] + }, + "id": 3319, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3316, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:15" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../token/ERC721/IERC721.sol", + "id": 3318, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3319, + "sourceUnit": 4915, + "src": "132:52:15", + "symbolAliases": [ + { + "foreign": { + "id": 3317, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "140:7:15", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "106:79:15" + }, + "id": 15 + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "exportedSymbols": { + "IERC1822Proxiable": [ + 3328 + ] + }, + "id": 3329, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3320, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:16" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1822Proxiable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3321, + "nodeType": "StructuredDocumentation", + "src": "139:203:16", + "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation." + }, + "fullyImplemented": false, + "id": 3328, + "linearizedBaseContracts": [ + 3328 + ], + "name": "IERC1822Proxiable", + "nameLocation": "353:17:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3322, + "nodeType": "StructuredDocumentation", + "src": "377:438:16", + "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy." + }, + "functionSelector": "52d1902d", + "id": 3327, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "proxiableUUID", + "nameLocation": "829:13:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3323, + "nodeType": "ParameterList", + "parameters": [], + "src": "842:2:16" + }, + "returnParameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3325, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3327, + "src": "868:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3324, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "868:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "867:9:16" + }, + "scope": 3328, + "src": "820:57:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3329, + "src": "343:536:16", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "113:767:16" + }, + "id": 16 + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "exportedSymbols": { + "IERC1155Errors": [ + 3465 + ], + "IERC20Errors": [ + 3370 + ], + "IERC721Errors": [ + 3418 + ] + }, + "id": 3466, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3330, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:17" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3331, + "nodeType": "StructuredDocumentation", + "src": "138:139:17", + "text": " @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens." + }, + "fullyImplemented": true, + "id": 3370, + "linearizedBaseContracts": [ + 3370 + ], + "name": "IERC20Errors", + "nameLocation": "288:12:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3332, + "nodeType": "StructuredDocumentation", + "src": "307:309:17", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "e450d38c", + "id": 3340, + "name": "ERC20InsufficientBalance", + "nameLocation": "627:24:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3334, + "mutability": "mutable", + "name": "sender", + "nameLocation": "660:6:17", + "nodeType": "VariableDeclaration", + "scope": 3340, + "src": "652:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "652:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3336, + "mutability": "mutable", + "name": "balance", + "nameLocation": "676:7:17", + "nodeType": "VariableDeclaration", + "scope": 3340, + "src": "668:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "668:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3338, + "mutability": "mutable", + "name": "needed", + "nameLocation": "693:6:17", + "nodeType": "VariableDeclaration", + "scope": 3340, + "src": "685:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "685:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "651:49:17" + }, + "src": "621:80:17" + }, + { + "documentation": { + "id": 3341, + "nodeType": "StructuredDocumentation", + "src": "707:152:17", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "96c6fd1e", + "id": 3345, + "name": "ERC20InvalidSender", + "nameLocation": "870:18:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3343, + "mutability": "mutable", + "name": "sender", + "nameLocation": "897:6:17", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "889:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "889:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "888:16:17" + }, + "src": "864:41:17" + }, + { + "documentation": { + "id": 3346, + "nodeType": "StructuredDocumentation", + "src": "911:159:17", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "ec442f05", + "id": 3350, + "name": "ERC20InvalidReceiver", + "nameLocation": "1081:20:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3348, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "1110:8:17", + "nodeType": "VariableDeclaration", + "scope": 3350, + "src": "1102:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1102:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1101:18:17" + }, + "src": "1075:45:17" + }, + { + "documentation": { + "id": 3351, + "nodeType": "StructuredDocumentation", + "src": "1126:345:17", + "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "fb8f41b2", + "id": 3359, + "name": "ERC20InsufficientAllowance", + "nameLocation": "1482:26:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3353, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1517:7:17", + "nodeType": "VariableDeclaration", + "scope": 3359, + "src": "1509:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1509:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3355, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "1534:9:17", + "nodeType": "VariableDeclaration", + "scope": 3359, + "src": "1526:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1526:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3357, + "mutability": "mutable", + "name": "needed", + "nameLocation": "1553:6:17", + "nodeType": "VariableDeclaration", + "scope": 3359, + "src": "1545:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3356, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1545:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1508:52:17" + }, + "src": "1476:85:17" + }, + { + "documentation": { + "id": 3360, + "nodeType": "StructuredDocumentation", + "src": "1567:174:17", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "e602df05", + "id": 3364, + "name": "ERC20InvalidApprover", + "nameLocation": "1752:20:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3362, + "mutability": "mutable", + "name": "approver", + "nameLocation": "1781:8:17", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "1773:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1773:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1772:18:17" + }, + "src": "1746:45:17" + }, + { + "documentation": { + "id": 3365, + "nodeType": "StructuredDocumentation", + "src": "1797:195:17", + "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "94280d62", + "id": 3369, + "name": "ERC20InvalidSpender", + "nameLocation": "2003:19:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3368, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3367, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2031:7:17", + "nodeType": "VariableDeclaration", + "scope": 3369, + "src": "2023:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2023:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2022:17:17" + }, + "src": "1997:43:17" + } + ], + "scope": 3466, + "src": "278:1764:17", + "usedErrors": [ + 3340, + 3345, + 3350, + 3359, + 3364, + 3369 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3371, + "nodeType": "StructuredDocumentation", + "src": "2044:141:17", + "text": " @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens." + }, + "fullyImplemented": true, + "id": 3418, + "linearizedBaseContracts": [ + 3418 + ], + "name": "IERC721Errors", + "nameLocation": "2196:13:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3372, + "nodeType": "StructuredDocumentation", + "src": "2216:219:17", + "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "89c62b64", + "id": 3376, + "name": "ERC721InvalidOwner", + "nameLocation": "2446:18:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3374, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2473:5:17", + "nodeType": "VariableDeclaration", + "scope": 3376, + "src": "2465:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2465:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2464:15:17" + }, + "src": "2440:40:17" + }, + { + "documentation": { + "id": 3377, + "nodeType": "StructuredDocumentation", + "src": "2486:132:17", + "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "7e273289", + "id": 3381, + "name": "ERC721NonexistentToken", + "nameLocation": "2629:22:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3379, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2660:7:17", + "nodeType": "VariableDeclaration", + "scope": 3381, + "src": "2652:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2652:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2651:17:17" + }, + "src": "2623:46:17" + }, + { + "documentation": { + "id": 3382, + "nodeType": "StructuredDocumentation", + "src": "2675:289:17", + "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "64283d7b", + "id": 3390, + "name": "ERC721IncorrectOwner", + "nameLocation": "2975:20:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3384, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3004:6:17", + "nodeType": "VariableDeclaration", + "scope": 3390, + "src": "2996:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2996:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3386, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3020:7:17", + "nodeType": "VariableDeclaration", + "scope": 3390, + "src": "3012:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3012:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3388, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3037:5:17", + "nodeType": "VariableDeclaration", + "scope": 3390, + "src": "3029:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3029:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2995:48:17" + }, + "src": "2969:75:17" + }, + { + "documentation": { + "id": 3391, + "nodeType": "StructuredDocumentation", + "src": "3050:152:17", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "73c6ac6e", + "id": 3395, + "name": "ERC721InvalidSender", + "nameLocation": "3213:19:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3393, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3241:6:17", + "nodeType": "VariableDeclaration", + "scope": 3395, + "src": "3233:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3233:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3232:16:17" + }, + "src": "3207:42:17" + }, + { + "documentation": { + "id": 3396, + "nodeType": "StructuredDocumentation", + "src": "3255:159:17", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "64a0ae92", + "id": 3400, + "name": "ERC721InvalidReceiver", + "nameLocation": "3425:21:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3398, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3455:8:17", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "3447:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3397, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3447:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3446:18:17" + }, + "src": "3419:46:17" + }, + { + "documentation": { + "id": 3401, + "nodeType": "StructuredDocumentation", + "src": "3471:247:17", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "177e802f", + "id": 3407, + "name": "ERC721InsufficientApproval", + "nameLocation": "3729:26:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3403, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3764:8:17", + "nodeType": "VariableDeclaration", + "scope": 3407, + "src": "3756:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3756:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3405, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3782:7:17", + "nodeType": "VariableDeclaration", + "scope": 3407, + "src": "3774:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3755:35:17" + }, + "src": "3723:68:17" + }, + { + "documentation": { + "id": 3408, + "nodeType": "StructuredDocumentation", + "src": "3797:174:17", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "a9fbf51f", + "id": 3412, + "name": "ERC721InvalidApprover", + "nameLocation": "3982:21:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3410, + "mutability": "mutable", + "name": "approver", + "nameLocation": "4012:8:17", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "4004:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4004:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4003:18:17" + }, + "src": "3976:46:17" + }, + { + "documentation": { + "id": 3413, + "nodeType": "StructuredDocumentation", + "src": "4028:197:17", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "5b08ba18", + "id": 3417, + "name": "ERC721InvalidOperator", + "nameLocation": "4236:21:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4266:8:17", + "nodeType": "VariableDeclaration", + "scope": 3417, + "src": "4258:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4258:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4257:18:17" + }, + "src": "4230:46:17" + } + ], + "scope": 3466, + "src": "2186:2092:17", + "usedErrors": [ + 3376, + 3381, + 3390, + 3395, + 3400, + 3407, + 3412, + 3417 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1155Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3419, + "nodeType": "StructuredDocumentation", + "src": "4280:143:17", + "text": " @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens." + }, + "fullyImplemented": true, + "id": 3465, + "linearizedBaseContracts": [ + 3465 + ], + "name": "IERC1155Errors", + "nameLocation": "4434:14:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3420, + "nodeType": "StructuredDocumentation", + "src": "4455:361:17", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "03dee4c5", + "id": 3430, + "name": "ERC1155InsufficientBalance", + "nameLocation": "4827:26:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3422, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4862:6:17", + "nodeType": "VariableDeclaration", + "scope": 3430, + "src": "4854:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4854:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3424, + "mutability": "mutable", + "name": "balance", + "nameLocation": "4878:7:17", + "nodeType": "VariableDeclaration", + "scope": 3430, + "src": "4870:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4870:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3426, + "mutability": "mutable", + "name": "needed", + "nameLocation": "4895:6:17", + "nodeType": "VariableDeclaration", + "scope": 3430, + "src": "4887:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4887:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3428, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4911:7:17", + "nodeType": "VariableDeclaration", + "scope": 3430, + "src": "4903:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4903:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4853:66:17" + }, + "src": "4821:99:17" + }, + { + "documentation": { + "id": 3431, + "nodeType": "StructuredDocumentation", + "src": "4926:152:17", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "01a83514", + "id": 3435, + "name": "ERC1155InvalidSender", + "nameLocation": "5089:20:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3433, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5118:6:17", + "nodeType": "VariableDeclaration", + "scope": 3435, + "src": "5110:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5110:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5109:16:17" + }, + "src": "5083:43:17" + }, + { + "documentation": { + "id": 3436, + "nodeType": "StructuredDocumentation", + "src": "5132:159:17", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "57f447ce", + "id": 3440, + "name": "ERC1155InvalidReceiver", + "nameLocation": "5302:22:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3438, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5333:8:17", + "nodeType": "VariableDeclaration", + "scope": 3440, + "src": "5325:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5325:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5324:18:17" + }, + "src": "5296:47:17" + }, + { + "documentation": { + "id": 3441, + "nodeType": "StructuredDocumentation", + "src": "5349:256:17", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "e237d922", + "id": 3447, + "name": "ERC1155MissingApprovalForAll", + "nameLocation": "5616:28:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3443, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5653:8:17", + "nodeType": "VariableDeclaration", + "scope": 3447, + "src": "5645:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5645:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3445, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5671:5:17", + "nodeType": "VariableDeclaration", + "scope": 3447, + "src": "5663:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5663:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5644:33:17" + }, + "src": "5610:68:17" + }, + { + "documentation": { + "id": 3448, + "nodeType": "StructuredDocumentation", + "src": "5684:174:17", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "3e31884e", + "id": 3452, + "name": "ERC1155InvalidApprover", + "nameLocation": "5869:22:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "approver", + "nameLocation": "5900:8:17", + "nodeType": "VariableDeclaration", + "scope": 3452, + "src": "5892:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3449, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5892:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5891:18:17" + }, + "src": "5863:47:17" + }, + { + "documentation": { + "id": 3453, + "nodeType": "StructuredDocumentation", + "src": "5916:197:17", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "ced3e100", + "id": 3457, + "name": "ERC1155InvalidOperator", + "nameLocation": "6124:22:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3455, + "mutability": "mutable", + "name": "operator", + "nameLocation": "6155:8:17", + "nodeType": "VariableDeclaration", + "scope": 3457, + "src": "6147:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6147:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6146:18:17" + }, + "src": "6118:47:17" + }, + { + "documentation": { + "id": 3458, + "nodeType": "StructuredDocumentation", + "src": "6171:280:17", + "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + }, + "errorSelector": "5b059991", + "id": 3464, + "name": "ERC1155InvalidArrayLength", + "nameLocation": "6462:25:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3460, + "mutability": "mutable", + "name": "idsLength", + "nameLocation": "6496:9:17", + "nodeType": "VariableDeclaration", + "scope": 3464, + "src": "6488:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6488:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3462, + "mutability": "mutable", + "name": "valuesLength", + "nameLocation": "6515:12:17", + "nodeType": "VariableDeclaration", + "scope": 3464, + "src": "6507:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6507:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6487:41:17" + }, + "src": "6456:73:17" + } + ], + "scope": 3466, + "src": "4424:2107:17", + "usedErrors": [ + 3430, + 3435, + 3440, + 3447, + 3452, + 3457, + 3464 + ], + "usedEvents": [] + } + ], + "src": "112:6420:17" + }, + "id": 17 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "exportedSymbols": { + "ERC1967Proxy": [ + 3503 + ], + "ERC1967Utils": [ + 3806 + ], + "Proxy": [ + 3842 + ] + }, + "id": 3504, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3467, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:18" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "file": "../Proxy.sol", + "id": 3469, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3504, + "sourceUnit": 3843, + "src": "140:35:18", + "symbolAliases": [ + { + "foreign": { + "id": 3468, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3842, + "src": "148:5:18", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "./ERC1967Utils.sol", + "id": 3471, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3504, + "sourceUnit": 3807, + "src": "176:48:18", + "symbolAliases": [ + { + "foreign": { + "id": 3470, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "184:12:18", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3473, + "name": "Proxy", + "nameLocations": [ + "624:5:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3842, + "src": "624:5:18" + }, + "id": 3474, + "nodeType": "InheritanceSpecifier", + "src": "624:5:18" + } + ], + "canonicalName": "ERC1967Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3472, + "nodeType": "StructuredDocumentation", + "src": "226:372:18", + "text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy." + }, + "fullyImplemented": true, + "id": 3503, + "linearizedBaseContracts": [ + 3503, + 3842 + ], + "name": "ERC1967Proxy", + "nameLocation": "608:12:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3489, + "nodeType": "Block", + "src": "1144:69:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3485, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "1184:14:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3486, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3479, + "src": "1200:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3482, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "1154:12:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 3484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1167:16:18", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3625, + "src": "1154:29:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 3487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1154:52:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3488, + "nodeType": "ExpressionStatement", + "src": "1154:52:18" + } + ] + }, + "documentation": { + "id": 3475, + "nodeType": "StructuredDocumentation", + "src": "636:439:18", + "text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero." + }, + "id": 3490, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3477, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1100:14:18", + "nodeType": "VariableDeclaration", + "scope": 3490, + "src": "1092:22:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1092:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3479, + "mutability": "mutable", + "name": "_data", + "nameLocation": "1129:5:18", + "nodeType": "VariableDeclaration", + "scope": 3490, + "src": "1116:18:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3478, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1116:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1091:44:18" + }, + "returnParameters": { + "id": 3481, + "nodeType": "ParameterList", + "parameters": [], + "src": "1144:0:18" + }, + "scope": 3503, + "src": "1080:133:18", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 3823 + ], + "body": { + "id": 3501, + "nodeType": "Block", + "src": "1657:56:18", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 3497, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "1674:12:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1687:17:18", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3564, + "src": "1674:30:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1674:32:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3496, + "id": 3500, + "nodeType": "Return", + "src": "1667:39:18" + } + ] + }, + "documentation": { + "id": 3491, + "nodeType": "StructuredDocumentation", + "src": "1219:357:18", + "text": " @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + }, + "id": 3502, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "1590:15:18", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3493, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1630:8:18" + }, + "parameters": { + "id": 3492, + "nodeType": "ParameterList", + "parameters": [], + "src": "1605:2:18" + }, + "returnParameters": { + "id": 3496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3495, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3502, + "src": "1648:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1647:9:18" + }, + "scope": 3503, + "src": "1581:132:18", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3504, + "src": "599:1116:18", + "usedErrors": [ + 3538, + 3551, + 5005, + 5008 + ], + "usedEvents": [ + 3517 + ] + } + ], + "src": "114:1602:18" + }, + "id": 18 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "exportedSymbols": { + "Address": [ + 5245 + ], + "ERC1967Utils": [ + 3806 + ], + "IBeacon": [ + 3852 + ], + "StorageSlot": [ + 5385 + ] + }, + "id": 3807, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3505, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:19" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "id": 3507, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3807, + "sourceUnit": 3853, + "src": "140:46:19", + "symbolAliases": [ + { + "foreign": { + "id": 3506, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3852, + "src": "148:7:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 3509, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3807, + "sourceUnit": 5246, + "src": "187:48:19", + "symbolAliases": [ + { + "foreign": { + "id": 3508, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "195:7:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "id": 3511, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3807, + "sourceUnit": 5386, + "src": "236:56:19", + "symbolAliases": [ + { + "foreign": { + "id": 3510, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "244:11:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1967Utils", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3512, + "nodeType": "StructuredDocumentation", + "src": "294:154:19", + "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots." + }, + "fullyImplemented": true, + "id": 3806, + "linearizedBaseContracts": [ + 3806 + ], + "name": "ERC1967Utils", + "nameLocation": "457:12:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 3513, + "nodeType": "StructuredDocumentation", + "src": "660:68:19", + "text": " @dev Emitted when the implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 3517, + "name": "Upgraded", + "nameLocation": "739:8:19", + "nodeType": "EventDefinition", + "parameters": { + "id": 3516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3515, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "764:14:19", + "nodeType": "VariableDeclaration", + "scope": 3517, + "src": "748:30:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "748:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "747:32:19" + }, + "src": "733:47:19" + }, + { + "anonymous": false, + "documentation": { + "id": 3518, + "nodeType": "StructuredDocumentation", + "src": "786:67:19", + "text": " @dev Emitted when the admin account has changed." + }, + "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", + "id": 3524, + "name": "AdminChanged", + "nameLocation": "864:12:19", + "nodeType": "EventDefinition", + "parameters": { + "id": 3523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3520, + "indexed": false, + "mutability": "mutable", + "name": "previousAdmin", + "nameLocation": "885:13:19", + "nodeType": "VariableDeclaration", + "scope": 3524, + "src": "877:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "877:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3522, + "indexed": false, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "908:8:19", + "nodeType": "VariableDeclaration", + "scope": 3524, + "src": "900:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "900:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "876:41:19" + }, + "src": "858:60:19" + }, + { + "anonymous": false, + "documentation": { + "id": 3525, + "nodeType": "StructuredDocumentation", + "src": "924:59:19", + "text": " @dev Emitted when the beacon is changed." + }, + "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", + "id": 3529, + "name": "BeaconUpgraded", + "nameLocation": "994:14:19", + "nodeType": "EventDefinition", + "parameters": { + "id": 3528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3527, + "indexed": true, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1025:6:19", + "nodeType": "VariableDeclaration", + "scope": 3529, + "src": "1009:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1009:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1008:24:19" + }, + "src": "988:45:19" + }, + { + "constant": true, + "documentation": { + "id": 3530, + "nodeType": "StructuredDocumentation", + "src": "1039:170:19", + "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1." + }, + "id": 3533, + "mutability": "constant", + "name": "IMPLEMENTATION_SLOT", + "nameLocation": "1305:19:19", + "nodeType": "VariableDeclaration", + "scope": 3806, + "src": "1279:114:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3531, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1279:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 3532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1327:66:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 3534, + "nodeType": "StructuredDocumentation", + "src": "1400:69:19", + "text": " @dev The `implementation` of the proxy is invalid." + }, + "errorSelector": "4c9c8ce3", + "id": 3538, + "name": "ERC1967InvalidImplementation", + "nameLocation": "1480:28:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3536, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1517:14:19", + "nodeType": "VariableDeclaration", + "scope": 3538, + "src": "1509:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1509:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1508:24:19" + }, + "src": "1474:59:19" + }, + { + "documentation": { + "id": 3539, + "nodeType": "StructuredDocumentation", + "src": "1539:60:19", + "text": " @dev The `admin` of the proxy is invalid." + }, + "errorSelector": "62e77ba2", + "id": 3543, + "name": "ERC1967InvalidAdmin", + "nameLocation": "1610:19:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3541, + "mutability": "mutable", + "name": "admin", + "nameLocation": "1638:5:19", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "1630:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1630:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1629:15:19" + }, + "src": "1604:41:19" + }, + { + "documentation": { + "id": 3544, + "nodeType": "StructuredDocumentation", + "src": "1651:61:19", + "text": " @dev The `beacon` of the proxy is invalid." + }, + "errorSelector": "64ced0ec", + "id": 3548, + "name": "ERC1967InvalidBeacon", + "nameLocation": "1723:20:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3546, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1752:6:19", + "nodeType": "VariableDeclaration", + "scope": 3548, + "src": "1744:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1744:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1743:16:19" + }, + "src": "1717:43:19" + }, + { + "documentation": { + "id": 3549, + "nodeType": "StructuredDocumentation", + "src": "1766:82:19", + "text": " @dev An upgrade function sees `msg.value > 0` that may be lost." + }, + "errorSelector": "b398979f", + "id": 3551, + "name": "ERC1967NonPayable", + "nameLocation": "1859:17:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3550, + "nodeType": "ParameterList", + "parameters": [], + "src": "1876:2:19" + }, + "src": "1853:26:19" + }, + { + "body": { + "id": 3563, + "nodeType": "Block", + "src": "2018:77:19", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3559, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3533, + "src": "2062:19:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3557, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "2035:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2047:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "2035:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2035:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2083:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "2035:53:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3556, + "id": 3562, + "nodeType": "Return", + "src": "2028:60:19" + } + ] + }, + "documentation": { + "id": 3552, + "nodeType": "StructuredDocumentation", + "src": "1885:67:19", + "text": " @dev Returns the current implementation address." + }, + "id": 3564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getImplementation", + "nameLocation": "1966:17:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3553, + "nodeType": "ParameterList", + "parameters": [], + "src": "1983:2:19" + }, + "returnParameters": { + "id": 3556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3555, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "2009:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2009:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2008:9:19" + }, + "scope": 3806, + "src": "1957:138:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3590, + "nodeType": "Block", + "src": "2249:218:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3570, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "2263:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2281:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "2263:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2286:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2263:29:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2296:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2263:34:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3580, + "nodeType": "IfStatement", + "src": "2259:119:19", + "trueBody": { + "id": 3579, + "nodeType": "Block", + "src": "2299:79:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3576, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "2349:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3575, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3538, + "src": "2320:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2320:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3578, + "nodeType": "RevertStatement", + "src": "2313:54:19" + } + ] + } + }, + { + "expression": { + "id": 3588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3584, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3533, + "src": "2414:19:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3581, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "2387:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2399:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "2387:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2387:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3586, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2435:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "2387:53:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3587, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "2443:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2387:73:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3589, + "nodeType": "ExpressionStatement", + "src": "2387:73:19" + } + ] + }, + "documentation": { + "id": 3565, + "nodeType": "StructuredDocumentation", + "src": "2101:80:19", + "text": " @dev Stores a new address in the EIP1967 implementation slot." + }, + "id": 3591, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setImplementation", + "nameLocation": "2195:18:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3567, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2222:17:19", + "nodeType": "VariableDeclaration", + "scope": 3591, + "src": "2214:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2214:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2213:27:19" + }, + "returnParameters": { + "id": 3569, + "nodeType": "ParameterList", + "parameters": [], + "src": "2249:0:19" + }, + "scope": 3806, + "src": "2186:281:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3624, + "nodeType": "Block", + "src": "2860:254:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3600, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "2889:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3599, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3591, + "src": "2870:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2870:37:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3602, + "nodeType": "ExpressionStatement", + "src": "2870:37:19" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3604, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "2931:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3603, + "name": "Upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3517, + "src": "2922:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2922:27:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3606, + "nodeType": "EmitStatement", + "src": "2917:32:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3607, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3596, + "src": "2964:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2969:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2964:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2978:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2964:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3622, + "nodeType": "Block", + "src": "3065:43:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3619, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3805, + "src": "3079:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3079:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3621, + "nodeType": "ExpressionStatement", + "src": "3079:18:19" + } + ] + }, + "id": 3623, + "nodeType": "IfStatement", + "src": "2960:148:19", + "trueBody": { + "id": 3618, + "nodeType": "Block", + "src": "2981:78:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3614, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "3024:17:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3615, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3596, + "src": "3043:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3611, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "2995:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$5245_$", + "typeString": "type(library Address)" + } + }, + "id": 3613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3003:20:19", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5164, + "src": "2995:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 3616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2995:53:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3617, + "nodeType": "ExpressionStatement", + "src": "2995:53:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 3592, + "nodeType": "StructuredDocumentation", + "src": "2473:301:19", + "text": " @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 3625, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeToAndCall", + "nameLocation": "2788:16:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3594, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2813:17:19", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "2805:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2805:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3596, + "mutability": "mutable", + "name": "data", + "nameLocation": "2845:4:19", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "2832:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2832:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2804:46:19" + }, + "returnParameters": { + "id": 3598, + "nodeType": "ParameterList", + "parameters": [], + "src": "2860:0:19" + }, + "scope": 3806, + "src": "2779:335:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3626, + "nodeType": "StructuredDocumentation", + "src": "3120:145:19", + "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1." + }, + "id": 3629, + "mutability": "constant", + "name": "ADMIN_SLOT", + "nameLocation": "3361:10:19", + "nodeType": "VariableDeclaration", + "scope": 3806, + "src": "3335:105:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3627, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3335:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", + "id": 3628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3374:66:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", + "typeString": "int_const 8195...(69 digits omitted)...7091" + }, + "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103" + }, + "visibility": "internal" + }, + { + "body": { + "id": 3641, + "nodeType": "Block", + "src": "3844:68:19", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3637, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "3888:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3635, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "3861:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3873:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "3861:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3861:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3639, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3900:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "3861:44:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3634, + "id": 3640, + "nodeType": "Return", + "src": "3854:51:19" + } + ] + }, + "documentation": { + "id": 3630, + "nodeType": "StructuredDocumentation", + "src": "3447:340:19", + "text": " @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" + }, + "id": 3642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAdmin", + "nameLocation": "3801:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3631, + "nodeType": "ParameterList", + "parameters": [], + "src": "3809:2:19" + }, + "returnParameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3633, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "3835:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3835:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3834:9:19" + }, + "scope": 3806, + "src": "3792:120:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3672, + "nodeType": "Block", + "src": "4039:172:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3648, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3645, + "src": "4053:8:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4073:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4065:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4065:7:19", + "typeDescriptions": {} + } + }, + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4065:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4053:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3662, + "nodeType": "IfStatement", + "src": "4049:91:19", + "trueBody": { + "id": 3661, + "nodeType": "Block", + "src": "4077:63:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 3657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4126:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4118:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4118:7:19", + "typeDescriptions": {} + } + }, + "id": 3658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4118:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3654, + "name": "ERC1967InvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3543, + "src": "4098:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4098:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3660, + "nodeType": "RevertStatement", + "src": "4091:38:19" + } + ] + } + }, + { + "expression": { + "id": 3670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3666, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "4176:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3663, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "4149:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4161:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "4149:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4149:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3668, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4188:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "4149:44:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3669, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3645, + "src": "4196:8:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4149:55:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3671, + "nodeType": "ExpressionStatement", + "src": "4149:55:19" + } + ] + }, + "documentation": { + "id": 3643, + "nodeType": "StructuredDocumentation", + "src": "3918:71:19", + "text": " @dev Stores a new address in the EIP1967 admin slot." + }, + "id": 3673, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAdmin", + "nameLocation": "4003:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3645, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4021:8:19", + "nodeType": "VariableDeclaration", + "scope": 3673, + "src": "4013:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4013:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4012:18:19" + }, + "returnParameters": { + "id": 3647, + "nodeType": "ParameterList", + "parameters": [], + "src": "4039:0:19" + }, + "scope": 3806, + "src": "3994:217:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3689, + "nodeType": "Block", + "src": "4379:85:19", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3680, + "name": "getAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3642, + "src": "4407:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4407:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3682, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "4419:8:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3679, + "name": "AdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "4394:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4394:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3684, + "nodeType": "EmitStatement", + "src": "4389:39:19" + }, + { + "expression": { + "arguments": [ + { + "id": 3686, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "4448:8:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3685, + "name": "_setAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3673, + "src": "4438:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4438:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3688, + "nodeType": "ExpressionStatement", + "src": "4438:19:19" + } + ] + }, + "documentation": { + "id": 3674, + "nodeType": "StructuredDocumentation", + "src": "4217:109:19", + "text": " @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event." + }, + "id": 3690, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "changeAdmin", + "nameLocation": "4340:11:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3676, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4360:8:19", + "nodeType": "VariableDeclaration", + "scope": 3690, + "src": "4352:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4352:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4351:18:19" + }, + "returnParameters": { + "id": 3678, + "nodeType": "ParameterList", + "parameters": [], + "src": "4379:0:19" + }, + "scope": 3806, + "src": "4331:133:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3691, + "nodeType": "StructuredDocumentation", + "src": "4470:201:19", + "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1." + }, + "id": 3694, + "mutability": "constant", + "name": "BEACON_SLOT", + "nameLocation": "4767:11:19", + "nodeType": "VariableDeclaration", + "scope": 3806, + "src": "4741:106:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3692, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4741:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", + "id": 3693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4781:66:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", + "typeString": "int_const 7415...(69 digits omitted)...4704" + }, + "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50" + }, + "visibility": "internal" + }, + { + "body": { + "id": 3706, + "nodeType": "Block", + "src": "4963:69:19", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3702, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3694, + "src": "5007:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3700, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "4980:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4992:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "4980:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4980:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "4980:45:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3699, + "id": 3705, + "nodeType": "Return", + "src": "4973:52:19" + } + ] + }, + "documentation": { + "id": 3695, + "nodeType": "StructuredDocumentation", + "src": "4854:51:19", + "text": " @dev Returns the current beacon." + }, + "id": 3707, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBeacon", + "nameLocation": "4919:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3696, + "nodeType": "ParameterList", + "parameters": [], + "src": "4928:2:19" + }, + "returnParameters": { + "id": 3699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3698, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3707, + "src": "4954:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4954:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4953:9:19" + }, + "scope": 3806, + "src": "4910:122:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3752, + "nodeType": "Block", + "src": "5161:390:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3713, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "5175:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5185:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5175:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5190:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5175:21:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5200:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5175:26:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3723, + "nodeType": "IfStatement", + "src": "5171:95:19", + "trueBody": { + "id": 3722, + "nodeType": "Block", + "src": "5203:63:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3719, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "5245:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3718, + "name": "ERC1967InvalidBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3548, + "src": "5224:20:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5224:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3721, + "nodeType": "RevertStatement", + "src": "5217:38:19" + } + ] + } + }, + { + "expression": { + "id": 3731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3727, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3694, + "src": "5303:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3724, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "5276:11:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5385_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5288:14:19", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5307, + "src": "5276:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5281_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5276:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3729, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5316:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5280, + "src": "5276:45:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3730, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "5324:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5276:57:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3732, + "nodeType": "ExpressionStatement", + "src": "5276:57:19" + }, + { + "assignments": [ + 3734 + ], + "declarations": [ + { + "constant": false, + "id": 3734, + "mutability": "mutable", + "name": "beaconImplementation", + "nameLocation": "5352:20:19", + "nodeType": "VariableDeclaration", + "scope": 3752, + "src": "5344:28:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5344:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3740, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3736, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "5383:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3735, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3852, + "src": "5375:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$3852_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 3737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5375:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$3852", + "typeString": "contract IBeacon" + } + }, + "id": 3738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5394:14:19", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3851, + "src": "5375:33:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 3739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5375:35:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5344:66:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3741, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3734, + "src": "5424:20:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5445:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5424:25:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5450:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5424:32:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5460:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5424:37:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3751, + "nodeType": "IfStatement", + "src": "5420:125:19", + "trueBody": { + "id": 3750, + "nodeType": "Block", + "src": "5463:82:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3747, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3734, + "src": "5513:20:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3746, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3538, + "src": "5484:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5484:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3749, + "nodeType": "RevertStatement", + "src": "5477:57:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 3708, + "nodeType": "StructuredDocumentation", + "src": "5038:71:19", + "text": " @dev Stores a new beacon in the EIP1967 beacon slot." + }, + "id": 3753, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBeacon", + "nameLocation": "5123:10:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3710, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "5142:9:19", + "nodeType": "VariableDeclaration", + "scope": 3753, + "src": "5134:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5134:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5133:19:19" + }, + "returnParameters": { + "id": 3712, + "nodeType": "ParameterList", + "parameters": [], + "src": "5161:0:19" + }, + "scope": 3806, + "src": "5114:437:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3790, + "nodeType": "Block", + "src": "6155:254:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3762, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3756, + "src": "6176:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3761, + "name": "_setBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3753, + "src": "6165:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6165:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3764, + "nodeType": "ExpressionStatement", + "src": "6165:21:19" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3766, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3756, + "src": "6216:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3765, + "name": "BeaconUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3529, + "src": "6201:14:19", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6201:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3768, + "nodeType": "EmitStatement", + "src": "6196:30:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3769, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3758, + "src": "6241:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6246:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6241:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6255:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6241:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3788, + "nodeType": "Block", + "src": "6360:43:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3785, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3805, + "src": "6374:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6374:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3787, + "nodeType": "ExpressionStatement", + "src": "6374:18:19" + } + ] + }, + "id": 3789, + "nodeType": "IfStatement", + "src": "6237:166:19", + "trueBody": { + "id": 3784, + "nodeType": "Block", + "src": "6258:96:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3777, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3756, + "src": "6309:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3776, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3852, + "src": "6301:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$3852_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 3778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$3852", + "typeString": "contract IBeacon" + } + }, + "id": 3779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6320:14:19", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3851, + "src": "6301:33:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 3780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:35:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3781, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3758, + "src": "6338:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3773, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "6272:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$5245_$", + "typeString": "type(library Address)" + } + }, + "id": 3775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6280:20:19", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5164, + "src": "6272:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 3782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6272:71:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3783, + "nodeType": "ExpressionStatement", + "src": "6272:71:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 3754, + "nodeType": "StructuredDocumentation", + "src": "5557:514:19", + "text": " @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency." + }, + "id": 3791, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeBeaconToAndCall", + "nameLocation": "6085:22:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3759, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3756, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "6116:9:19", + "nodeType": "VariableDeclaration", + "scope": 3791, + "src": "6108:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6108:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3758, + "mutability": "mutable", + "name": "data", + "nameLocation": "6140:4:19", + "nodeType": "VariableDeclaration", + "scope": 3791, + "src": "6127:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3757, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6127:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6107:38:19" + }, + "returnParameters": { + "id": 3760, + "nodeType": "ParameterList", + "parameters": [], + "src": "6155:0:19" + }, + "scope": 3806, + "src": "6076:333:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3804, + "nodeType": "Block", + "src": "6634:86:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3795, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6648:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6652:5:19", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6648:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6660:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6648:13:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3803, + "nodeType": "IfStatement", + "src": "6644:70:19", + "trueBody": { + "id": 3802, + "nodeType": "Block", + "src": "6663:51:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3799, + "name": "ERC1967NonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3551, + "src": "6684:17:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6684:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3801, + "nodeType": "RevertStatement", + "src": "6677:26:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 3792, + "nodeType": "StructuredDocumentation", + "src": "6415:178:19", + "text": " @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call." + }, + "id": 3805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNonPayable", + "nameLocation": "6607:16:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3793, + "nodeType": "ParameterList", + "parameters": [], + "src": "6623:2:19" + }, + "returnParameters": { + "id": 3794, + "nodeType": "ParameterList", + "parameters": [], + "src": "6634:0:19" + }, + "scope": 3806, + "src": "6598:122:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3807, + "src": "449:6273:19", + "usedErrors": [ + 3538, + 3543, + 3548, + 3551 + ], + "usedEvents": [ + 3517, + 3524, + 3529 + ] + } + ], + "src": "114:6609:19" + }, + "id": 19 + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 3842 + ] + }, + "id": 3843, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3808, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:20" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3809, + "nodeType": "StructuredDocumentation", + "src": "125:598:20", + "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy." + }, + "fullyImplemented": false, + "id": 3842, + "linearizedBaseContracts": [ + 3842 + ], + "name": "Proxy", + "nameLocation": "742:5:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3816, + "nodeType": "Block", + "src": "1009:835:20", + "statements": [ + { + "AST": { + "nativeSrc": "1028:810:20", + "nodeType": "YulBlock", + "src": "1028:810:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1281:1:20", + "nodeType": "YulLiteral", + "src": "1281:1:20", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1284:1:20", + "nodeType": "YulLiteral", + "src": "1284:1:20", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1287:12:20", + "nodeType": "YulIdentifier", + "src": "1287:12:20" + }, + "nativeSrc": "1287:14:20", + "nodeType": "YulFunctionCall", + "src": "1287:14:20" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1268:12:20", + "nodeType": "YulIdentifier", + "src": "1268:12:20" + }, + "nativeSrc": "1268:34:20", + "nodeType": "YulFunctionCall", + "src": "1268:34:20" + }, + "nativeSrc": "1268:34:20", + "nodeType": "YulExpressionStatement", + "src": "1268:34:20" + }, + { + "nativeSrc": "1429:74:20", + "nodeType": "YulVariableDeclaration", + "src": "1429:74:20", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "1456:3:20", + "nodeType": "YulIdentifier", + "src": "1456:3:20" + }, + "nativeSrc": "1456:5:20", + "nodeType": "YulFunctionCall", + "src": "1456:5:20" + }, + { + "name": "implementation", + "nativeSrc": "1463:14:20", + "nodeType": "YulIdentifier", + "src": "1463:14:20" + }, + { + "kind": "number", + "nativeSrc": "1479:1:20", + "nodeType": "YulLiteral", + "src": "1479:1:20", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1482:12:20", + "nodeType": "YulIdentifier", + "src": "1482:12:20" + }, + "nativeSrc": "1482:14:20", + "nodeType": "YulFunctionCall", + "src": "1482:14:20" + }, + { + "kind": "number", + "nativeSrc": "1498:1:20", + "nodeType": "YulLiteral", + "src": "1498:1:20", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1501:1:20", + "nodeType": "YulLiteral", + "src": "1501:1:20", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "delegatecall", + "nativeSrc": "1443:12:20", + "nodeType": "YulIdentifier", + "src": "1443:12:20" + }, + "nativeSrc": "1443:60:20", + "nodeType": "YulFunctionCall", + "src": "1443:60:20" + }, + "variables": [ + { + "name": "result", + "nativeSrc": "1433:6:20", + "nodeType": "YulTypedName", + "src": "1433:6:20", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1571:1:20", + "nodeType": "YulLiteral", + "src": "1571:1:20", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1574:1:20", + "nodeType": "YulLiteral", + "src": "1574:1:20", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1577:14:20", + "nodeType": "YulIdentifier", + "src": "1577:14:20" + }, + "nativeSrc": "1577:16:20", + "nodeType": "YulFunctionCall", + "src": "1577:16:20" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "1556:14:20", + "nodeType": "YulIdentifier", + "src": "1556:14:20" + }, + "nativeSrc": "1556:38:20", + "nodeType": "YulFunctionCall", + "src": "1556:38:20" + }, + "nativeSrc": "1556:38:20", + "nodeType": "YulExpressionStatement", + "src": "1556:38:20" + }, + { + "cases": [ + { + "body": { + "nativeSrc": "1689:59:20", + "nodeType": "YulBlock", + "src": "1689:59:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1714:1:20", + "nodeType": "YulLiteral", + "src": "1714:1:20", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1717:14:20", + "nodeType": "YulIdentifier", + "src": "1717:14:20" + }, + "nativeSrc": "1717:16:20", + "nodeType": "YulFunctionCall", + "src": "1717:16:20" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1707:6:20", + "nodeType": "YulIdentifier", + "src": "1707:6:20" + }, + "nativeSrc": "1707:27:20", + "nodeType": "YulFunctionCall", + "src": "1707:27:20" + }, + "nativeSrc": "1707:27:20", + "nodeType": "YulExpressionStatement", + "src": "1707:27:20" + } + ] + }, + "nativeSrc": "1682:66:20", + "nodeType": "YulCase", + "src": "1682:66:20", + "value": { + "kind": "number", + "nativeSrc": "1687:1:20", + "nodeType": "YulLiteral", + "src": "1687:1:20", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "1769:59:20", + "nodeType": "YulBlock", + "src": "1769:59:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1794:1:20", + "nodeType": "YulLiteral", + "src": "1794:1:20", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1797:14:20", + "nodeType": "YulIdentifier", + "src": "1797:14:20" + }, + "nativeSrc": "1797:16:20", + "nodeType": "YulFunctionCall", + "src": "1797:16:20" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "1787:6:20", + "nodeType": "YulIdentifier", + "src": "1787:6:20" + }, + "nativeSrc": "1787:27:20", + "nodeType": "YulFunctionCall", + "src": "1787:27:20" + }, + "nativeSrc": "1787:27:20", + "nodeType": "YulExpressionStatement", + "src": "1787:27:20" + } + ] + }, + "nativeSrc": "1761:67:20", + "nodeType": "YulCase", + "src": "1761:67:20", + "value": "default" + } + ], + "expression": { + "name": "result", + "nativeSrc": "1615:6:20", + "nodeType": "YulIdentifier", + "src": "1615:6:20" + }, + "nativeSrc": "1608:220:20", + "nodeType": "YulSwitch", + "src": "1608:220:20" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3812, + "isOffset": false, + "isSlot": false, + "src": "1463:14:20", + "valueSize": 1 + } + ], + "id": 3815, + "nodeType": "InlineAssembly", + "src": "1019:819:20" + } + ] + }, + "documentation": { + "id": 3810, + "nodeType": "StructuredDocumentation", + "src": "754:190:20", + "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 3817, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_delegate", + "nameLocation": "958:9:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3812, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "976:14:20", + "nodeType": "VariableDeclaration", + "scope": 3817, + "src": "968:22:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "967:24:20" + }, + "returnParameters": { + "id": 3814, + "nodeType": "ParameterList", + "parameters": [], + "src": "1009:0:20" + }, + "scope": 3842, + "src": "949:895:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 3818, + "nodeType": "StructuredDocumentation", + "src": "1850:173:20", + "text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate." + }, + "id": 3823, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "2037:15:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3819, + "nodeType": "ParameterList", + "parameters": [], + "src": "2052:2:20" + }, + "returnParameters": { + "id": 3822, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3821, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3823, + "src": "2086:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2086:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2085:9:20" + }, + "scope": 3842, + "src": "2028:67:20", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3832, + "nodeType": "Block", + "src": "2361:45:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3828, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3823, + "src": "2381:15:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2381:17:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3827, + "name": "_delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3817, + "src": "2371:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2371:28:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3831, + "nodeType": "ExpressionStatement", + "src": "2371:28:20" + } + ] + }, + "documentation": { + "id": 3824, + "nodeType": "StructuredDocumentation", + "src": "2101:217:20", + "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 3833, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_fallback", + "nameLocation": "2332:9:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3825, + "nodeType": "ParameterList", + "parameters": [], + "src": "2341:2:20" + }, + "returnParameters": { + "id": 3826, + "nodeType": "ParameterList", + "parameters": [], + "src": "2361:0:20" + }, + "scope": 3842, + "src": "2323:83:20", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3840, + "nodeType": "Block", + "src": "2639:28:20", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3837, + "name": "_fallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "2649:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:11:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3839, + "nodeType": "ExpressionStatement", + "src": "2649:11:20" + } + ] + }, + "documentation": { + "id": 3834, + "nodeType": "StructuredDocumentation", + "src": "2412:186:20", + "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data." + }, + "id": 3841, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3835, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:2:20" + }, + "returnParameters": { + "id": 3836, + "nodeType": "ParameterList", + "parameters": [], + "src": "2639:0:20" + }, + "scope": 3842, + "src": "2603:64:20", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + } + ], + "scope": 3843, + "src": "724:1945:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:2571:20" + }, + "id": 20 + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "exportedSymbols": { + "IBeacon": [ + 3852 + ] + }, + "id": 3853, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3844, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:21" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBeacon", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3845, + "nodeType": "StructuredDocumentation", + "src": "134:79:21", + "text": " @dev This is the interface that {BeaconProxy} expects of its beacon." + }, + "fullyImplemented": false, + "id": 3852, + "linearizedBaseContracts": [ + 3852 + ], + "name": "IBeacon", + "nameLocation": "224:7:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3846, + "nodeType": "StructuredDocumentation", + "src": "238:168:21", + "text": " @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract." + }, + "functionSelector": "5c60da1b", + "id": 3851, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "420:14:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3847, + "nodeType": "ParameterList", + "parameters": [], + "src": "434:2:21" + }, + "returnParameters": { + "id": 3850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3849, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3851, + "src": "460:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "460:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "459:9:21" + }, + "scope": 3852, + "src": "411:58:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3853, + "src": "214:257:21", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "108:364:21" + }, + "id": 21 + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 5275 + ], + "ERC20": [ + 4367 + ], + "IERC20": [ + 4445 + ], + "IERC20Errors": [ + 3370 + ], + "IERC20Metadata": [ + 4471 + ] + }, + "id": 4368, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3854, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:22" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 3856, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4368, + "sourceUnit": 4446, + "src": "131:36:22", + "symbolAliases": [ + { + "foreign": { + "id": 3855, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "139:6:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 3858, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4368, + "sourceUnit": 4472, + "src": "168:63:22", + "symbolAliases": [ + { + "foreign": { + "id": 3857, + "name": "IERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4471, + "src": "176:14:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 3860, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4368, + "sourceUnit": 5276, + "src": "232:48:22", + "symbolAliases": [ + { + "foreign": { + "id": 3859, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5275, + "src": "240:7:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "../../interfaces/draft-IERC6093.sol", + "id": 3862, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4368, + "sourceUnit": 3466, + "src": "281:65:22", + "symbolAliases": [ + { + "foreign": { + "id": 3861, + "name": "IERC20Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3370, + "src": "289:12:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 3864, + "name": "Context", + "nameLocations": [ + "1428:7:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5275, + "src": "1428:7:22" + }, + "id": 3865, + "nodeType": "InheritanceSpecifier", + "src": "1428:7:22" + }, + { + "baseName": { + "id": 3866, + "name": "IERC20", + "nameLocations": [ + "1437:6:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "1437:6:22" + }, + "id": 3867, + "nodeType": "InheritanceSpecifier", + "src": "1437:6:22" + }, + { + "baseName": { + "id": 3868, + "name": "IERC20Metadata", + "nameLocations": [ + "1445:14:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4471, + "src": "1445:14:22" + }, + "id": 3869, + "nodeType": "InheritanceSpecifier", + "src": "1445:14:22" + }, + { + "baseName": { + "id": 3870, + "name": "IERC20Errors", + "nameLocations": [ + "1461:12:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3370, + "src": "1461:12:22" + }, + "id": 3871, + "nodeType": "InheritanceSpecifier", + "src": "1461:12:22" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3863, + "nodeType": "StructuredDocumentation", + "src": "348:1052:22", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification." + }, + "fullyImplemented": true, + "id": 4367, + "linearizedBaseContracts": [ + 4367, + 3370, + 4471, + 4445, + 5275 + ], + "name": "ERC20", + "nameLocation": "1419:5:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3875, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1524:9:22", + "nodeType": "VariableDeclaration", + "scope": 4367, + "src": "1480:53:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3874, + "keyName": "account", + "keyNameLocation": "1496:7:22", + "keyType": { + "id": 3872, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1488:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1480:35:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1507:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3881, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1612:11:22", + "nodeType": "VariableDeclaration", + "scope": 4367, + "src": "1540:83:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 3880, + "keyName": "account", + "keyNameLocation": "1556:7:22", + "keyType": { + "id": 3876, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1548:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1540:63:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3879, + "keyName": "spender", + "keyNameLocation": "1583:7:22", + "keyType": { + "id": 3877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1575:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1567:35:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1594:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3883, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1646:12:22", + "nodeType": "VariableDeclaration", + "scope": 4367, + "src": "1630:28:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1630:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3885, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1680:5:22", + "nodeType": "VariableDeclaration", + "scope": 4367, + "src": "1665:20:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 3884, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1665:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3887, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1706:7:22", + "nodeType": "VariableDeclaration", + "scope": 4367, + "src": "1691:22:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 3886, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1691:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 3903, + "nodeType": "Block", + "src": "1952:57:22", + "statements": [ + { + "expression": { + "id": 3897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3895, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "1962:5:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3896, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3890, + "src": "1970:5:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1962:13:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 3898, + "nodeType": "ExpressionStatement", + "src": "1962:13:22" + }, + { + "expression": { + "id": 3901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3899, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3887, + "src": "1985:7:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3900, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "1995:7:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1985:17:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 3902, + "nodeType": "ExpressionStatement", + "src": "1985:17:22" + } + ] + }, + "documentation": { + "id": 3888, + "nodeType": "StructuredDocumentation", + "src": "1720:171:22", + "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." + }, + "id": 3904, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3890, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1922:5:22", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "1908:19:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3889, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1908:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3892, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1943:7:22", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "1929:21:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3891, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1929:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1907:44:22" + }, + "returnParameters": { + "id": 3894, + "nodeType": "ParameterList", + "parameters": [], + "src": "1952:0:22" + }, + "scope": 4367, + "src": "1896:113:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 4458 + ], + "body": { + "id": 3912, + "nodeType": "Block", + "src": "2134:29:22", + "statements": [ + { + "expression": { + "id": 3910, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "2151:5:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3909, + "id": 3911, + "nodeType": "Return", + "src": "2144:12:22" + } + ] + }, + "documentation": { + "id": 3905, + "nodeType": "StructuredDocumentation", + "src": "2015:54:22", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 3913, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "2083:4:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3906, + "nodeType": "ParameterList", + "parameters": [], + "src": "2087:2:22" + }, + "returnParameters": { + "id": 3909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3908, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3913, + "src": "2119:13:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3907, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2119:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2118:15:22" + }, + "scope": 4367, + "src": "2074:89:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4464 + ], + "body": { + "id": 3921, + "nodeType": "Block", + "src": "2338:31:22", + "statements": [ + { + "expression": { + "id": 3919, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3887, + "src": "2355:7:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3918, + "id": 3920, + "nodeType": "Return", + "src": "2348:14:22" + } + ] + }, + "documentation": { + "id": 3914, + "nodeType": "StructuredDocumentation", + "src": "2169:102:22", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 3922, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "2285:6:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3915, + "nodeType": "ParameterList", + "parameters": [], + "src": "2291:2:22" + }, + "returnParameters": { + "id": 3918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3917, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3922, + "src": "2323:13:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3916, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2323:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2322:15:22" + }, + "scope": 4367, + "src": "2276:93:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4470 + ], + "body": { + "id": 3930, + "nodeType": "Block", + "src": "3058:26:22", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 3928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3075:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 3927, + "id": 3929, + "nodeType": "Return", + "src": "3068:9:22" + } + ] + }, + "documentation": { + "id": 3923, + "nodeType": "StructuredDocumentation", + "src": "2375:622:22", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 3931, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "3011:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3924, + "nodeType": "ParameterList", + "parameters": [], + "src": "3019:2:22" + }, + "returnParameters": { + "id": 3927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3926, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3931, + "src": "3051:5:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 3925, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3051:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3050:7:22" + }, + "scope": 4367, + "src": "3002:82:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4394 + ], + "body": { + "id": 3939, + "nodeType": "Block", + "src": "3205:36:22", + "statements": [ + { + "expression": { + "id": 3937, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3222:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3936, + "id": 3938, + "nodeType": "Return", + "src": "3215:19:22" + } + ] + }, + "documentation": { + "id": 3932, + "nodeType": "StructuredDocumentation", + "src": "3090:49:22", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 3940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3153:11:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3933, + "nodeType": "ParameterList", + "parameters": [], + "src": "3164:2:22" + }, + "returnParameters": { + "id": 3936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3935, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3940, + "src": "3196:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3934, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3196:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3195:9:22" + }, + "scope": 4367, + "src": "3144:97:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4402 + ], + "body": { + "id": 3952, + "nodeType": "Block", + "src": "3373:42:22", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 3948, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3875, + "src": "3390:9:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3950, + "indexExpression": { + "id": 3949, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "3400:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3390:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3947, + "id": 3951, + "nodeType": "Return", + "src": "3383:25:22" + } + ] + }, + "documentation": { + "id": 3941, + "nodeType": "StructuredDocumentation", + "src": "3247:47:22", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 3953, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3308:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3943, + "mutability": "mutable", + "name": "account", + "nameLocation": "3326:7:22", + "nodeType": "VariableDeclaration", + "scope": 3953, + "src": "3318:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3318:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3317:17:22" + }, + "returnParameters": { + "id": 3947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3946, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3953, + "src": "3364:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3364:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3363:9:22" + }, + "scope": 4367, + "src": "3299:116:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4412 + ], + "body": { + "id": 3976, + "nodeType": "Block", + "src": "3685:103:22", + "statements": [ + { + "assignments": [ + 3964 + ], + "declarations": [ + { + "constant": false, + "id": 3964, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3703:5:22", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "3695:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3963, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3695:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3967, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3965, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5257, + "src": "3711:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3711:12:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3695:28:22" + }, + { + "expression": { + "arguments": [ + { + "id": 3969, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3964, + "src": "3743:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3970, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3956, + "src": "3750:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3971, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3958, + "src": "3754:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3968, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4097, + "src": "3733:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3733:27:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3973, + "nodeType": "ExpressionStatement", + "src": "3733:27:22" + }, + { + "expression": { + "hexValue": "74727565", + "id": 3974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3777:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3962, + "id": 3975, + "nodeType": "Return", + "src": "3770:11:22" + } + ] + }, + "documentation": { + "id": 3954, + "nodeType": "StructuredDocumentation", + "src": "3421:184:22", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." + }, + "functionSelector": "a9059cbb", + "id": 3977, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3619:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3956, + "mutability": "mutable", + "name": "to", + "nameLocation": "3636:2:22", + "nodeType": "VariableDeclaration", + "scope": 3977, + "src": "3628:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3628:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3958, + "mutability": "mutable", + "name": "value", + "nameLocation": "3648:5:22", + "nodeType": "VariableDeclaration", + "scope": 3977, + "src": "3640:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3640:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3627:27:22" + }, + "returnParameters": { + "id": 3962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3961, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3977, + "src": "3679:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3960, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3679:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3678:6:22" + }, + "scope": 4367, + "src": "3610:178:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4422 + ], + "body": { + "id": 3993, + "nodeType": "Block", + "src": "3935:51:22", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 3987, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3881, + "src": "3952:11:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 3989, + "indexExpression": { + "id": 3988, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3980, + "src": "3964:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3952:18:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3991, + "indexExpression": { + "id": 3990, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3982, + "src": "3971:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3952:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3986, + "id": 3992, + "nodeType": "Return", + "src": "3945:34:22" + } + ] + }, + "documentation": { + "id": 3978, + "nodeType": "StructuredDocumentation", + "src": "3794:47:22", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 3994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3855:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3980, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3873:5:22", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "3865:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3865:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3982, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3888:7:22", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "3880:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3880:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3864:32:22" + }, + "returnParameters": { + "id": 3986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3985, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "3926:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3926:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3925:9:22" + }, + "scope": 4367, + "src": "3846:140:22", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4432 + ], + "body": { + "id": 4017, + "nodeType": "Block", + "src": "4372:107:22", + "statements": [ + { + "assignments": [ + 4005 + ], + "declarations": [ + { + "constant": false, + "id": 4005, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4390:5:22", + "nodeType": "VariableDeclaration", + "scope": 4017, + "src": "4382:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4382:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 4008, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4006, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5257, + "src": "4398:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4398:12:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4382:28:22" + }, + { + "expression": { + "arguments": [ + { + "id": 4010, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "4429:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4011, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3997, + "src": "4436:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4012, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3999, + "src": "4445:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4009, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4258, + 4318 + ], + "referencedDeclaration": 4258, + "src": "4420:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4420:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4014, + "nodeType": "ExpressionStatement", + "src": "4420:31:22" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4468:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4003, + "id": 4016, + "nodeType": "Return", + "src": "4461:11:22" + } + ] + }, + "documentation": { + "id": 3995, + "nodeType": "StructuredDocumentation", + "src": "3992:296:22", + "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 4018, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4302:7:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3997, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4318:7:22", + "nodeType": "VariableDeclaration", + "scope": 4018, + "src": "4310:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4310:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3999, + "mutability": "mutable", + "name": "value", + "nameLocation": "4335:5:22", + "nodeType": "VariableDeclaration", + "scope": 4018, + "src": "4327:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4327:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4309:32:22" + }, + "returnParameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4018, + "src": "4366:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4001, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4366:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4365:6:22" + }, + "scope": 4367, + "src": "4293:186:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4444 + ], + "body": { + "id": 4049, + "nodeType": "Block", + "src": "5132:151:22", + "statements": [ + { + "assignments": [ + 4031 + ], + "declarations": [ + { + "constant": false, + "id": 4031, + "mutability": "mutable", + "name": "spender", + "nameLocation": "5150:7:22", + "nodeType": "VariableDeclaration", + "scope": 4049, + "src": "5142:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5142:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 4034, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4032, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5257, + "src": "5160:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5160:12:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5142:30:22" + }, + { + "expression": { + "arguments": [ + { + "id": 4036, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4021, + "src": "5198:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4037, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4031, + "src": "5204:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4038, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4025, + "src": "5213:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4035, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4366, + "src": "5182:15:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5182:37:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4040, + "nodeType": "ExpressionStatement", + "src": "5182:37:22" + }, + { + "expression": { + "arguments": [ + { + "id": 4042, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4021, + "src": "5239:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4043, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "5245:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4044, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4025, + "src": "5249:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4041, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4097, + "src": "5229:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5229:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4046, + "nodeType": "ExpressionStatement", + "src": "5229:26:22" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5272:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4029, + "id": 4048, + "nodeType": "Return", + "src": "5265:11:22" + } + ] + }, + "documentation": { + "id": 4019, + "nodeType": "StructuredDocumentation", + "src": "4485:549:22", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + }, + "functionSelector": "23b872dd", + "id": 4050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "5048:12:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4021, + "mutability": "mutable", + "name": "from", + "nameLocation": "5069:4:22", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "5061:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5061:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4023, + "mutability": "mutable", + "name": "to", + "nameLocation": "5083:2:22", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "5075:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5075:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4025, + "mutability": "mutable", + "name": "value", + "nameLocation": "5095:5:22", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "5087:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5087:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5060:41:22" + }, + "returnParameters": { + "id": 4029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4028, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "5126:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4027, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5126:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5125:6:22" + }, + "scope": 4367, + "src": "5039:244:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4096, + "nodeType": "Block", + "src": "5725:231:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4060, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "5739:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5755:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5747:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5747:7:22", + "typeDescriptions": {} + } + }, + "id": 4064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5747:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5739:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4074, + "nodeType": "IfStatement", + "src": "5735:86:22", + "trueBody": { + "id": 4073, + "nodeType": "Block", + "src": "5759:62:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5807:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5799:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4067, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5799:7:22", + "typeDescriptions": {} + } + }, + "id": 4070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5799:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4066, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3345, + "src": "5780:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5780:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4072, + "nodeType": "RevertStatement", + "src": "5773:37:22" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4075, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "5834:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5848:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5840:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5840:7:22", + "typeDescriptions": {} + } + }, + "id": 4079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5840:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5834:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4089, + "nodeType": "IfStatement", + "src": "5830:86:22", + "trueBody": { + "id": 4088, + "nodeType": "Block", + "src": "5852:64:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5902:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5894:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5894:7:22", + "typeDescriptions": {} + } + }, + "id": 4085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5894:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4081, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "5873:20:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5873:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4087, + "nodeType": "RevertStatement", + "src": "5866:39:22" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4091, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "5933:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4092, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "5939:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4093, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "5943:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4090, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4174, + "src": "5925:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5925:24:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4095, + "nodeType": "ExpressionStatement", + "src": "5925:24:22" + } + ] + }, + "documentation": { + "id": 4051, + "nodeType": "StructuredDocumentation", + "src": "5289:362:22", + "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 4097, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "5665:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "mutability": "mutable", + "name": "from", + "nameLocation": "5683:4:22", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "5675:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5675:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4055, + "mutability": "mutable", + "name": "to", + "nameLocation": "5697:2:22", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "5689:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5689:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4057, + "mutability": "mutable", + "name": "value", + "nameLocation": "5709:5:22", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "5701:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4056, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5701:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5674:41:22" + }, + "returnParameters": { + "id": 4059, + "nodeType": "ParameterList", + "parameters": [], + "src": "5725:0:22" + }, + "scope": 4367, + "src": "5656:300:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4173, + "nodeType": "Block", + "src": "6346:1032:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4107, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "6360:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6376:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6368:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6368:7:22", + "typeDescriptions": {} + } + }, + "id": 4111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6368:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6360:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4144, + "nodeType": "Block", + "src": "6534:362:22", + "statements": [ + { + "assignments": [ + 4119 + ], + "declarations": [ + { + "constant": false, + "id": 4119, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "6556:11:22", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "6548:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6548:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4123, + "initialValue": { + "baseExpression": { + "id": 4120, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3875, + "src": "6570:9:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4122, + "indexExpression": { + "id": 4121, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "6580:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6570:15:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6548:37:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4124, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4119, + "src": "6603:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4125, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "6617:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6603:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4134, + "nodeType": "IfStatement", + "src": "6599:115:22", + "trueBody": { + "id": 4133, + "nodeType": "Block", + "src": "6624:90:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4128, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "6674:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4129, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4119, + "src": "6680:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4130, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "6693:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4127, + "name": "ERC20InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3340, + "src": "6649:24:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6649:50:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4132, + "nodeType": "RevertStatement", + "src": "6642:57:22" + } + ] + } + }, + { + "id": 4143, + "nodeType": "UncheckedBlock", + "src": "6727:159:22", + "statements": [ + { + "expression": { + "id": 4141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4135, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3875, + "src": "6834:9:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4137, + "indexExpression": { + "id": 4136, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "6844:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6834:15:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4138, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4119, + "src": "6852:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4139, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "6866:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6852:19:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6834:37:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4142, + "nodeType": "ExpressionStatement", + "src": "6834:37:22" + } + ] + } + ] + }, + "id": 4145, + "nodeType": "IfStatement", + "src": "6356:540:22", + "trueBody": { + "id": 4117, + "nodeType": "Block", + "src": "6380:148:22", + "statements": [ + { + "expression": { + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4113, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "6496:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4114, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "6512:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6496:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4116, + "nodeType": "ExpressionStatement", + "src": "6496:21:22" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4146, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4102, + "src": "6910:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6924:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6916:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6916:7:22", + "typeDescriptions": {} + } + }, + "id": 4150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6916:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6910:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4165, + "nodeType": "Block", + "src": "7125:206:22", + "statements": [ + { + "id": 4164, + "nodeType": "UncheckedBlock", + "src": "7139:182:22", + "statements": [ + { + "expression": { + "id": 4162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4158, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3875, + "src": "7284:9:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4160, + "indexExpression": { + "id": 4159, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4102, + "src": "7294:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7284:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4161, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "7301:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7284:22:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4163, + "nodeType": "ExpressionStatement", + "src": "7284:22:22" + } + ] + } + ] + }, + "id": 4166, + "nodeType": "IfStatement", + "src": "6906:425:22", + "trueBody": { + "id": 4157, + "nodeType": "Block", + "src": "6928:191:22", + "statements": [ + { + "id": 4156, + "nodeType": "UncheckedBlock", + "src": "6942:167:22", + "statements": [ + { + "expression": { + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4152, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "7073:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 4153, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "7089:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7073:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4155, + "nodeType": "ExpressionStatement", + "src": "7073:21:22" + } + ] + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 4168, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "7355:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4169, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4102, + "src": "7361:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4170, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "7365:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4167, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4379, + "src": "7346:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7346:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4172, + "nodeType": "EmitStatement", + "src": "7341:30:22" + } + ] + }, + "documentation": { + "id": 4098, + "nodeType": "StructuredDocumentation", + "src": "5962:304:22", + "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." + }, + "id": 4174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "6280:7:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4100, + "mutability": "mutable", + "name": "from", + "nameLocation": "6296:4:22", + "nodeType": "VariableDeclaration", + "scope": 4174, + "src": "6288:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4099, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6288:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4102, + "mutability": "mutable", + "name": "to", + "nameLocation": "6310:2:22", + "nodeType": "VariableDeclaration", + "scope": 4174, + "src": "6302:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6302:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4104, + "mutability": "mutable", + "name": "value", + "nameLocation": "6322:5:22", + "nodeType": "VariableDeclaration", + "scope": 4174, + "src": "6314:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6314:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6287:41:22" + }, + "returnParameters": { + "id": 4106, + "nodeType": "ParameterList", + "parameters": [], + "src": "6346:0:22" + }, + "scope": 4367, + "src": "6271:1107:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4206, + "nodeType": "Block", + "src": "7777:152:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4182, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4177, + "src": "7791:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7810:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7802:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4183, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7802:7:22", + "typeDescriptions": {} + } + }, + "id": 4186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7802:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7791:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4196, + "nodeType": "IfStatement", + "src": "7787:91:22", + "trueBody": { + "id": 4195, + "nodeType": "Block", + "src": "7814:64:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7864:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7856:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7856:7:22", + "typeDescriptions": {} + } + }, + "id": 4192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7856:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4188, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "7835:20:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7835:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4194, + "nodeType": "RevertStatement", + "src": "7828:39:22" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7903:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7895:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7895:7:22", + "typeDescriptions": {} + } + }, + "id": 4201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7895:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4202, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4177, + "src": "7907:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4203, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "7916:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4197, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4174, + "src": "7887:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7887:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4205, + "nodeType": "ExpressionStatement", + "src": "7887:35:22" + } + ] + }, + "documentation": { + "id": 4175, + "nodeType": "StructuredDocumentation", + "src": "7384:332:22", + "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 4207, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7730:5:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4177, + "mutability": "mutable", + "name": "account", + "nameLocation": "7744:7:22", + "nodeType": "VariableDeclaration", + "scope": 4207, + "src": "7736:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7736:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4179, + "mutability": "mutable", + "name": "value", + "nameLocation": "7761:5:22", + "nodeType": "VariableDeclaration", + "scope": 4207, + "src": "7753:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7753:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7735:32:22" + }, + "returnParameters": { + "id": 4181, + "nodeType": "ParameterList", + "parameters": [], + "src": "7777:0:22" + }, + "scope": 4367, + "src": "7721:208:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4239, + "nodeType": "Block", + "src": "8303:150:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4215, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "8317:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8336:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8328:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8328:7:22", + "typeDescriptions": {} + } + }, + "id": 4219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8328:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8317:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4229, + "nodeType": "IfStatement", + "src": "8313:89:22", + "trueBody": { + "id": 4228, + "nodeType": "Block", + "src": "8340:62:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8388:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8380:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8380:7:22", + "typeDescriptions": {} + } + }, + "id": 4225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8380:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4221, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3345, + "src": "8361:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8361:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4227, + "nodeType": "RevertStatement", + "src": "8354:37:22" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4231, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "8419:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8436:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8428:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8428:7:22", + "typeDescriptions": {} + } + }, + "id": 4235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8428:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4236, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4212, + "src": "8440:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4230, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4174, + "src": "8411:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8411:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4238, + "nodeType": "ExpressionStatement", + "src": "8411:35:22" + } + ] + }, + "documentation": { + "id": 4208, + "nodeType": "StructuredDocumentation", + "src": "7935:307:22", + "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" + }, + "id": 4240, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "8256:5:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4210, + "mutability": "mutable", + "name": "account", + "nameLocation": "8270:7:22", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "8262:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8262:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4212, + "mutability": "mutable", + "name": "value", + "nameLocation": "8287:5:22", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "8279:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8279:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8261:32:22" + }, + "returnParameters": { + "id": 4214, + "nodeType": "ParameterList", + "parameters": [], + "src": "8303:0:22" + }, + "scope": 4367, + "src": "8247:206:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4257, + "nodeType": "Block", + "src": "9063:54:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4251, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4243, + "src": "9082:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4252, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4245, + "src": "9089:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4253, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4247, + "src": "9098:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 4254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9105:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4250, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4258, + 4318 + ], + "referencedDeclaration": 4318, + "src": "9073:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 4255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9073:37:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4256, + "nodeType": "ExpressionStatement", + "src": "9073:37:22" + } + ] + }, + "documentation": { + "id": 4241, + "nodeType": "StructuredDocumentation", + "src": "8459:525:22", + "text": " @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 4258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "8998:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4243, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9015:5:22", + "nodeType": "VariableDeclaration", + "scope": 4258, + "src": "9007:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9007:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4245, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9030:7:22", + "nodeType": "VariableDeclaration", + "scope": 4258, + "src": "9022:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9022:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4247, + "mutability": "mutable", + "name": "value", + "nameLocation": "9047:5:22", + "nodeType": "VariableDeclaration", + "scope": 4258, + "src": "9039:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9039:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9006:47:22" + }, + "returnParameters": { + "id": 4249, + "nodeType": "ParameterList", + "parameters": [], + "src": "9063:0:22" + }, + "scope": 4367, + "src": "8989:128:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4317, + "nodeType": "Block", + "src": "10047:334:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4270, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4261, + "src": "10061:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10078:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10070:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10070:7:22", + "typeDescriptions": {} + } + }, + "id": 4274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10070:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10061:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4284, + "nodeType": "IfStatement", + "src": "10057:89:22", + "trueBody": { + "id": 4283, + "nodeType": "Block", + "src": "10082:64:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10132:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10124:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10124:7:22", + "typeDescriptions": {} + } + }, + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10124:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4276, + "name": "ERC20InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "10103:20:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10103:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4282, + "nodeType": "RevertStatement", + "src": "10096:39:22" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4285, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4263, + "src": "10159:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10178:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10170:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10170:7:22", + "typeDescriptions": {} + } + }, + "id": 4289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10170:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10159:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4299, + "nodeType": "IfStatement", + "src": "10155:90:22", + "trueBody": { + "id": 4298, + "nodeType": "Block", + "src": "10182:63:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10231:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10223:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10223:7:22", + "typeDescriptions": {} + } + }, + "id": 4295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10223:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4291, + "name": "ERC20InvalidSpender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3369, + "src": "10203:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10203:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4297, + "nodeType": "RevertStatement", + "src": "10196:38:22" + } + ] + } + }, + { + "expression": { + "id": 4306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 4300, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3881, + "src": "10254:11:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4303, + "indexExpression": { + "id": 4301, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4261, + "src": "10266:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10254:18:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4304, + "indexExpression": { + "id": 4302, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4263, + "src": "10273:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10254:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4305, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "10284:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10254:35:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4307, + "nodeType": "ExpressionStatement", + "src": "10254:35:22" + }, + { + "condition": { + "id": 4308, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4267, + "src": "10303:9:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4316, + "nodeType": "IfStatement", + "src": "10299:76:22", + "trueBody": { + "id": 4315, + "nodeType": "Block", + "src": "10314:61:22", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 4310, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4261, + "src": "10342:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4311, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4263, + "src": "10349:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4312, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "10358:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4309, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4388, + "src": "10333:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10333:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4314, + "nodeType": "EmitStatement", + "src": "10328:36:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 4259, + "nodeType": "StructuredDocumentation", + "src": "9123:821:22", + "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + }, + "id": 4318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9958:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4261, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9975:5:22", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "9967:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9967:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4263, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9990:7:22", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "9982:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9982:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4265, + "mutability": "mutable", + "name": "value", + "nameLocation": "10007:5:22", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "9999:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9999:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4267, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "10019:9:22", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "10014:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4266, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10014:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9966:63:22" + }, + "returnParameters": { + "id": 4269, + "nodeType": "ParameterList", + "parameters": [], + "src": "10047:0:22" + }, + "scope": 4367, + "src": "9949:432:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4365, + "nodeType": "Block", + "src": "10752:388:22", + "statements": [ + { + "assignments": [ + 4329 + ], + "declarations": [ + { + "constant": false, + "id": 4329, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "10770:16:22", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "10762:24:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4328, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10762:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4334, + "initialValue": { + "arguments": [ + { + "id": 4331, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "10799:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4332, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "10806:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4330, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3994, + "src": "10789:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 4333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10789:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10762:52:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4335, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "10828:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 4338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10853:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10853:7:22", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 4336, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "10848:4:22", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10848:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 4340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10862:3:22", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10848:17:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10828:37:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4364, + "nodeType": "IfStatement", + "src": "10824:310:22", + "trueBody": { + "id": 4363, + "nodeType": "Block", + "src": "10867:267:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4342, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "10885:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4343, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4325, + "src": "10904:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10885:24:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4352, + "nodeType": "IfStatement", + "src": "10881:130:22", + "trueBody": { + "id": 4351, + "nodeType": "Block", + "src": "10911:100:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4346, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "10963:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4347, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "10972:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4348, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4325, + "src": "10990:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4345, + "name": "ERC20InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3359, + "src": "10936:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10936:60:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4350, + "nodeType": "RevertStatement", + "src": "10929:67:22" + } + ] + } + }, + { + "id": 4362, + "nodeType": "UncheckedBlock", + "src": "11024:100:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4354, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "11061:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4355, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "11068:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4356, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "11077:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4357, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4325, + "src": "11096:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11077:24:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 4359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11103:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4353, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4258, + 4318 + ], + "referencedDeclaration": 4318, + "src": "11052:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 4360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11052:57:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4361, + "nodeType": "ExpressionStatement", + "src": "11052:57:22" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 4319, + "nodeType": "StructuredDocumentation", + "src": "10387:271:22", + "text": " @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." + }, + "id": 4366, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "10672:15:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4321, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10696:5:22", + "nodeType": "VariableDeclaration", + "scope": 4366, + "src": "10688:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10688:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4323, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10711:7:22", + "nodeType": "VariableDeclaration", + "scope": 4366, + "src": "10703:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10703:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4325, + "mutability": "mutable", + "name": "value", + "nameLocation": "10728:5:22", + "nodeType": "VariableDeclaration", + "scope": 4366, + "src": "10720:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10720:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10687:47:22" + }, + "returnParameters": { + "id": 4327, + "nodeType": "ParameterList", + "parameters": [], + "src": "10752:0:22" + }, + "scope": 4367, + "src": "10663:477:22", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 4368, + "src": "1401:9741:22", + "usedErrors": [ + 3340, + 3345, + 3350, + 3359, + 3364, + 3369 + ], + "usedEvents": [ + 4379, + 4388 + ] + } + ], + "src": "105:11038:22" + }, + "id": 22 + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 4445 + ] + }, + "id": 4446, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4369, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:23" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4370, + "nodeType": "StructuredDocumentation", + "src": "132:70:23", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 4445, + "linearizedBaseContracts": [ + 4445 + ], + "name": "IERC20", + "nameLocation": "213:6:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 4371, + "nodeType": "StructuredDocumentation", + "src": "226:158:23", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 4379, + "name": "Transfer", + "nameLocation": "395:8:23", + "nodeType": "EventDefinition", + "parameters": { + "id": 4378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4373, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "420:4:23", + "nodeType": "VariableDeclaration", + "scope": 4379, + "src": "404:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "404:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4375, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "442:2:23", + "nodeType": "VariableDeclaration", + "scope": 4379, + "src": "426:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "426:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4377, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "454:5:23", + "nodeType": "VariableDeclaration", + "scope": 4379, + "src": "446:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "403:57:23" + }, + "src": "389:72:23" + }, + { + "anonymous": false, + "documentation": { + "id": 4380, + "nodeType": "StructuredDocumentation", + "src": "467:148:23", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 4388, + "name": "Approval", + "nameLocation": "626:8:23", + "nodeType": "EventDefinition", + "parameters": { + "id": 4387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4382, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "651:5:23", + "nodeType": "VariableDeclaration", + "scope": 4388, + "src": "635:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4381, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "635:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4384, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "674:7:23", + "nodeType": "VariableDeclaration", + "scope": 4388, + "src": "658:23:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "658:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4386, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "691:5:23", + "nodeType": "VariableDeclaration", + "scope": 4388, + "src": "683:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "683:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "634:63:23" + }, + "src": "620:78:23" + }, + { + "documentation": { + "id": 4389, + "nodeType": "StructuredDocumentation", + "src": "704:65:23", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 4394, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "783:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4390, + "nodeType": "ParameterList", + "parameters": [], + "src": "794:2:23" + }, + "returnParameters": { + "id": 4393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4392, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4394, + "src": "820:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "820:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "819:9:23" + }, + "scope": 4445, + "src": "774:55:23", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4395, + "nodeType": "StructuredDocumentation", + "src": "835:71:23", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 4402, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "920:9:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4397, + "mutability": "mutable", + "name": "account", + "nameLocation": "938:7:23", + "nodeType": "VariableDeclaration", + "scope": 4402, + "src": "930:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "930:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "929:17:23" + }, + "returnParameters": { + "id": 4401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4400, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4402, + "src": "970:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "970:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "969:9:23" + }, + "scope": 4445, + "src": "911:68:23", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4403, + "nodeType": "StructuredDocumentation", + "src": "985:213:23", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 4412, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1212:8:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4405, + "mutability": "mutable", + "name": "to", + "nameLocation": "1229:2:23", + "nodeType": "VariableDeclaration", + "scope": 4412, + "src": "1221:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1221:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4407, + "mutability": "mutable", + "name": "value", + "nameLocation": "1241:5:23", + "nodeType": "VariableDeclaration", + "scope": 4412, + "src": "1233:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1233:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1220:27:23" + }, + "returnParameters": { + "id": 4411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4410, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4412, + "src": "1266:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4409, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1266:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1265:6:23" + }, + "scope": 4445, + "src": "1203:69:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4413, + "nodeType": "StructuredDocumentation", + "src": "1278:264:23", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 4422, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1556:9:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4415, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1574:5:23", + "nodeType": "VariableDeclaration", + "scope": 4422, + "src": "1566:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1566:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4417, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1589:7:23", + "nodeType": "VariableDeclaration", + "scope": 4422, + "src": "1581:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1581:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1565:32:23" + }, + "returnParameters": { + "id": 4421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4420, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4422, + "src": "1621:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1621:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1620:9:23" + }, + "scope": 4445, + "src": "1547:83:23", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4423, + "nodeType": "StructuredDocumentation", + "src": "1636:667:23", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 4432, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2317:7:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4425, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2333:7:23", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2325:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2325:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4427, + "mutability": "mutable", + "name": "value", + "nameLocation": "2350:5:23", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2342:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2342:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2324:32:23" + }, + "returnParameters": { + "id": 4431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4430, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2375:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4429, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2375:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2374:6:23" + }, + "scope": 4445, + "src": "2308:73:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4433, + "nodeType": "StructuredDocumentation", + "src": "2387:297:23", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 4444, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2698:12:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4435, + "mutability": "mutable", + "name": "from", + "nameLocation": "2719:4:23", + "nodeType": "VariableDeclaration", + "scope": 4444, + "src": "2711:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2711:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4437, + "mutability": "mutable", + "name": "to", + "nameLocation": "2733:2:23", + "nodeType": "VariableDeclaration", + "scope": 4444, + "src": "2725:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2725:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4439, + "mutability": "mutable", + "name": "value", + "nameLocation": "2745:5:23", + "nodeType": "VariableDeclaration", + "scope": 4444, + "src": "2737:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2737:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2710:41:23" + }, + "returnParameters": { + "id": 4443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4442, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4444, + "src": "2770:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4441, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2770:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2769:6:23" + }, + "scope": 4445, + "src": "2689:87:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4446, + "src": "203:2575:23", + "usedErrors": [], + "usedEvents": [ + 4379, + 4388 + ] + } + ], + "src": "106:2673:23" + }, + "id": 23 + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 4445 + ], + "IERC20Metadata": [ + 4471 + ] + }, + "id": 4472, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4447, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "125:24:24" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 4449, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4472, + "sourceUnit": 4446, + "src": "151:37:24", + "symbolAliases": [ + { + "foreign": { + "id": 4448, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "159:6:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4451, + "name": "IERC20", + "nameLocations": [ + "305:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "305:6:24" + }, + "id": 4452, + "nodeType": "InheritanceSpecifier", + "src": "305:6:24" + } + ], + "canonicalName": "IERC20Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4450, + "nodeType": "StructuredDocumentation", + "src": "190:86:24", + "text": " @dev Interface for the optional metadata functions from the ERC20 standard." + }, + "fullyImplemented": false, + "id": 4471, + "linearizedBaseContracts": [ + 4471, + 4445 + ], + "name": "IERC20Metadata", + "nameLocation": "287:14:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4453, + "nodeType": "StructuredDocumentation", + "src": "318:54:24", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 4458, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "386:4:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4454, + "nodeType": "ParameterList", + "parameters": [], + "src": "390:2:24" + }, + "returnParameters": { + "id": 4457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4456, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4458, + "src": "416:13:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4455, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "416:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "415:15:24" + }, + "scope": 4471, + "src": "377:54:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4459, + "nodeType": "StructuredDocumentation", + "src": "437:56:24", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 4464, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "507:6:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4460, + "nodeType": "ParameterList", + "parameters": [], + "src": "513:2:24" + }, + "returnParameters": { + "id": 4463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4462, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4464, + "src": "539:13:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4461, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "539:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "538:15:24" + }, + "scope": 4471, + "src": "498:56:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4465, + "nodeType": "StructuredDocumentation", + "src": "560:65:24", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 4470, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "639:8:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4466, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:2:24" + }, + "returnParameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4470, + "src": "673:5:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4467, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "673:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "672:7:24" + }, + "scope": 4471, + "src": "630:50:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4472, + "src": "277:405:24", + "usedErrors": [], + "usedEvents": [ + 4379, + 4388 + ] + } + ], + "src": "125:558:24" + }, + "id": 24 + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "exportedSymbols": { + "IERC20Permit": [ + 4507 + ] + }, + "id": 4508, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4473, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "123:24:25" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Permit", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4474, + "nodeType": "StructuredDocumentation", + "src": "149:1963:25", + "text": " @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n token.safeTransferFrom(msg.sender, address(this), value);\n ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit." + }, + "fullyImplemented": false, + "id": 4507, + "linearizedBaseContracts": [ + 4507 + ], + "name": "IERC20Permit", + "nameLocation": "2123:12:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4475, + "nodeType": "StructuredDocumentation", + "src": "2142:850:25", + "text": " @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above." + }, + "functionSelector": "d505accf", + "id": 4492, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "3006:6:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4477, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3030:5:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3022:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3022:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4479, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3053:7:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3045:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3045:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4481, + "mutability": "mutable", + "name": "value", + "nameLocation": "3078:5:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3070:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3070:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4483, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3101:8:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3093:16:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3093:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4485, + "mutability": "mutable", + "name": "v", + "nameLocation": "3125:1:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3119:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4484, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3119:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4487, + "mutability": "mutable", + "name": "r", + "nameLocation": "3144:1:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3136:9:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3136:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4489, + "mutability": "mutable", + "name": "s", + "nameLocation": "3163:1:25", + "nodeType": "VariableDeclaration", + "scope": 4492, + "src": "3155:9:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4488, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3155:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3012:158:25" + }, + "returnParameters": { + "id": 4491, + "nodeType": "ParameterList", + "parameters": [], + "src": "3179:0:25" + }, + "scope": 4507, + "src": "2997:183:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4493, + "nodeType": "StructuredDocumentation", + "src": "3186:294:25", + "text": " @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times." + }, + "functionSelector": "7ecebe00", + "id": 4500, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "3494:6:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4495, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3509:5:25", + "nodeType": "VariableDeclaration", + "scope": 4500, + "src": "3501:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3501:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3500:15:25" + }, + "returnParameters": { + "id": 4499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4498, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4500, + "src": "3539:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4497, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3539:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3538:9:25" + }, + "scope": 4507, + "src": "3485:63:25", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4501, + "nodeType": "StructuredDocumentation", + "src": "3554:128:25", + "text": " @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." + }, + "functionSelector": "3644e515", + "id": 4506, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "3749:16:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4502, + "nodeType": "ParameterList", + "parameters": [], + "src": "3765:2:25" + }, + "returnParameters": { + "id": 4505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4504, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4506, + "src": "3791:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3791:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3790:9:25" + }, + "scope": 4507, + "src": "3740:60:25", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4508, + "src": "2113:1689:25", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "123:3680:25" + }, + "id": 25 + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "exportedSymbols": { + "Address": [ + 5245 + ], + "IERC20": [ + 4445 + ], + "IERC20Permit": [ + 4507 + ], + "SafeERC20": [ + 4797 + ] + }, + "id": 4798, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4509, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:26" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 4511, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4798, + "sourceUnit": 4446, + "src": "141:37:26", + "symbolAliases": [ + { + "foreign": { + "id": 4510, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "149:6:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "file": "../extensions/IERC20Permit.sol", + "id": 4513, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4798, + "sourceUnit": 4508, + "src": "179:60:26", + "symbolAliases": [ + { + "foreign": { + "id": 4512, + "name": "IERC20Permit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4507, + "src": "187:12:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../../utils/Address.sol", + "id": 4515, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4798, + "sourceUnit": 5246, + "src": "240:51:26", + "symbolAliases": [ + { + "foreign": { + "id": 4514, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "248:7:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeERC20", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4516, + "nodeType": "StructuredDocumentation", + "src": "293:457:26", + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 4797, + "linearizedBaseContracts": [ + 4797 + ], + "name": "SafeERC20", + "nameLocation": "759:9:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 4519, + "libraryName": { + "id": 4517, + "name": "Address", + "nameLocations": [ + "781:7:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "781:7:26" + }, + "nodeType": "UsingForDirective", + "src": "775:26:26", + "typeName": { + "id": 4518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "793:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "documentation": { + "id": 4520, + "nodeType": "StructuredDocumentation", + "src": "807:64:26", + "text": " @dev An operation with an ERC20 token failed." + }, + "errorSelector": "5274afe7", + "id": 4524, + "name": "SafeERC20FailedOperation", + "nameLocation": "882:24:26", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4522, + "mutability": "mutable", + "name": "token", + "nameLocation": "915:5:26", + "nodeType": "VariableDeclaration", + "scope": 4524, + "src": "907:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "907:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "906:15:26" + }, + "src": "876:46:26" + }, + { + "documentation": { + "id": 4525, + "nodeType": "StructuredDocumentation", + "src": "928:71:26", + "text": " @dev Indicates a failed `decreaseAllowance` request." + }, + "errorSelector": "e570110f", + "id": 4533, + "name": "SafeERC20FailedDecreaseAllowance", + "nameLocation": "1010:32:26", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4527, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1051:7:26", + "nodeType": "VariableDeclaration", + "scope": 4533, + "src": "1043:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1043:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4529, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "1068:16:26", + "nodeType": "VariableDeclaration", + "scope": 4533, + "src": "1060:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1060:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4531, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "1094:17:26", + "nodeType": "VariableDeclaration", + "scope": 4533, + "src": "1086:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1086:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1042:70:26" + }, + "src": "1004:109:26" + }, + { + "body": { + "id": 4556, + "nodeType": "Block", + "src": "1375:88:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4545, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4537, + "src": "1405:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4548, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4537, + "src": "1427:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1433:8:26", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4412, + "src": "1427:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4550, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "1444:2:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4551, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4541, + "src": "1448:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4552, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1443:11:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 4546, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1412:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1416:10:26", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1412:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1412:43:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4544, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "1385:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1385:71:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4555, + "nodeType": "ExpressionStatement", + "src": "1385:71:26" + } + ] + }, + "documentation": { + "id": 4534, + "nodeType": "StructuredDocumentation", + "src": "1119:179:26", + "text": " @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 4557, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "1312:12:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4537, + "mutability": "mutable", + "name": "token", + "nameLocation": "1332:5:26", + "nodeType": "VariableDeclaration", + "scope": 4557, + "src": "1325:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4536, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4535, + "name": "IERC20", + "nameLocations": [ + "1325:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "1325:6:26" + }, + "referencedDeclaration": 4445, + "src": "1325:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4539, + "mutability": "mutable", + "name": "to", + "nameLocation": "1347:2:26", + "nodeType": "VariableDeclaration", + "scope": 4557, + "src": "1339:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1339:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4541, + "mutability": "mutable", + "name": "value", + "nameLocation": "1359:5:26", + "nodeType": "VariableDeclaration", + "scope": 4557, + "src": "1351:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1351:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1324:41:26" + }, + "returnParameters": { + "id": 4543, + "nodeType": "ParameterList", + "parameters": [], + "src": "1375:0:26" + }, + "scope": 4797, + "src": "1303:160:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4583, + "nodeType": "Block", + "src": "1792:98:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4571, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4561, + "src": "1822:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4574, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4561, + "src": "1844:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1850:12:26", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4444, + "src": "1844:18:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4576, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4563, + "src": "1865:4:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4577, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4565, + "src": "1871:2:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4567, + "src": "1875:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4579, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1864:17:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + ], + "expression": { + "id": 4572, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1829:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1833:10:26", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1829:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1829:53:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4570, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "1802:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1802:81:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4582, + "nodeType": "ExpressionStatement", + "src": "1802:81:26" + } + ] + }, + "documentation": { + "id": 4558, + "nodeType": "StructuredDocumentation", + "src": "1469:228:26", + "text": " @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful." + }, + "id": 4584, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1711:16:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4561, + "mutability": "mutable", + "name": "token", + "nameLocation": "1735:5:26", + "nodeType": "VariableDeclaration", + "scope": 4584, + "src": "1728:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4560, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4559, + "name": "IERC20", + "nameLocations": [ + "1728:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "1728:6:26" + }, + "referencedDeclaration": 4445, + "src": "1728:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4563, + "mutability": "mutable", + "name": "from", + "nameLocation": "1750:4:26", + "nodeType": "VariableDeclaration", + "scope": 4584, + "src": "1742:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1742:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4565, + "mutability": "mutable", + "name": "to", + "nameLocation": "1764:2:26", + "nodeType": "VariableDeclaration", + "scope": 4584, + "src": "1756:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4567, + "mutability": "mutable", + "name": "value", + "nameLocation": "1776:5:26", + "nodeType": "VariableDeclaration", + "scope": 4584, + "src": "1768:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1727:55:26" + }, + "returnParameters": { + "id": 4569, + "nodeType": "ParameterList", + "parameters": [], + "src": "1792:0:26" + }, + "scope": 4797, + "src": "1702:188:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4614, + "nodeType": "Block", + "src": "2167:139:26", + "statements": [ + { + "assignments": [ + 4596 + ], + "declarations": [ + { + "constant": false, + "id": 4596, + "mutability": "mutable", + "name": "oldAllowance", + "nameLocation": "2185:12:26", + "nodeType": "VariableDeclaration", + "scope": 4614, + "src": "2177:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2177:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4605, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 4601, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2224:4:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$4797", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$4797", + "typeString": "library SafeERC20" + } + ], + "id": 4600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2216:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2216:7:26", + "typeDescriptions": {} + } + }, + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2216:13:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4603, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "2231:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 4597, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4588, + "src": "2200:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2206:9:26", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4422, + "src": "2200:15:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 4604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2200:39:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2177:62:26" + }, + { + "expression": { + "arguments": [ + { + "id": 4607, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4588, + "src": "2262:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "id": 4608, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "2269:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4609, + "name": "oldAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4596, + "src": "2278:12:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 4610, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "2293:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2278:20:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4606, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4705, + "src": "2249:12:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2249:50:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4613, + "nodeType": "ExpressionStatement", + "src": "2249:50:26" + } + ] + }, + "documentation": { + "id": 4585, + "nodeType": "StructuredDocumentation", + "src": "1896:180:26", + "text": " @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 4615, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nameLocation": "2090:21:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4588, + "mutability": "mutable", + "name": "token", + "nameLocation": "2119:5:26", + "nodeType": "VariableDeclaration", + "scope": 4615, + "src": "2112:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4587, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4586, + "name": "IERC20", + "nameLocations": [ + "2112:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "2112:6:26" + }, + "referencedDeclaration": 4445, + "src": "2112:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2134:7:26", + "nodeType": "VariableDeclaration", + "scope": 4615, + "src": "2126:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2126:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4592, + "mutability": "mutable", + "name": "value", + "nameLocation": "2151:5:26", + "nodeType": "VariableDeclaration", + "scope": 4615, + "src": "2143:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2143:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2111:46:26" + }, + "returnParameters": { + "id": 4594, + "nodeType": "ParameterList", + "parameters": [], + "src": "2167:0:26" + }, + "scope": 4797, + "src": "2081:225:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4657, + "nodeType": "Block", + "src": "2607:370:26", + "statements": [ + { + "id": 4656, + "nodeType": "UncheckedBlock", + "src": "2617:354:26", + "statements": [ + { + "assignments": [ + 4627 + ], + "declarations": [ + { + "constant": false, + "id": 4627, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "2649:16:26", + "nodeType": "VariableDeclaration", + "scope": 4656, + "src": "2641:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2641:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4636, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 4632, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2692:4:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$4797", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$4797", + "typeString": "library SafeERC20" + } + ], + "id": 4631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2684:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:26", + "typeDescriptions": {} + } + }, + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2684:13:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4634, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4621, + "src": "2699:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 4628, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4619, + "src": "2668:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2674:9:26", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4422, + "src": "2668:15:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2668:39:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2641:66:26" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4637, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4627, + "src": "2725:16:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4638, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4623, + "src": "2744:17:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2725:36:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4647, + "nodeType": "IfStatement", + "src": "2721:160:26", + "trueBody": { + "id": 4646, + "nodeType": "Block", + "src": "2763:118:26", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4641, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4621, + "src": "2821:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4642, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4627, + "src": "2830:16:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4643, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4623, + "src": "2848:17:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4640, + "name": "SafeERC20FailedDecreaseAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4533, + "src": "2788:32:26", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2788:78:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4645, + "nodeType": "RevertStatement", + "src": "2781:85:26" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4649, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4619, + "src": "2907:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "id": 4650, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4621, + "src": "2914:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4651, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4627, + "src": "2923:16:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4652, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4623, + "src": "2942:17:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2923:36:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4648, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4705, + "src": "2894:12:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2894:66:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4655, + "nodeType": "ExpressionStatement", + "src": "2894:66:26" + } + ] + } + ] + }, + "documentation": { + "id": 4616, + "nodeType": "StructuredDocumentation", + "src": "2312:192:26", + "text": " @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful." + }, + "id": 4658, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nameLocation": "2518:21:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4619, + "mutability": "mutable", + "name": "token", + "nameLocation": "2547:5:26", + "nodeType": "VariableDeclaration", + "scope": 4658, + "src": "2540:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4618, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4617, + "name": "IERC20", + "nameLocations": [ + "2540:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "2540:6:26" + }, + "referencedDeclaration": 4445, + "src": "2540:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4621, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2562:7:26", + "nodeType": "VariableDeclaration", + "scope": 4658, + "src": "2554:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4620, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2554:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4623, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "2579:17:26", + "nodeType": "VariableDeclaration", + "scope": 4658, + "src": "2571:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2571:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2539:58:26" + }, + "returnParameters": { + "id": 4625, + "nodeType": "ParameterList", + "parameters": [], + "src": "2607:0:26" + }, + "scope": 4797, + "src": "2509:468:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4704, + "nodeType": "Block", + "src": "3373:303:26", + "statements": [ + { + "assignments": [ + 4670 + ], + "declarations": [ + { + "constant": false, + "id": 4670, + "mutability": "mutable", + "name": "approvalCall", + "nameLocation": "3396:12:26", + "nodeType": "VariableDeclaration", + "scope": 4704, + "src": "3383:25:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4669, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3383:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4679, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4673, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "3426:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3432:7:26", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4432, + "src": "3426:13:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4675, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "3442:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4676, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "3451:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4677, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3441:16:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 4671, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3411:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3415:10:26", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "3411:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3411:47:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3383:75:26" + }, + { + "condition": { + "id": 4684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3473:45:26", + "subExpression": { + "arguments": [ + { + "id": 4681, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "3498:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "id": 4682, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4670, + "src": "3505:12:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4680, + "name": "_callOptionalReturnBool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4796, + "src": "3474:23:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (contract IERC20,bytes memory) returns (bool)" + } + }, + "id": 4683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3474:44:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4703, + "nodeType": "IfStatement", + "src": "3469:201:26", + "trueBody": { + "id": 4702, + "nodeType": "Block", + "src": "3520:150:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4686, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "3554:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4689, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "3576:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 4690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3582:7:26", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4432, + "src": "3576:13:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4691, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "3592:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 4692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3601:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 4693, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3591:12:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + ], + "expression": { + "id": 4687, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3561:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3565:10:26", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "3561:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3561:43:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4685, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "3534:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3534:71:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4696, + "nodeType": "ExpressionStatement", + "src": "3534:71:26" + }, + { + "expression": { + "arguments": [ + { + "id": 4698, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "3639:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "id": 4699, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4670, + "src": "3646:12:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4697, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "3619:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3619:40:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4701, + "nodeType": "ExpressionStatement", + "src": "3619:40:26" + } + ] + } + } + ] + }, + "documentation": { + "id": 4659, + "nodeType": "StructuredDocumentation", + "src": "2983:308:26", + "text": " @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT." + }, + "id": 4705, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "forceApprove", + "nameLocation": "3305:12:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4662, + "mutability": "mutable", + "name": "token", + "nameLocation": "3325:5:26", + "nodeType": "VariableDeclaration", + "scope": 4705, + "src": "3318:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4661, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4660, + "name": "IERC20", + "nameLocations": [ + "3318:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "3318:6:26" + }, + "referencedDeclaration": 4445, + "src": "3318:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4664, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3340:7:26", + "nodeType": "VariableDeclaration", + "scope": 4705, + "src": "3332:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3332:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4666, + "mutability": "mutable", + "name": "value", + "nameLocation": "3357:5:26", + "nodeType": "VariableDeclaration", + "scope": 4705, + "src": "3349:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3349:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3317:46:26" + }, + "returnParameters": { + "id": 4668, + "nodeType": "ParameterList", + "parameters": [], + "src": "3373:0:26" + }, + "scope": 4797, + "src": "3296:380:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4746, + "nodeType": "Block", + "src": "4129:559:26", + "statements": [ + { + "assignments": [ + 4715 + ], + "declarations": [ + { + "constant": false, + "id": 4715, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4491:10:26", + "nodeType": "VariableDeclaration", + "scope": 4746, + "src": "4478:23:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4478:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4723, + "initialValue": { + "arguments": [ + { + "id": 4721, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4711, + "src": "4532:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4718, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4709, + "src": "4512:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 4717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4504:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4504:7:26", + "typeDescriptions": {} + } + }, + "id": 4719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4504:14:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4519:12:26", + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5066, + "src": "4504:27:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 4722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4504:33:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4478:59:26" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4724, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4715, + "src": "4551:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4562:6:26", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4551:17:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 4726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4572:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4551:22:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 4735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4577:31:26", + "subExpression": { + "arguments": [ + { + "id": 4730, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4715, + "src": "4589:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 4732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4602:4:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 4731, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4602:4:26", + "typeDescriptions": {} + } + } + ], + "id": 4733, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4601:6:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "id": 4728, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4578:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4582:6:26", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4578:10:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4578:30:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4551:57:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4745, + "nodeType": "IfStatement", + "src": "4547:135:26", + "trueBody": { + "id": 4744, + "nodeType": "Block", + "src": "4610:72:26", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4740, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4709, + "src": "4664:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 4739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4656:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4656:7:26", + "typeDescriptions": {} + } + }, + "id": 4741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4656:14:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4737, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4524, + "src": "4631:24:26", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4631:40:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4743, + "nodeType": "RevertStatement", + "src": "4624:47:26" + } + ] + } + } + ] + }, + "documentation": { + "id": 4706, + "nodeType": "StructuredDocumentation", + "src": "3682:372:26", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 4747, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nameLocation": "4068:19:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4709, + "mutability": "mutable", + "name": "token", + "nameLocation": "4095:5:26", + "nodeType": "VariableDeclaration", + "scope": 4747, + "src": "4088:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4708, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4707, + "name": "IERC20", + "nameLocations": [ + "4088:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "4088:6:26" + }, + "referencedDeclaration": 4445, + "src": "4088:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4711, + "mutability": "mutable", + "name": "data", + "nameLocation": "4115:4:26", + "nodeType": "VariableDeclaration", + "scope": 4747, + "src": "4102:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4710, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4102:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4087:33:26" + }, + "returnParameters": { + "id": 4713, + "nodeType": "ParameterList", + "parameters": [], + "src": "4129:0:26" + }, + "scope": 4797, + "src": "4059:629:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4795, + "nodeType": "Block", + "src": "5278:489:26", + "statements": [ + { + "assignments": [ + 4759, + 4761 + ], + "declarations": [ + { + "constant": false, + "id": 4759, + "mutability": "mutable", + "name": "success", + "nameLocation": "5579:7:26", + "nodeType": "VariableDeclaration", + "scope": 4795, + "src": "5574:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4758, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5574:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4761, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5601:10:26", + "nodeType": "VariableDeclaration", + "scope": 4795, + "src": "5588:23:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4760, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5588:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4769, + "initialValue": { + "arguments": [ + { + "id": 4767, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4753, + "src": "5635:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4764, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4751, + "src": "5623:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 4763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5615:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4762, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5615:7:26", + "typeDescriptions": {} + } + }, + "id": 4765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5615:14:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5630:4:26", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5615:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 4768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5615:25:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5573:67:26" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4770, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4759, + "src": "5657:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4771, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4761, + "src": "5669:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5680:6:26", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5669:17:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5690:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5669:22:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 4777, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4761, + "src": "5706:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 4779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5719:4:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 4778, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5719:4:26", + "typeDescriptions": {} + } + } + ], + "id": 4780, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5718:6:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "id": 4775, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5695:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5699:6:26", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5695:10:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5695:30:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5669:56:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 4783, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5668:58:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5657:69:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 4787, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4751, + "src": "5738:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 4786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5730:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4785, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5730:7:26", + "typeDescriptions": {} + } + }, + "id": 4788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5730:14:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5745:4:26", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5730:19:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5750:6:26", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5730:26:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5730:30:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5657:103:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4757, + "id": 4794, + "nodeType": "Return", + "src": "5650:110:26" + } + ] + }, + "documentation": { + "id": 4748, + "nodeType": "StructuredDocumentation", + "src": "4694:490:26", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead." + }, + "id": 4796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturnBool", + "nameLocation": "5198:23:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4751, + "mutability": "mutable", + "name": "token", + "nameLocation": "5229:5:26", + "nodeType": "VariableDeclaration", + "scope": 4796, + "src": "5222:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4750, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4749, + "name": "IERC20", + "nameLocations": [ + "5222:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "5222:6:26" + }, + "referencedDeclaration": 4445, + "src": "5222:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4753, + "mutability": "mutable", + "name": "data", + "nameLocation": "5249:4:26", + "nodeType": "VariableDeclaration", + "scope": 4796, + "src": "5236:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4752, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5236:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5221:33:26" + }, + "returnParameters": { + "id": 4757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4756, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4796, + "src": "5272:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4755, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5272:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5271:6:26" + }, + "scope": 4797, + "src": "5189:578:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 4798, + "src": "751:5018:26", + "usedErrors": [ + 4524, + 4533 + ], + "usedEvents": [] + } + ], + "src": "115:5655:26" + }, + "id": 26 + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC165": [ + 6000 + ], + "IERC721": [ + 4914 + ] + }, + "id": 4915, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4799, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:27" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../../utils/introspection/IERC165.sol", + "id": 4801, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4915, + "sourceUnit": 6001, + "src": "134:62:27", + "symbolAliases": [ + { + "foreign": { + "id": 4800, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "142:7:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4803, + "name": "IERC165", + "nameLocations": [ + "287:7:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6000, + "src": "287:7:27" + }, + "id": 4804, + "nodeType": "InheritanceSpecifier", + "src": "287:7:27" + } + ], + "canonicalName": "IERC721", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4802, + "nodeType": "StructuredDocumentation", + "src": "198:67:27", + "text": " @dev Required interface of an ERC721 compliant contract." + }, + "fullyImplemented": false, + "id": 4914, + "linearizedBaseContracts": [ + 4914, + 6000 + ], + "name": "IERC721", + "nameLocation": "276:7:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 4805, + "nodeType": "StructuredDocumentation", + "src": "301:88:27", + "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 4813, + "name": "Transfer", + "nameLocation": "400:8:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 4812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4807, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "425:4:27", + "nodeType": "VariableDeclaration", + "scope": 4813, + "src": "409:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "409:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4809, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "447:2:27", + "nodeType": "VariableDeclaration", + "scope": 4813, + "src": "431:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "431:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4811, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "467:7:27", + "nodeType": "VariableDeclaration", + "scope": 4813, + "src": "451:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4810, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "451:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "408:67:27" + }, + "src": "394:82:27" + }, + { + "anonymous": false, + "documentation": { + "id": 4814, + "nodeType": "StructuredDocumentation", + "src": "482:94:27", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 4822, + "name": "Approval", + "nameLocation": "587:8:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 4821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4816, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "612:5:27", + "nodeType": "VariableDeclaration", + "scope": 4822, + "src": "596:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "596:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4818, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nameLocation": "635:8:27", + "nodeType": "VariableDeclaration", + "scope": 4822, + "src": "619:24:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4820, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "661:7:27", + "nodeType": "VariableDeclaration", + "scope": 4822, + "src": "645:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "595:74:27" + }, + "src": "581:89:27" + }, + { + "anonymous": false, + "documentation": { + "id": 4823, + "nodeType": "StructuredDocumentation", + "src": "676:117:27", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 4831, + "name": "ApprovalForAll", + "nameLocation": "804:14:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 4830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4825, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "835:5:27", + "nodeType": "VariableDeclaration", + "scope": 4831, + "src": "819:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4824, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "819:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4827, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "858:8:27", + "nodeType": "VariableDeclaration", + "scope": 4831, + "src": "842:24:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "842:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4829, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "873:8:27", + "nodeType": "VariableDeclaration", + "scope": 4831, + "src": "868:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4828, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "868:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "818:64:27" + }, + "src": "798:85:27" + }, + { + "documentation": { + "id": 4832, + "nodeType": "StructuredDocumentation", + "src": "889:76:27", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 4839, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "979:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4834, + "mutability": "mutable", + "name": "owner", + "nameLocation": "997:5:27", + "nodeType": "VariableDeclaration", + "scope": 4839, + "src": "989:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "989:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "988:15:27" + }, + "returnParameters": { + "id": 4838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4837, + "mutability": "mutable", + "name": "balance", + "nameLocation": "1035:7:27", + "nodeType": "VariableDeclaration", + "scope": 4839, + "src": "1027:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1027:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1026:17:27" + }, + "scope": 4914, + "src": "970:74:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4840, + "nodeType": "StructuredDocumentation", + "src": "1050:131:27", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 4847, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1195:7:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4842, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1211:7:27", + "nodeType": "VariableDeclaration", + "scope": 4847, + "src": "1203:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1203:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1202:17:27" + }, + "returnParameters": { + "id": 4846, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4845, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1251:5:27", + "nodeType": "VariableDeclaration", + "scope": 4847, + "src": "1243:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4844, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1243:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1242:15:27" + }, + "scope": 4914, + "src": "1186:72:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4848, + "nodeType": "StructuredDocumentation", + "src": "1264:565:27", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "b88d4fde", + "id": 4859, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1843:16:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4850, + "mutability": "mutable", + "name": "from", + "nameLocation": "1868:4:27", + "nodeType": "VariableDeclaration", + "scope": 4859, + "src": "1860:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1860:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4852, + "mutability": "mutable", + "name": "to", + "nameLocation": "1882:2:27", + "nodeType": "VariableDeclaration", + "scope": 4859, + "src": "1874:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1874:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4854, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1894:7:27", + "nodeType": "VariableDeclaration", + "scope": 4859, + "src": "1886:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1886:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4856, + "mutability": "mutable", + "name": "data", + "nameLocation": "1918:4:27", + "nodeType": "VariableDeclaration", + "scope": 4859, + "src": "1903:19:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4855, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1903:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1859:64:27" + }, + "returnParameters": { + "id": 4858, + "nodeType": "ParameterList", + "parameters": [], + "src": "1932:0:27" + }, + "scope": 4914, + "src": "1834:99:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4860, + "nodeType": "StructuredDocumentation", + "src": "1939:705:27", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "42842e0e", + "id": 4869, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "2658:16:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4862, + "mutability": "mutable", + "name": "from", + "nameLocation": "2683:4:27", + "nodeType": "VariableDeclaration", + "scope": 4869, + "src": "2675:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4861, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2675:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4864, + "mutability": "mutable", + "name": "to", + "nameLocation": "2697:2:27", + "nodeType": "VariableDeclaration", + "scope": 4869, + "src": "2689:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2689:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4866, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2709:7:27", + "nodeType": "VariableDeclaration", + "scope": 4869, + "src": "2701:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2701:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2674:43:27" + }, + "returnParameters": { + "id": 4868, + "nodeType": "ParameterList", + "parameters": [], + "src": "2726:0:27" + }, + "scope": 4914, + "src": "2649:78:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4870, + "nodeType": "StructuredDocumentation", + "src": "2733:732:27", + "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 4879, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "3479:12:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4872, + "mutability": "mutable", + "name": "from", + "nameLocation": "3500:4:27", + "nodeType": "VariableDeclaration", + "scope": 4879, + "src": "3492:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4871, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3492:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4874, + "mutability": "mutable", + "name": "to", + "nameLocation": "3514:2:27", + "nodeType": "VariableDeclaration", + "scope": 4879, + "src": "3506:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3506:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4876, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3526:7:27", + "nodeType": "VariableDeclaration", + "scope": 4879, + "src": "3518:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3518:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3491:43:27" + }, + "returnParameters": { + "id": 4878, + "nodeType": "ParameterList", + "parameters": [], + "src": "3543:0:27" + }, + "scope": 4914, + "src": "3470:74:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4880, + "nodeType": "StructuredDocumentation", + "src": "3550:452:27", + "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 4887, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4016:7:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4882, + "mutability": "mutable", + "name": "to", + "nameLocation": "4032:2:27", + "nodeType": "VariableDeclaration", + "scope": 4887, + "src": "4024:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4881, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4024:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4884, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4044:7:27", + "nodeType": "VariableDeclaration", + "scope": 4887, + "src": "4036:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4036:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4023:29:27" + }, + "returnParameters": { + "id": 4886, + "nodeType": "ParameterList", + "parameters": [], + "src": "4061:0:27" + }, + "scope": 4914, + "src": "4007:55:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4888, + "nodeType": "StructuredDocumentation", + "src": "4068:315:27", + "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event." + }, + "functionSelector": "a22cb465", + "id": 4895, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "4397:17:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4890, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4423:8:27", + "nodeType": "VariableDeclaration", + "scope": 4895, + "src": "4415:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4892, + "mutability": "mutable", + "name": "approved", + "nameLocation": "4438:8:27", + "nodeType": "VariableDeclaration", + "scope": 4895, + "src": "4433:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4891, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4433:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4414:33:27" + }, + "returnParameters": { + "id": 4894, + "nodeType": "ParameterList", + "parameters": [], + "src": "4456:0:27" + }, + "scope": 4914, + "src": "4388:69:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4896, + "nodeType": "StructuredDocumentation", + "src": "4463:139:27", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 4903, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "4616:11:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4898, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4636:7:27", + "nodeType": "VariableDeclaration", + "scope": 4903, + "src": "4628:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4628:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4627:17:27" + }, + "returnParameters": { + "id": 4902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4901, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4676:8:27", + "nodeType": "VariableDeclaration", + "scope": 4903, + "src": "4668:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4668:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4667:18:27" + }, + "scope": 4914, + "src": "4607:79:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4904, + "nodeType": "StructuredDocumentation", + "src": "4692:138:27", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 4913, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "4844:16:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4906, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4869:5:27", + "nodeType": "VariableDeclaration", + "scope": 4913, + "src": "4861:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4861:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4908, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4884:8:27", + "nodeType": "VariableDeclaration", + "scope": 4913, + "src": "4876:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4876:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4860:33:27" + }, + "returnParameters": { + "id": 4912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4911, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4913, + "src": "4917:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4910, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4917:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4916:6:27" + }, + "scope": 4914, + "src": "4835:88:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4915, + "src": "266:4659:27", + "usedErrors": [], + "usedEvents": [ + 4813, + 4822, + 4831 + ] + } + ], + "src": "108:4818:27" + }, + "id": 27 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 4932 + ] + }, + "id": 4933, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4916, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "116:24:28" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Receiver", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4917, + "nodeType": "StructuredDocumentation", + "src": "142:152:28", + "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts." + }, + "fullyImplemented": false, + "id": 4932, + "linearizedBaseContracts": [ + 4932 + ], + "name": "IERC721Receiver", + "nameLocation": "305:15:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4918, + "nodeType": "StructuredDocumentation", + "src": "327:500:28", + "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 4931, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "841:16:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4920, + "mutability": "mutable", + "name": "operator", + "nameLocation": "875:8:28", + "nodeType": "VariableDeclaration", + "scope": 4931, + "src": "867:16:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4922, + "mutability": "mutable", + "name": "from", + "nameLocation": "901:4:28", + "nodeType": "VariableDeclaration", + "scope": 4931, + "src": "893:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "893:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4924, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "923:7:28", + "nodeType": "VariableDeclaration", + "scope": 4931, + "src": "915:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4923, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "915:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4926, + "mutability": "mutable", + "name": "data", + "nameLocation": "955:4:28", + "nodeType": "VariableDeclaration", + "scope": 4931, + "src": "940:19:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4925, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "940:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "857:108:28" + }, + "returnParameters": { + "id": 4930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4929, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4931, + "src": "984:6:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4928, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "984:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "983:8:28" + }, + "scope": 4932, + "src": "832:160:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4933, + "src": "295:699:28", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "116:879:28" + }, + "id": 28 + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721": [ + 4914 + ], + "IERC721Enumerable": [ + 4964 + ] + }, + "id": 4965, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4934, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "129:24:29" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../IERC721.sol", + "id": 4936, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4965, + "sourceUnit": 4915, + "src": "155:39:29", + "symbolAliases": [ + { + "foreign": { + "id": 4935, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "163:7:29", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4938, + "name": "IERC721", + "nameLocations": [ + "364:7:29" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "364:7:29" + }, + "id": 4939, + "nodeType": "InheritanceSpecifier", + "src": "364:7:29" + } + ], + "canonicalName": "IERC721Enumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4937, + "nodeType": "StructuredDocumentation", + "src": "196:136:29", + "text": " @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 4964, + "linearizedBaseContracts": [ + 4964, + 4914, + 6000 + ], + "name": "IERC721Enumerable", + "nameLocation": "343:17:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4940, + "nodeType": "StructuredDocumentation", + "src": "378:82:29", + "text": " @dev Returns the total amount of tokens stored by the contract." + }, + "functionSelector": "18160ddd", + "id": 4945, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "474:11:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4941, + "nodeType": "ParameterList", + "parameters": [], + "src": "485:2:29" + }, + "returnParameters": { + "id": 4944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4943, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4945, + "src": "511:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "511:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "510:9:29" + }, + "scope": 4964, + "src": "465:55:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4946, + "nodeType": "StructuredDocumentation", + "src": "526:171:29", + "text": " @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens." + }, + "functionSelector": "2f745c59", + "id": 4955, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "711:19:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4948, + "mutability": "mutable", + "name": "owner", + "nameLocation": "739:5:29", + "nodeType": "VariableDeclaration", + "scope": 4955, + "src": "731:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4950, + "mutability": "mutable", + "name": "index", + "nameLocation": "754:5:29", + "nodeType": "VariableDeclaration", + "scope": 4955, + "src": "746:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "730:30:29" + }, + "returnParameters": { + "id": 4954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4953, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4955, + "src": "784:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "784:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "783:9:29" + }, + "scope": 4964, + "src": "702:91:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4956, + "nodeType": "StructuredDocumentation", + "src": "799:164:29", + "text": " @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens." + }, + "functionSelector": "4f6ccce7", + "id": 4963, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "977:12:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4958, + "mutability": "mutable", + "name": "index", + "nameLocation": "998:5:29", + "nodeType": "VariableDeclaration", + "scope": 4963, + "src": "990:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "990:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "989:15:29" + }, + "returnParameters": { + "id": 4962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4961, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4963, + "src": "1028:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1028:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1027:9:29" + }, + "scope": 4964, + "src": "968:69:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4965, + "src": "333:706:29", + "usedErrors": [], + "usedEvents": [ + 4813, + 4822, + 4831 + ] + } + ], + "src": "129:911:29" + }, + "id": 29 + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721": [ + 4914 + ], + "IERC721Metadata": [ + 4992 + ] + }, + "id": 4993, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4966, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "127:24:30" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../IERC721.sol", + "id": 4968, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4993, + "sourceUnit": 4915, + "src": "153:39:30", + "symbolAliases": [ + { + "foreign": { + "id": 4967, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "161:7:30", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4970, + "name": "IERC721", + "nameLocations": [ + "357:7:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "357:7:30" + }, + "id": 4971, + "nodeType": "InheritanceSpecifier", + "src": "357:7:30" + } + ], + "canonicalName": "IERC721Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4969, + "nodeType": "StructuredDocumentation", + "src": "194:133:30", + "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 4992, + "linearizedBaseContracts": [ + 4992, + 4914, + 6000 + ], + "name": "IERC721Metadata", + "nameLocation": "338:15:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4972, + "nodeType": "StructuredDocumentation", + "src": "371:58:30", + "text": " @dev Returns the token collection name." + }, + "functionSelector": "06fdde03", + "id": 4977, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "443:4:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4973, + "nodeType": "ParameterList", + "parameters": [], + "src": "447:2:30" + }, + "returnParameters": { + "id": 4976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4975, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4977, + "src": "473:13:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4974, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "473:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "472:15:30" + }, + "scope": 4992, + "src": "434:54:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4978, + "nodeType": "StructuredDocumentation", + "src": "494:60:30", + "text": " @dev Returns the token collection symbol." + }, + "functionSelector": "95d89b41", + "id": 4983, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "568:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4979, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:2:30" + }, + "returnParameters": { + "id": 4982, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4981, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4983, + "src": "600:13:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4980, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "600:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "599:15:30" + }, + "scope": 4992, + "src": "559:56:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4984, + "nodeType": "StructuredDocumentation", + "src": "621:90:30", + "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token." + }, + "functionSelector": "c87b56dd", + "id": 4991, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "725:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4986, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "742:7:30", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "734:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4985, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "734:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "733:17:30" + }, + "returnParameters": { + "id": 4990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4989, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "774:13:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4988, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "774:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "773:15:30" + }, + "scope": 4992, + "src": "716:73:30", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4993, + "src": "328:463:30", + "usedErrors": [], + "usedEvents": [ + 4813, + 4822, + 4831 + ] + } + ], + "src": "127:665:30" + }, + "id": 30 + }, + "@openzeppelin/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 5245 + ] + }, + "id": 5246, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4994, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:31" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4995, + "nodeType": "StructuredDocumentation", + "src": "127:67:31", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 5245, + "linearizedBaseContracts": [ + 5245 + ], + "name": "Address", + "nameLocation": "203:7:31", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4996, + "nodeType": "StructuredDocumentation", + "src": "217:94:31", + "text": " @dev The ETH balance of the account is not enough to perform the operation." + }, + "errorSelector": "cd786059", + "id": 5000, + "name": "AddressInsufficientBalance", + "nameLocation": "322:26:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4998, + "mutability": "mutable", + "name": "account", + "nameLocation": "357:7:31", + "nodeType": "VariableDeclaration", + "scope": 5000, + "src": "349:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "349:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "348:17:31" + }, + "src": "316:50:31" + }, + { + "documentation": { + "id": 5001, + "nodeType": "StructuredDocumentation", + "src": "372:75:31", + "text": " @dev There's no code at `target` (it is not a contract)." + }, + "errorSelector": "9996b315", + "id": 5005, + "name": "AddressEmptyCode", + "nameLocation": "458:16:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5003, + "mutability": "mutable", + "name": "target", + "nameLocation": "483:6:31", + "nodeType": "VariableDeclaration", + "scope": 5005, + "src": "475:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "474:16:31" + }, + "src": "452:39:31" + }, + { + "documentation": { + "id": 5006, + "nodeType": "StructuredDocumentation", + "src": "497:89:31", + "text": " @dev A call to an address target failed. The target may have reverted." + }, + "errorSelector": "1425ea42", + "id": 5008, + "name": "FailedInnerCall", + "nameLocation": "597:15:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5007, + "nodeType": "ParameterList", + "parameters": [], + "src": "612:2:31" + }, + "src": "591:24:31" + }, + { + "body": { + "id": 5048, + "nodeType": "Block", + "src": "1602:260:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 5018, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1624:4:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + ], + "id": 5017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1616:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5016, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1616:7:31", + "typeDescriptions": {} + } + }, + "id": 5019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1616:13:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1630:7:31", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1616:21:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5021, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5013, + "src": "1640:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1616:30:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5031, + "nodeType": "IfStatement", + "src": "1612:109:31", + "trueBody": { + "id": 5030, + "nodeType": "Block", + "src": "1648:73:31", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 5026, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1704:4:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + ], + "id": 5025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1696:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1696:7:31", + "typeDescriptions": {} + } + }, + "id": 5027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1696:13:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5023, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5000, + "src": "1669:26:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1669:41:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5029, + "nodeType": "RevertStatement", + "src": "1662:48:31" + } + ] + } + }, + { + "assignments": [ + 5033, + null + ], + "declarations": [ + { + "constant": false, + "id": 5033, + "mutability": "mutable", + "name": "success", + "nameLocation": "1737:7:31", + "nodeType": "VariableDeclaration", + "scope": 5048, + "src": "1732:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5032, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1732:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 5040, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 5038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1780:2:31", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 5034, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5011, + "src": "1750:9:31", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1760:4:31", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1750:14:31", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 5036, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5013, + "src": "1772:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1750:29:31", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1750:33:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1731:52:31" + }, + { + "condition": { + "id": 5042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1797:8:31", + "subExpression": { + "id": 5041, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5033, + "src": "1798:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5047, + "nodeType": "IfStatement", + "src": "1793:63:31", + "trueBody": { + "id": 5046, + "nodeType": "Block", + "src": "1807:49:31", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5043, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5008, + "src": "1828:15:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1828:17:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5045, + "nodeType": "RevertStatement", + "src": "1821:24:31" + } + ] + } + } + ] + }, + "documentation": { + "id": 5009, + "nodeType": "StructuredDocumentation", + "src": "621:905:31", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 5049, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "1540:9:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5011, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1566:9:31", + "nodeType": "VariableDeclaration", + "scope": 5049, + "src": "1550:25:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1550:15:31", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5013, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1585:6:31", + "nodeType": "VariableDeclaration", + "scope": 5049, + "src": "1577:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1549:43:31" + }, + "returnParameters": { + "id": 5015, + "nodeType": "ParameterList", + "parameters": [], + "src": "1602:0:31" + }, + "scope": 5245, + "src": "1531:331:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5065, + "nodeType": "Block", + "src": "2794:62:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5060, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5052, + "src": "2833:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5061, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5054, + "src": "2841:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 5062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2847:1:31", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5059, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5112, + "src": "2811:21:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256) returns (bytes memory)" + } + }, + "id": 5063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2811:38:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5058, + "id": 5064, + "nodeType": "Return", + "src": "2804:45:31" + } + ] + }, + "documentation": { + "id": 5050, + "nodeType": "StructuredDocumentation", + "src": "1868:832:31", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert." + }, + "id": 5066, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "2714:12:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5052, + "mutability": "mutable", + "name": "target", + "nameLocation": "2735:6:31", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "2727:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2727:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5054, + "mutability": "mutable", + "name": "data", + "nameLocation": "2756:4:31", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "2743:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5053, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2743:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2726:35:31" + }, + "returnParameters": { + "id": 5058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5057, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "2780:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2780:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2779:14:31" + }, + "scope": 5245, + "src": "2705:151:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5111, + "nodeType": "Block", + "src": "3293:279:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 5080, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3315:4:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + ], + "id": 5079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3307:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3307:7:31", + "typeDescriptions": {} + } + }, + "id": 5081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3307:13:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3321:7:31", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3307:21:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5083, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5073, + "src": "3331:5:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3307:29:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5093, + "nodeType": "IfStatement", + "src": "3303:108:31", + "trueBody": { + "id": 5092, + "nodeType": "Block", + "src": "3338:73:31", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 5088, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3394:4:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5245", + "typeString": "library Address" + } + ], + "id": 5087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3386:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5086, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3386:7:31", + "typeDescriptions": {} + } + }, + "id": 5089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3386:13:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5085, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5000, + "src": "3359:26:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3359:41:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5091, + "nodeType": "RevertStatement", + "src": "3352:48:31" + } + ] + } + }, + { + "assignments": [ + 5095, + 5097 + ], + "declarations": [ + { + "constant": false, + "id": 5095, + "mutability": "mutable", + "name": "success", + "nameLocation": "3426:7:31", + "nodeType": "VariableDeclaration", + "scope": 5111, + "src": "3421:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5094, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3421:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5097, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3448:10:31", + "nodeType": "VariableDeclaration", + "scope": 5111, + "src": "3435:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5096, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3435:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5104, + "initialValue": { + "arguments": [ + { + "id": 5102, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5071, + "src": "3488:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5098, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5069, + "src": "3462:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3469:4:31", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "3462:11:31", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 5100, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5073, + "src": "3481:5:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "3462:25:31", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3462:31:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3420:73:31" + }, + { + "expression": { + "arguments": [ + { + "id": 5106, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5069, + "src": "3537:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5107, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5095, + "src": "3545:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5108, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5097, + "src": "3554:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5105, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "3510:26:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3510:55:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5077, + "id": 5110, + "nodeType": "Return", + "src": "3503:62:31" + } + ] + }, + "documentation": { + "id": 5067, + "nodeType": "StructuredDocumentation", + "src": "2862:313:31", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`." + }, + "id": 5112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "3189:21:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5069, + "mutability": "mutable", + "name": "target", + "nameLocation": "3219:6:31", + "nodeType": "VariableDeclaration", + "scope": 5112, + "src": "3211:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3211:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5071, + "mutability": "mutable", + "name": "data", + "nameLocation": "3240:4:31", + "nodeType": "VariableDeclaration", + "scope": 5112, + "src": "3227:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5070, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3227:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5073, + "mutability": "mutable", + "name": "value", + "nameLocation": "3254:5:31", + "nodeType": "VariableDeclaration", + "scope": 5112, + "src": "3246:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3246:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3210:50:31" + }, + "returnParameters": { + "id": 5077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5076, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5112, + "src": "3279:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5075, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3279:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3278:14:31" + }, + "scope": 5245, + "src": "3180:392:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5137, + "nodeType": "Block", + "src": "3811:154:31", + "statements": [ + { + "assignments": [ + 5123, + 5125 + ], + "declarations": [ + { + "constant": false, + "id": 5123, + "mutability": "mutable", + "name": "success", + "nameLocation": "3827:7:31", + "nodeType": "VariableDeclaration", + "scope": 5137, + "src": "3822:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5122, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3822:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5125, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3849:10:31", + "nodeType": "VariableDeclaration", + "scope": 5137, + "src": "3836:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3836:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5130, + "initialValue": { + "arguments": [ + { + "id": 5128, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "3881:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5126, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5115, + "src": "3863:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3870:10:31", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "3863:17:31", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3863:23:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3821:65:31" + }, + { + "expression": { + "arguments": [ + { + "id": 5132, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5115, + "src": "3930:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5133, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5123, + "src": "3938:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5134, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5125, + "src": "3947:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5131, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "3903:26:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3903:55:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5121, + "id": 5136, + "nodeType": "Return", + "src": "3896:62:31" + } + ] + }, + "documentation": { + "id": 5113, + "nodeType": "StructuredDocumentation", + "src": "3578:128:31", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call." + }, + "id": 5138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "3720:18:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5115, + "mutability": "mutable", + "name": "target", + "nameLocation": "3747:6:31", + "nodeType": "VariableDeclaration", + "scope": 5138, + "src": "3739:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3739:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5117, + "mutability": "mutable", + "name": "data", + "nameLocation": "3768:4:31", + "nodeType": "VariableDeclaration", + "scope": 5138, + "src": "3755:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5116, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3755:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3738:35:31" + }, + "returnParameters": { + "id": 5121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5138, + "src": "3797:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5119, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3797:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3796:14:31" + }, + "scope": 5245, + "src": "3711:254:31", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5163, + "nodeType": "Block", + "src": "4203:156:31", + "statements": [ + { + "assignments": [ + 5149, + 5151 + ], + "declarations": [ + { + "constant": false, + "id": 5149, + "mutability": "mutable", + "name": "success", + "nameLocation": "4219:7:31", + "nodeType": "VariableDeclaration", + "scope": 5163, + "src": "4214:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5148, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4214:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5151, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4241:10:31", + "nodeType": "VariableDeclaration", + "scope": 5163, + "src": "4228:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5150, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4228:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5156, + "initialValue": { + "arguments": [ + { + "id": 5154, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5143, + "src": "4275:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5152, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5141, + "src": "4255:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4262:12:31", + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "4255:19:31", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 5155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4255:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4213:67:31" + }, + { + "expression": { + "arguments": [ + { + "id": 5158, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5141, + "src": "4324:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5159, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5149, + "src": "4332:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5160, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5151, + "src": "4341:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5157, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "4297:26:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4297:55:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5147, + "id": 5162, + "nodeType": "Return", + "src": "4290:62:31" + } + ] + }, + "documentation": { + "id": 5139, + "nodeType": "StructuredDocumentation", + "src": "3971:130:31", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call." + }, + "id": 5164, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "4115:20:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5141, + "mutability": "mutable", + "name": "target", + "nameLocation": "4144:6:31", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "4136:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4136:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5143, + "mutability": "mutable", + "name": "data", + "nameLocation": "4165:4:31", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "4152:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5142, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4152:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4135:35:31" + }, + "returnParameters": { + "id": 5147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5146, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "4189:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5145, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4189:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4188:14:31" + }, + "scope": 5245, + "src": "4106:253:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5203, + "nodeType": "Block", + "src": "4783:424:31", + "statements": [ + { + "condition": { + "id": 5177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4797:8:31", + "subExpression": { + "id": 5176, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5169, + "src": "4798:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5201, + "nodeType": "Block", + "src": "4857:344:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5183, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5171, + "src": "5045:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5056:6:31", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5045:17:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5066:1:31", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5045:22:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 5187, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5167, + "src": "5071:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5078:4:31", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5071:11:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5083:6:31", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5071:18:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5093:1:31", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5071:23:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5045:49:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5198, + "nodeType": "IfStatement", + "src": "5041:119:31", + "trueBody": { + "id": 5197, + "nodeType": "Block", + "src": "5096:64:31", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5194, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5167, + "src": "5138:6:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5193, + "name": "AddressEmptyCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5005, + "src": "5121:16:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5121:24:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5196, + "nodeType": "RevertStatement", + "src": "5114:31:31" + } + ] + } + }, + { + "expression": { + "id": 5199, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5171, + "src": "5180:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5175, + "id": 5200, + "nodeType": "Return", + "src": "5173:17:31" + } + ] + }, + "id": 5202, + "nodeType": "IfStatement", + "src": "4793:408:31", + "trueBody": { + "id": 5182, + "nodeType": "Block", + "src": "4807:44:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5179, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5171, + "src": "4829:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5178, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5244, + "src": "4821:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 5180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4821:19:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5181, + "nodeType": "ExpressionStatement", + "src": "4821:19:31" + } + ] + } + } + ] + }, + "documentation": { + "id": 5165, + "nodeType": "StructuredDocumentation", + "src": "4365:255:31", + "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call." + }, + "id": 5204, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResultFromTarget", + "nameLocation": "4634:26:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5167, + "mutability": "mutable", + "name": "target", + "nameLocation": "4678:6:31", + "nodeType": "VariableDeclaration", + "scope": 5204, + "src": "4670:14:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4670:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5169, + "mutability": "mutable", + "name": "success", + "nameLocation": "4699:7:31", + "nodeType": "VariableDeclaration", + "scope": 5204, + "src": "4694:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5168, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4694:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5171, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4729:10:31", + "nodeType": "VariableDeclaration", + "scope": 5204, + "src": "4716:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4716:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4660:85:31" + }, + "returnParameters": { + "id": 5175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5174, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5204, + "src": "4769:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5173, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4769:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4768:14:31" + }, + "scope": 5245, + "src": "4625:582:31", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5225, + "nodeType": "Block", + "src": "5509:122:31", + "statements": [ + { + "condition": { + "id": 5215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5523:8:31", + "subExpression": { + "id": 5214, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5207, + "src": "5524:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5223, + "nodeType": "Block", + "src": "5583:42:31", + "statements": [ + { + "expression": { + "id": 5221, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5209, + "src": "5604:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5213, + "id": 5222, + "nodeType": "Return", + "src": "5597:17:31" + } + ] + }, + "id": 5224, + "nodeType": "IfStatement", + "src": "5519:106:31", + "trueBody": { + "id": 5220, + "nodeType": "Block", + "src": "5533:44:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5217, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5209, + "src": "5555:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5216, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5244, + "src": "5547:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 5218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5547:19:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5219, + "nodeType": "ExpressionStatement", + "src": "5547:19:31" + } + ] + } + } + ] + }, + "documentation": { + "id": 5205, + "nodeType": "StructuredDocumentation", + "src": "5213:189:31", + "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error." + }, + "id": 5226, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResult", + "nameLocation": "5416:16:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5207, + "mutability": "mutable", + "name": "success", + "nameLocation": "5438:7:31", + "nodeType": "VariableDeclaration", + "scope": 5226, + "src": "5433:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5206, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5433:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5209, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5460:10:31", + "nodeType": "VariableDeclaration", + "scope": 5226, + "src": "5447:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5208, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5447:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5432:39:31" + }, + "returnParameters": { + "id": 5213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5212, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5226, + "src": "5495:12:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5211, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5495:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5494:14:31" + }, + "scope": 5245, + "src": "5407:224:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5243, + "nodeType": "Block", + "src": "5798:461:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5232, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5229, + "src": "5874:10:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5885:6:31", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5874:17:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5894:1:31", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5874:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5241, + "nodeType": "Block", + "src": "6204:49:31", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5238, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5008, + "src": "6225:15:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6225:17:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5240, + "nodeType": "RevertStatement", + "src": "6218:24:31" + } + ] + }, + "id": 5242, + "nodeType": "IfStatement", + "src": "5870:383:31", + "trueBody": { + "id": 5237, + "nodeType": "Block", + "src": "5897:301:31", + "statements": [ + { + "AST": { + "nativeSrc": "6055:133:31", + "nodeType": "YulBlock", + "src": "6055:133:31", + "statements": [ + { + "nativeSrc": "6073:40:31", + "nodeType": "YulVariableDeclaration", + "src": "6073:40:31", + "value": { + "arguments": [ + { + "name": "returndata", + "nativeSrc": "6102:10:31", + "nodeType": "YulIdentifier", + "src": "6102:10:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6096:5:31", + "nodeType": "YulIdentifier", + "src": "6096:5:31" + }, + "nativeSrc": "6096:17:31", + "nodeType": "YulFunctionCall", + "src": "6096:17:31" + }, + "variables": [ + { + "name": "returndata_size", + "nativeSrc": "6077:15:31", + "nodeType": "YulTypedName", + "src": "6077:15:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6141:2:31", + "nodeType": "YulLiteral", + "src": "6141:2:31", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nativeSrc": "6145:10:31", + "nodeType": "YulIdentifier", + "src": "6145:10:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6137:3:31", + "nodeType": "YulIdentifier", + "src": "6137:3:31" + }, + "nativeSrc": "6137:19:31", + "nodeType": "YulFunctionCall", + "src": "6137:19:31" + }, + { + "name": "returndata_size", + "nativeSrc": "6158:15:31", + "nodeType": "YulIdentifier", + "src": "6158:15:31" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6130:6:31", + "nodeType": "YulIdentifier", + "src": "6130:6:31" + }, + "nativeSrc": "6130:44:31", + "nodeType": "YulFunctionCall", + "src": "6130:44:31" + }, + "nativeSrc": "6130:44:31", + "nodeType": "YulExpressionStatement", + "src": "6130:44:31" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5229, + "isOffset": false, + "isSlot": false, + "src": "6102:10:31", + "valueSize": 1 + }, + { + "declaration": 5229, + "isOffset": false, + "isSlot": false, + "src": "6145:10:31", + "valueSize": 1 + } + ], + "id": 5236, + "nodeType": "InlineAssembly", + "src": "6046:142:31" + } + ] + } + } + ] + }, + "documentation": { + "id": 5227, + "nodeType": "StructuredDocumentation", + "src": "5637:101:31", + "text": " @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}." + }, + "id": 5244, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revert", + "nameLocation": "5752:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5229, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5773:10:31", + "nodeType": "VariableDeclaration", + "scope": 5244, + "src": "5760:23:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5228, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5760:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5759:25:31" + }, + "returnParameters": { + "id": 5231, + "nodeType": "ParameterList", + "parameters": [], + "src": "5798:0:31" + }, + "scope": 5245, + "src": "5743:516:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 5246, + "src": "195:6066:31", + "usedErrors": [ + 5000, + 5005, + 5008 + ], + "usedEvents": [] + } + ], + "src": "101:6161:31" + }, + "id": 31 + }, + "@openzeppelin/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 5275 + ] + }, + "id": 5276, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5247, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:32" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 5248, + "nodeType": "StructuredDocumentation", + "src": "127:496:32", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 5275, + "linearizedBaseContracts": [ + 5275 + ], + "name": "Context", + "nameLocation": "642:7:32", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5256, + "nodeType": "Block", + "src": "718:34:32", + "statements": [ + { + "expression": { + "expression": { + "id": 5253, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "735:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:32", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5252, + "id": 5255, + "nodeType": "Return", + "src": "728:17:32" + } + ] + }, + "id": 5257, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5249, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:32" + }, + "returnParameters": { + "id": 5252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5251, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5257, + "src": "709:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5250, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:32" + }, + "scope": 5275, + "src": "656:96:32", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5265, + "nodeType": "Block", + "src": "825:32:32", + "statements": [ + { + "expression": { + "expression": { + "id": 5262, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "842:3:32", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:32", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 5261, + "id": 5264, + "nodeType": "Return", + "src": "835:15:32" + } + ] + }, + "id": 5266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5258, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:32" + }, + "returnParameters": { + "id": 5261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5260, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5266, + "src": "809:14:32", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5259, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:32" + }, + "scope": 5275, + "src": "758:99:32", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5273, + "nodeType": "Block", + "src": "935:25:32", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 5271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5270, + "id": 5272, + "nodeType": "Return", + "src": "945:8:32" + } + ] + }, + "id": 5274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5267, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:32" + }, + "returnParameters": { + "id": 5270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5269, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5274, + "src": "926:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5268, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:32" + }, + "scope": 5275, + "src": "863:97:32", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 5276, + "src": "624:338:32", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:32" + }, + "id": 32 + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "exportedSymbols": { + "StorageSlot": [ + 5385 + ] + }, + "id": 5386, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5277, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "193:24:33" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StorageSlot", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5278, + "nodeType": "StructuredDocumentation", + "src": "219:1025:33", + "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```" + }, + "fullyImplemented": true, + "id": 5385, + "linearizedBaseContracts": [ + 5385 + ], + "name": "StorageSlot", + "nameLocation": "1253:11:33", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "StorageSlot.AddressSlot", + "id": 5281, + "members": [ + { + "constant": false, + "id": 5280, + "mutability": "mutable", + "name": "value", + "nameLocation": "1308:5:33", + "nodeType": "VariableDeclaration", + "scope": 5281, + "src": "1300:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1300:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSlot", + "nameLocation": "1278:11:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1271:49:33", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BooleanSlot", + "id": 5284, + "members": [ + { + "constant": false, + "id": 5283, + "mutability": "mutable", + "name": "value", + "nameLocation": "1360:5:33", + "nodeType": "VariableDeclaration", + "scope": 5284, + "src": "1355:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5282, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1355:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "BooleanSlot", + "nameLocation": "1333:11:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1326:46:33", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": 5287, + "members": [ + { + "constant": false, + "id": 5286, + "mutability": "mutable", + "name": "value", + "nameLocation": "1415:5:33", + "nodeType": "VariableDeclaration", + "scope": 5287, + "src": "1407:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5285, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1407:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Slot", + "nameLocation": "1385:11:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1378:49:33", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Uint256Slot", + "id": 5290, + "members": [ + { + "constant": false, + "id": 5289, + "mutability": "mutable", + "name": "value", + "nameLocation": "1470:5:33", + "nodeType": "VariableDeclaration", + "scope": 5290, + "src": "1462:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1462:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Uint256Slot", + "nameLocation": "1440:11:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1433:49:33", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.StringSlot", + "id": 5293, + "members": [ + { + "constant": false, + "id": 5292, + "mutability": "mutable", + "name": "value", + "nameLocation": "1523:5:33", + "nodeType": "VariableDeclaration", + "scope": 5293, + "src": "1516:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5291, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1516:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "name": "StringSlot", + "nameLocation": "1495:10:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1488:47:33", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BytesSlot", + "id": 5296, + "members": [ + { + "constant": false, + "id": 5295, + "mutability": "mutable", + "name": "value", + "nameLocation": "1574:5:33", + "nodeType": "VariableDeclaration", + "scope": 5296, + "src": "1568:11:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5294, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1568:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "BytesSlot", + "nameLocation": "1548:9:33", + "nodeType": "StructDefinition", + "scope": 5385, + "src": "1541:45:33", + "visibility": "public" + }, + { + "body": { + "id": 5306, + "nodeType": "Block", + "src": "1768:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "1830:38:33", + "nodeType": "YulBlock", + "src": "1830:38:33", + "statements": [ + { + "nativeSrc": "1844:14:33", + "nodeType": "YulAssignment", + "src": "1844:14:33", + "value": { + "name": "slot", + "nativeSrc": "1854:4:33", + "nodeType": "YulIdentifier", + "src": "1854:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "1844:6:33", + "nodeType": "YulIdentifier", + "src": "1844:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5303, + "isOffset": false, + "isSlot": true, + "src": "1844:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5299, + "isOffset": false, + "isSlot": false, + "src": "1854:4:33", + "valueSize": 1 + } + ], + "id": 5305, + "nodeType": "InlineAssembly", + "src": "1821:47:33" + } + ] + }, + "documentation": { + "id": 5297, + "nodeType": "StructuredDocumentation", + "src": "1592:87:33", + "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." + }, + "id": 5307, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressSlot", + "nameLocation": "1693:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5299, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1716:4:33", + "nodeType": "VariableDeclaration", + "scope": 5307, + "src": "1708:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1708:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1707:14:33" + }, + "returnParameters": { + "id": 5304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5303, + "mutability": "mutable", + "name": "r", + "nameLocation": "1765:1:33", + "nodeType": "VariableDeclaration", + "scope": 5307, + "src": "1745:21:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": 5302, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5301, + "name": "AddressSlot", + "nameLocations": [ + "1745:11:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5281, + "src": "1745:11:33" + }, + "referencedDeclaration": 5281, + "src": "1745:11:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5281_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1744:23:33" + }, + "scope": 5385, + "src": "1684:190:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5317, + "nodeType": "Block", + "src": "2056:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "2118:38:33", + "nodeType": "YulBlock", + "src": "2118:38:33", + "statements": [ + { + "nativeSrc": "2132:14:33", + "nodeType": "YulAssignment", + "src": "2132:14:33", + "value": { + "name": "slot", + "nativeSrc": "2142:4:33", + "nodeType": "YulIdentifier", + "src": "2142:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2132:6:33", + "nodeType": "YulIdentifier", + "src": "2132:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5314, + "isOffset": false, + "isSlot": true, + "src": "2132:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5310, + "isOffset": false, + "isSlot": false, + "src": "2142:4:33", + "valueSize": 1 + } + ], + "id": 5316, + "nodeType": "InlineAssembly", + "src": "2109:47:33" + } + ] + }, + "documentation": { + "id": 5308, + "nodeType": "StructuredDocumentation", + "src": "1880:87:33", + "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`." + }, + "id": 5318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBooleanSlot", + "nameLocation": "1981:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5310, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2004:4:33", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "1996:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5309, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1996:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1995:14:33" + }, + "returnParameters": { + "id": 5315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5314, + "mutability": "mutable", + "name": "r", + "nameLocation": "2053:1:33", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "2033:21:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$5284_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": 5313, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5312, + "name": "BooleanSlot", + "nameLocations": [ + "2033:11:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5284, + "src": "2033:11:33" + }, + "referencedDeclaration": 5284, + "src": "2033:11:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$5284_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2032:23:33" + }, + "scope": 5385, + "src": "1972:190:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5328, + "nodeType": "Block", + "src": "2344:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "2406:38:33", + "nodeType": "YulBlock", + "src": "2406:38:33", + "statements": [ + { + "nativeSrc": "2420:14:33", + "nodeType": "YulAssignment", + "src": "2420:14:33", + "value": { + "name": "slot", + "nativeSrc": "2430:4:33", + "nodeType": "YulIdentifier", + "src": "2430:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2420:6:33", + "nodeType": "YulIdentifier", + "src": "2420:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5325, + "isOffset": false, + "isSlot": true, + "src": "2420:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5321, + "isOffset": false, + "isSlot": false, + "src": "2430:4:33", + "valueSize": 1 + } + ], + "id": 5327, + "nodeType": "InlineAssembly", + "src": "2397:47:33" + } + ] + }, + "documentation": { + "id": 5319, + "nodeType": "StructuredDocumentation", + "src": "2168:87:33", + "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`." + }, + "id": 5329, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytes32Slot", + "nameLocation": "2269:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5321, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2292:4:33", + "nodeType": "VariableDeclaration", + "scope": 5329, + "src": "2284:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5320, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2284:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2283:14:33" + }, + "returnParameters": { + "id": 5326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5325, + "mutability": "mutable", + "name": "r", + "nameLocation": "2341:1:33", + "nodeType": "VariableDeclaration", + "scope": 5329, + "src": "2321:21:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$5287_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": 5324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5323, + "name": "Bytes32Slot", + "nameLocations": [ + "2321:11:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5287, + "src": "2321:11:33" + }, + "referencedDeclaration": 5287, + "src": "2321:11:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$5287_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2320:23:33" + }, + "scope": 5385, + "src": "2260:190:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5339, + "nodeType": "Block", + "src": "2632:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "2694:38:33", + "nodeType": "YulBlock", + "src": "2694:38:33", + "statements": [ + { + "nativeSrc": "2708:14:33", + "nodeType": "YulAssignment", + "src": "2708:14:33", + "value": { + "name": "slot", + "nativeSrc": "2718:4:33", + "nodeType": "YulIdentifier", + "src": "2718:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2708:6:33", + "nodeType": "YulIdentifier", + "src": "2708:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5336, + "isOffset": false, + "isSlot": true, + "src": "2708:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5332, + "isOffset": false, + "isSlot": false, + "src": "2718:4:33", + "valueSize": 1 + } + ], + "id": 5338, + "nodeType": "InlineAssembly", + "src": "2685:47:33" + } + ] + }, + "documentation": { + "id": 5330, + "nodeType": "StructuredDocumentation", + "src": "2456:87:33", + "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`." + }, + "id": 5340, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUint256Slot", + "nameLocation": "2557:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5332, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2580:4:33", + "nodeType": "VariableDeclaration", + "scope": 5340, + "src": "2572:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5331, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2572:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2571:14:33" + }, + "returnParameters": { + "id": 5337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5336, + "mutability": "mutable", + "name": "r", + "nameLocation": "2629:1:33", + "nodeType": "VariableDeclaration", + "scope": 5340, + "src": "2609:21:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$5290_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": 5335, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5334, + "name": "Uint256Slot", + "nameLocations": [ + "2609:11:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5290, + "src": "2609:11:33" + }, + "referencedDeclaration": 5290, + "src": "2609:11:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$5290_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2608:23:33" + }, + "scope": 5385, + "src": "2548:190:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5350, + "nodeType": "Block", + "src": "2917:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "2979:38:33", + "nodeType": "YulBlock", + "src": "2979:38:33", + "statements": [ + { + "nativeSrc": "2993:14:33", + "nodeType": "YulAssignment", + "src": "2993:14:33", + "value": { + "name": "slot", + "nativeSrc": "3003:4:33", + "nodeType": "YulIdentifier", + "src": "3003:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2993:6:33", + "nodeType": "YulIdentifier", + "src": "2993:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5347, + "isOffset": false, + "isSlot": true, + "src": "2993:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5343, + "isOffset": false, + "isSlot": false, + "src": "3003:4:33", + "valueSize": 1 + } + ], + "id": 5349, + "nodeType": "InlineAssembly", + "src": "2970:47:33" + } + ] + }, + "documentation": { + "id": 5341, + "nodeType": "StructuredDocumentation", + "src": "2744:86:33", + "text": " @dev Returns an `StringSlot` with member `value` located at `slot`." + }, + "id": 5351, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "2844:13:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5343, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2866:4:33", + "nodeType": "VariableDeclaration", + "scope": 5351, + "src": "2858:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5342, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2858:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2857:14:33" + }, + "returnParameters": { + "id": 5348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5347, + "mutability": "mutable", + "name": "r", + "nameLocation": "2914:1:33", + "nodeType": "VariableDeclaration", + "scope": 5351, + "src": "2895:20:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5293_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 5346, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5345, + "name": "StringSlot", + "nameLocations": [ + "2895:10:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5293, + "src": "2895:10:33" + }, + "referencedDeclaration": 5293, + "src": "2895:10:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5293_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2894:22:33" + }, + "scope": 5385, + "src": "2835:188:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5361, + "nodeType": "Block", + "src": "3225:112:33", + "statements": [ + { + "AST": { + "nativeSrc": "3287:44:33", + "nodeType": "YulBlock", + "src": "3287:44:33", + "statements": [ + { + "nativeSrc": "3301:20:33", + "nodeType": "YulAssignment", + "src": "3301:20:33", + "value": { + "name": "store.slot", + "nativeSrc": "3311:10:33", + "nodeType": "YulIdentifier", + "src": "3311:10:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3301:6:33", + "nodeType": "YulIdentifier", + "src": "3301:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5358, + "isOffset": false, + "isSlot": true, + "src": "3301:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5354, + "isOffset": false, + "isSlot": true, + "src": "3311:10:33", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 5360, + "nodeType": "InlineAssembly", + "src": "3278:53:33" + } + ] + }, + "documentation": { + "id": 5352, + "nodeType": "StructuredDocumentation", + "src": "3029:101:33", + "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`." + }, + "id": 5362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "3144:13:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5354, + "mutability": "mutable", + "name": "store", + "nameLocation": "3173:5:33", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "3158:20:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5353, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3158:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3157:22:33" + }, + "returnParameters": { + "id": 5359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5358, + "mutability": "mutable", + "name": "r", + "nameLocation": "3222:1:33", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "3203:20:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5293_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 5357, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5356, + "name": "StringSlot", + "nameLocations": [ + "3203:10:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5293, + "src": "3203:10:33" + }, + "referencedDeclaration": 5293, + "src": "3203:10:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5293_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3202:22:33" + }, + "scope": 5385, + "src": "3135:202:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5372, + "nodeType": "Block", + "src": "3513:106:33", + "statements": [ + { + "AST": { + "nativeSrc": "3575:38:33", + "nodeType": "YulBlock", + "src": "3575:38:33", + "statements": [ + { + "nativeSrc": "3589:14:33", + "nodeType": "YulAssignment", + "src": "3589:14:33", + "value": { + "name": "slot", + "nativeSrc": "3599:4:33", + "nodeType": "YulIdentifier", + "src": "3599:4:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3589:6:33", + "nodeType": "YulIdentifier", + "src": "3589:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5369, + "isOffset": false, + "isSlot": true, + "src": "3589:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5365, + "isOffset": false, + "isSlot": false, + "src": "3599:4:33", + "valueSize": 1 + } + ], + "id": 5371, + "nodeType": "InlineAssembly", + "src": "3566:47:33" + } + ] + }, + "documentation": { + "id": 5363, + "nodeType": "StructuredDocumentation", + "src": "3343:85:33", + "text": " @dev Returns an `BytesSlot` with member `value` located at `slot`." + }, + "id": 5373, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3442:12:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5365, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3463:4:33", + "nodeType": "VariableDeclaration", + "scope": 5373, + "src": "3455:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5364, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3455:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3454:14:33" + }, + "returnParameters": { + "id": 5370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5369, + "mutability": "mutable", + "name": "r", + "nameLocation": "3510:1:33", + "nodeType": "VariableDeclaration", + "scope": 5373, + "src": "3492:19:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5296_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 5368, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5367, + "name": "BytesSlot", + "nameLocations": [ + "3492:9:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5296, + "src": "3492:9:33" + }, + "referencedDeclaration": 5296, + "src": "3492:9:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5296_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3491:21:33" + }, + "scope": 5385, + "src": "3433:186:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5383, + "nodeType": "Block", + "src": "3816:112:33", + "statements": [ + { + "AST": { + "nativeSrc": "3878:44:33", + "nodeType": "YulBlock", + "src": "3878:44:33", + "statements": [ + { + "nativeSrc": "3892:20:33", + "nodeType": "YulAssignment", + "src": "3892:20:33", + "value": { + "name": "store.slot", + "nativeSrc": "3902:10:33", + "nodeType": "YulIdentifier", + "src": "3902:10:33" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3892:6:33", + "nodeType": "YulIdentifier", + "src": "3892:6:33" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5380, + "isOffset": false, + "isSlot": true, + "src": "3892:6:33", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5376, + "isOffset": false, + "isSlot": true, + "src": "3902:10:33", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 5382, + "nodeType": "InlineAssembly", + "src": "3869:53:33" + } + ] + }, + "documentation": { + "id": 5374, + "nodeType": "StructuredDocumentation", + "src": "3625:99:33", + "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`." + }, + "id": 5384, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3738:12:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5376, + "mutability": "mutable", + "name": "store", + "nameLocation": "3765:5:33", + "nodeType": "VariableDeclaration", + "scope": 5384, + "src": "3751:19:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5375, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3751:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3750:21:33" + }, + "returnParameters": { + "id": 5381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5380, + "mutability": "mutable", + "name": "r", + "nameLocation": "3813:1:33", + "nodeType": "VariableDeclaration", + "scope": 5384, + "src": "3795:19:33", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5296_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 5379, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5378, + "name": "BytesSlot", + "nameLocations": [ + "3795:9:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5296, + "src": "3795:9:33" + }, + "referencedDeclaration": 5296, + "src": "3795:9:33", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5296_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3794:21:33" + }, + "scope": 5385, + "src": "3729:199:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5386, + "src": "1245:2685:33", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "193:3738:33" + }, + "id": 33 + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "exportedSymbols": { + "Math": [ + 7054 + ], + "SignedMath": [ + 7159 + ], + "Strings": [ + 5640 + ] + }, + "id": 5641, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5387, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:34" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol", + "file": "./math/Math.sol", + "id": 5389, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5641, + "sourceUnit": 7055, + "src": "127:37:34", + "symbolAliases": [ + { + "foreign": { + "id": 5388, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "135:4:34", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "file": "./math/SignedMath.sol", + "id": 5391, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5641, + "sourceUnit": 7160, + "src": "165:49:34", + "symbolAliases": [ + { + "foreign": { + "id": 5390, + "name": "SignedMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "173:10:34", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Strings", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5392, + "nodeType": "StructuredDocumentation", + "src": "216:34:34", + "text": " @dev String operations." + }, + "fullyImplemented": true, + "id": 5640, + "linearizedBaseContracts": [ + 5640 + ], + "name": "Strings", + "nameLocation": "259:7:34", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 5395, + "mutability": "constant", + "name": "HEX_DIGITS", + "nameLocation": "298:10:34", + "nodeType": "VariableDeclaration", + "scope": 5640, + "src": "273:56:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 5393, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "273:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "value": { + "hexValue": "30313233343536373839616263646566", + "id": 5394, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "311:18:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", + "typeString": "literal_string \"0123456789abcdef\"" + }, + "value": "0123456789abcdef" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 5398, + "mutability": "constant", + "name": "ADDRESS_LENGTH", + "nameLocation": "358:14:34", + "nodeType": "VariableDeclaration", + "scope": 5640, + "src": "335:42:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5396, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "335:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3230", + "id": 5397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "375:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 5399, + "nodeType": "StructuredDocumentation", + "src": "384:81:34", + "text": " @dev The `value` string doesn't fit in the specified `length`." + }, + "errorSelector": "e22e27eb", + "id": 5405, + "name": "StringsInsufficientHexLength", + "nameLocation": "476:28:34", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5404, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5401, + "mutability": "mutable", + "name": "value", + "nameLocation": "513:5:34", + "nodeType": "VariableDeclaration", + "scope": 5405, + "src": "505:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "505:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5403, + "mutability": "mutable", + "name": "length", + "nameLocation": "528:6:34", + "nodeType": "VariableDeclaration", + "scope": 5405, + "src": "520:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "504:31:34" + }, + "src": "470:66:34" + }, + { + "body": { + "id": 5452, + "nodeType": "Block", + "src": "708:627:34", + "statements": [ + { + "id": 5451, + "nodeType": "UncheckedBlock", + "src": "718:611:34", + "statements": [ + { + "assignments": [ + 5414 + ], + "declarations": [ + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "length", + "nameLocation": "750:6:34", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "742:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "742:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5421, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5417, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5408, + "src": "770:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5415, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "759:4:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$7054_$", + "typeString": "type(library Math)" + } + }, + "id": 5416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "764:5:34", + "memberName": "log10", + "nodeType": "MemberAccess", + "referencedDeclaration": 6874, + "src": "759:10:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "759:17:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "779:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "759:21:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "742:38:34" + }, + { + "assignments": [ + 5423 + ], + "declarations": [ + { + "constant": false, + "id": 5423, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "808:6:34", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "794:20:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5422, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "794:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 5428, + "initialValue": { + "arguments": [ + { + "id": 5426, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5414, + "src": "828:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "817:10:34", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + }, + "typeName": { + "id": 5424, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "821:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "id": 5427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "817:18:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "794:41:34" + }, + { + "assignments": [ + 5430 + ], + "declarations": [ + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "ptr", + "nameLocation": "857:3:34", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "849:11:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "849:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5431, + "nodeType": "VariableDeclarationStatement", + "src": "849:11:34" + }, + { + "AST": { + "nativeSrc": "930:67:34", + "nodeType": "YulBlock", + "src": "930:67:34", + "statements": [ + { + "nativeSrc": "948:35:34", + "nodeType": "YulAssignment", + "src": "948:35:34", + "value": { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "959:6:34", + "nodeType": "YulIdentifier", + "src": "959:6:34" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "971:2:34", + "nodeType": "YulLiteral", + "src": "971:2:34", + "type": "", + "value": "32" + }, + { + "name": "length", + "nativeSrc": "975:6:34", + "nodeType": "YulIdentifier", + "src": "975:6:34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "967:3:34", + "nodeType": "YulIdentifier", + "src": "967:3:34" + }, + "nativeSrc": "967:15:34", + "nodeType": "YulFunctionCall", + "src": "967:15:34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "955:3:34", + "nodeType": "YulIdentifier", + "src": "955:3:34" + }, + "nativeSrc": "955:28:34", + "nodeType": "YulFunctionCall", + "src": "955:28:34" + }, + "variableNames": [ + { + "name": "ptr", + "nativeSrc": "948:3:34", + "nodeType": "YulIdentifier", + "src": "948:3:34" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5423, + "isOffset": false, + "isSlot": false, + "src": "959:6:34", + "valueSize": 1 + }, + { + "declaration": 5414, + "isOffset": false, + "isSlot": false, + "src": "975:6:34", + "valueSize": 1 + }, + { + "declaration": 5430, + "isOffset": false, + "isSlot": false, + "src": "948:3:34", + "valueSize": 1 + } + ], + "id": 5432, + "nodeType": "InlineAssembly", + "src": "921:76:34" + }, + { + "body": { + "id": 5447, + "nodeType": "Block", + "src": "1023:269:34", + "statements": [ + { + "expression": { + "id": 5435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "1041:5:34", + "subExpression": { + "id": 5434, + "name": "ptr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5430, + "src": "1041:3:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5436, + "nodeType": "ExpressionStatement", + "src": "1041:5:34" + }, + { + "AST": { + "nativeSrc": "1124:86:34", + "nodeType": "YulBlock", + "src": "1124:86:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "1154:3:34", + "nodeType": "YulIdentifier", + "src": "1154:3:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1168:5:34", + "nodeType": "YulIdentifier", + "src": "1168:5:34" + }, + { + "kind": "number", + "nativeSrc": "1175:2:34", + "nodeType": "YulLiteral", + "src": "1175:2:34", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "1164:3:34", + "nodeType": "YulIdentifier", + "src": "1164:3:34" + }, + "nativeSrc": "1164:14:34", + "nodeType": "YulFunctionCall", + "src": "1164:14:34" + }, + { + "name": "HEX_DIGITS", + "nativeSrc": "1180:10:34", + "nodeType": "YulIdentifier", + "src": "1180:10:34" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "1159:4:34", + "nodeType": "YulIdentifier", + "src": "1159:4:34" + }, + "nativeSrc": "1159:32:34", + "nodeType": "YulFunctionCall", + "src": "1159:32:34" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "1146:7:34", + "nodeType": "YulIdentifier", + "src": "1146:7:34" + }, + "nativeSrc": "1146:46:34", + "nodeType": "YulFunctionCall", + "src": "1146:46:34" + }, + "nativeSrc": "1146:46:34", + "nodeType": "YulExpressionStatement", + "src": "1146:46:34" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5395, + "isOffset": false, + "isSlot": false, + "src": "1180:10:34", + "valueSize": 1 + }, + { + "declaration": 5430, + "isOffset": false, + "isSlot": false, + "src": "1154:3:34", + "valueSize": 1 + }, + { + "declaration": 5408, + "isOffset": false, + "isSlot": false, + "src": "1168:5:34", + "valueSize": 1 + } + ], + "id": 5437, + "nodeType": "InlineAssembly", + "src": "1115:95:34" + }, + { + "expression": { + "id": 5440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5438, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5408, + "src": "1227:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1236:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "1227:11:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5441, + "nodeType": "ExpressionStatement", + "src": "1227:11:34" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5442, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5408, + "src": "1260:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1269:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1260:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5446, + "nodeType": "IfStatement", + "src": "1256:21:34", + "trueBody": { + "id": 5445, + "nodeType": "Break", + "src": "1272:5:34" + } + } + ] + }, + "condition": { + "hexValue": "74727565", + "id": 5433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1017:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "id": 5448, + "nodeType": "WhileStatement", + "src": "1010:282:34" + }, + { + "expression": { + "id": 5449, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "1312:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5412, + "id": 5450, + "nodeType": "Return", + "src": "1305:13:34" + } + ] + } + ] + }, + "documentation": { + "id": 5406, + "nodeType": "StructuredDocumentation", + "src": "542:90:34", + "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation." + }, + "id": 5453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "646:8:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5408, + "mutability": "mutable", + "name": "value", + "nameLocation": "663:5:34", + "nodeType": "VariableDeclaration", + "scope": 5453, + "src": "655:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5407, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "655:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "654:15:34" + }, + "returnParameters": { + "id": 5412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5453, + "src": "693:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5410, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "693:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "692:15:34" + }, + "scope": 5640, + "src": "637:698:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5478, + "nodeType": "Block", + "src": "1511:92:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 5466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5464, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5456, + "src": "1542:5:34", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 5465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1550:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1542:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "", + "id": 5468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1560:2:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "id": 5469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1542:20:34", + "trueExpression": { + "hexValue": "2d", + "id": 5467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1554:3:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", + "typeString": "literal_string \"-\"" + }, + "value": "-" + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 5473, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5456, + "src": "1588:5:34", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 5471, + "name": "SignedMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "1573:10:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedMath_$7159_$", + "typeString": "type(library SignedMath)" + } + }, + "id": 5472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1584:3:34", + "memberName": "abs", + "nodeType": "MemberAccess", + "referencedDeclaration": 7158, + "src": "1573:14:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$", + "typeString": "function (int256) pure returns (uint256)" + } + }, + "id": 5474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1573:21:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5470, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "1564:8:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1564:31:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1528:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5461, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1528:6:34", + "typeDescriptions": {} + } + }, + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1535:6:34", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "1528:13:34", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 5476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1528:68:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5460, + "id": 5477, + "nodeType": "Return", + "src": "1521:75:34" + } + ] + }, + "documentation": { + "id": 5454, + "nodeType": "StructuredDocumentation", + "src": "1341:89:34", + "text": " @dev Converts a `int256` to its ASCII `string` decimal representation." + }, + "id": 5479, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toStringSigned", + "nameLocation": "1444:14:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5456, + "mutability": "mutable", + "name": "value", + "nameLocation": "1466:5:34", + "nodeType": "VariableDeclaration", + "scope": 5479, + "src": "1459:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5455, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1459:6:34", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1458:14:34" + }, + "returnParameters": { + "id": 5460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5459, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5479, + "src": "1496:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5458, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1496:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1495:15:34" + }, + "scope": 5640, + "src": "1435:168:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5498, + "nodeType": "Block", + "src": "1782:100:34", + "statements": [ + { + "id": 5497, + "nodeType": "UncheckedBlock", + "src": "1792:84:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5488, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5482, + "src": "1835:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5491, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5482, + "src": "1854:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5489, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "1842:4:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$7054_$", + "typeString": "type(library Math)" + } + }, + "id": 5490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1847:6:34", + "memberName": "log256", + "nodeType": "MemberAccess", + "referencedDeclaration": 6996, + "src": "1842:11:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 5492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1842:18:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1863:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1842:22:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5487, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5499, + 5582, + 5602 + ], + "referencedDeclaration": 5582, + "src": "1823:11:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1823:42:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5486, + "id": 5496, + "nodeType": "Return", + "src": "1816:49:34" + } + ] + } + ] + }, + "documentation": { + "id": 5480, + "nodeType": "StructuredDocumentation", + "src": "1609:94:34", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation." + }, + "id": 5499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "1717:11:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5482, + "mutability": "mutable", + "name": "value", + "nameLocation": "1737:5:34", + "nodeType": "VariableDeclaration", + "scope": 5499, + "src": "1729:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1729:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1728:15:34" + }, + "returnParameters": { + "id": 5486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5485, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5499, + "src": "1767:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5484, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1767:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1766:15:34" + }, + "scope": 5640, + "src": "1708:174:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5581, + "nodeType": "Block", + "src": "2095:435:34", + "statements": [ + { + "assignments": [ + 5510 + ], + "declarations": [ + { + "constant": false, + "id": 5510, + "mutability": "mutable", + "name": "localValue", + "nameLocation": "2113:10:34", + "nodeType": "VariableDeclaration", + "scope": 5581, + "src": "2105:18:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2105:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5512, + "initialValue": { + "id": 5511, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5502, + "src": "2126:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2105:26:34" + }, + { + "assignments": [ + 5514 + ], + "declarations": [ + { + "constant": false, + "id": 5514, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "2154:6:34", + "nodeType": "VariableDeclaration", + "scope": 5581, + "src": "2141:19:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5513, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2141:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5523, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 5517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2173:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 5518, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "2177:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2173:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 5520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2186:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2173:14:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2163:9:34", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 5515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2167:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 5522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2163:25:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2141:47:34" + }, + { + "expression": { + "id": 5528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5524, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "2198:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5526, + "indexExpression": { + "hexValue": "30", + "id": 5525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2205:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2198:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 5527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2210:3:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "src": "2198:15:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5529, + "nodeType": "ExpressionStatement", + "src": "2198:15:34" + }, + { + "expression": { + "id": 5534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5530, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "2223:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5532, + "indexExpression": { + "hexValue": "31", + "id": 5531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2230:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2223:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "78", + "id": 5533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2235:3:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", + "typeString": "literal_string \"x\"" + }, + "value": "x" + }, + "src": "2223:15:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5535, + "nodeType": "ExpressionStatement", + "src": "2223:15:34" + }, + { + "body": { + "id": 5564, + "nodeType": "Block", + "src": "2293:95:34", + "statements": [ + { + "expression": { + "id": 5558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5550, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "2307:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5552, + "indexExpression": { + "id": 5551, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5537, + "src": "2314:1:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2307:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 5553, + "name": "HEX_DIGITS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5395, + "src": "2319:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 5557, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5554, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5510, + "src": "2330:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307866", + "id": 5555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2343:3:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0xf" + }, + "src": "2330:16:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2319:28:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2307:40:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5559, + "nodeType": "ExpressionStatement", + "src": "2307:40:34" + }, + { + "expression": { + "id": 5562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5560, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5510, + "src": "2361:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 5561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2376:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "2361:16:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5563, + "nodeType": "ExpressionStatement", + "src": "2361:16:34" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5544, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5537, + "src": "2281:1:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 5545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2285:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2281:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5565, + "initializationExpression": { + "assignments": [ + 5537 + ], + "declarations": [ + { + "constant": false, + "id": 5537, + "mutability": "mutable", + "name": "i", + "nameLocation": "2261:1:34", + "nodeType": "VariableDeclaration", + "scope": 5565, + "src": "2253:9:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2253:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5543, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 5538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2265:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 5539, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "2269:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2265:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2278:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2265:14:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2253:26:34" + }, + "isSimpleCounterLoop": false, + "loopExpression": { + "expression": { + "id": 5548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": true, + "src": "2288:3:34", + "subExpression": { + "id": 5547, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5537, + "src": "2290:1:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5549, + "nodeType": "ExpressionStatement", + "src": "2288:3:34" + }, + "nodeType": "ForStatement", + "src": "2248:140:34" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5566, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5510, + "src": "2401:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 5567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2415:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2401:15:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5575, + "nodeType": "IfStatement", + "src": "2397:96:34", + "trueBody": { + "id": 5574, + "nodeType": "Block", + "src": "2418:75:34", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5570, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5502, + "src": "2468:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5571, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "2475:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5569, + "name": "StringsInsufficientHexLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5405, + "src": "2439:28:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2439:43:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5573, + "nodeType": "RevertStatement", + "src": "2432:50:34" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 5578, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5514, + "src": "2516:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2509:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5576, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2509:6:34", + "typeDescriptions": {} + } + }, + "id": 5579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2509:14:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5508, + "id": 5580, + "nodeType": "Return", + "src": "2502:21:34" + } + ] + }, + "documentation": { + "id": 5500, + "nodeType": "StructuredDocumentation", + "src": "1888:112:34", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length." + }, + "id": 5582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "2014:11:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5502, + "mutability": "mutable", + "name": "value", + "nameLocation": "2034:5:34", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "2026:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5504, + "mutability": "mutable", + "name": "length", + "nameLocation": "2049:6:34", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "2041:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2041:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2025:31:34" + }, + "returnParameters": { + "id": 5508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5507, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "2080:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5506, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2080:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2079:15:34" + }, + "scope": 5640, + "src": "2005:525:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5601, + "nodeType": "Block", + "src": "2762:75:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5595, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "2807:4:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2799:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 5593, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2799:7:34", + "typeDescriptions": {} + } + }, + "id": 5596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2799:13:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 5592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2791:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2791:7:34", + "typeDescriptions": {} + } + }, + "id": 5597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2791:22:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5598, + "name": "ADDRESS_LENGTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5398, + "src": "2815:14:34", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 5590, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5499, + 5582, + 5602 + ], + "referencedDeclaration": 5582, + "src": "2779:11:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2779:51:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5589, + "id": 5600, + "nodeType": "Return", + "src": "2772:58:34" + } + ] + }, + "documentation": { + "id": 5583, + "nodeType": "StructuredDocumentation", + "src": "2536:148:34", + "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation." + }, + "id": 5602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "2698:11:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "addr", + "nameLocation": "2718:4:34", + "nodeType": "VariableDeclaration", + "scope": 5602, + "src": "2710:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5584, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2710:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2709:14:34" + }, + "returnParameters": { + "id": 5589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5588, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5602, + "src": "2747:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5587, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2747:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2746:15:34" + }, + "scope": 5640, + "src": "2689:148:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5638, + "nodeType": "Block", + "src": "2992:104:34", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 5614, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5605, + "src": "3015:1:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3009:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5612, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3009:5:34", + "typeDescriptions": {} + } + }, + "id": 5615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3009:8:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3018:6:34", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3009:15:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 5619, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5607, + "src": "3034:1:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3028:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5617, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3028:5:34", + "typeDescriptions": {} + } + }, + "id": 5620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3028:8:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3037:6:34", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3028:15:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3009:34:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 5626, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5605, + "src": "3063:1:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3057:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5624, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3057:5:34", + "typeDescriptions": {} + } + }, + "id": 5627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3057:8:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5623, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3047:9:34", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3047:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 5632, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5607, + "src": "3086:1:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3080:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3080:5:34", + "typeDescriptions": {} + } + }, + "id": 5633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3080:8:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5629, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3070:9:34", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3070:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3047:42:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3009:80:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5611, + "id": 5637, + "nodeType": "Return", + "src": "3002:87:34" + } + ] + }, + "documentation": { + "id": 5603, + "nodeType": "StructuredDocumentation", + "src": "2843:66:34", + "text": " @dev Returns true if the two strings are equal." + }, + "id": 5639, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equal", + "nameLocation": "2923:5:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5605, + "mutability": "mutable", + "name": "a", + "nameLocation": "2943:1:34", + "nodeType": "VariableDeclaration", + "scope": 5639, + "src": "2929:15:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5604, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2929:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5607, + "mutability": "mutable", + "name": "b", + "nameLocation": "2960:1:34", + "nodeType": "VariableDeclaration", + "scope": 5639, + "src": "2946:15:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5606, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2946:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2928:34:34" + }, + "returnParameters": { + "id": 5611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5610, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5639, + "src": "2986:4:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5609, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2986:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2985:6:34" + }, + "scope": 5640, + "src": "2914:182:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5641, + "src": "251:2847:34", + "usedErrors": [ + 5405 + ], + "usedEvents": [] + } + ], + "src": "101:2998:34" + }, + "id": 34 + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 5988 + ] + }, + "id": 5989, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5642, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:35" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ECDSA", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5643, + "nodeType": "StructuredDocumentation", + "src": "138:205:35", + "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address." + }, + "fullyImplemented": true, + "id": 5988, + "linearizedBaseContracts": [ + 5988 + ], + "name": "ECDSA", + "nameLocation": "352:5:35", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ECDSA.RecoverError", + "id": 5648, + "members": [ + { + "id": 5644, + "name": "NoError", + "nameLocation": "392:7:35", + "nodeType": "EnumValue", + "src": "392:7:35" + }, + { + "id": 5645, + "name": "InvalidSignature", + "nameLocation": "409:16:35", + "nodeType": "EnumValue", + "src": "409:16:35" + }, + { + "id": 5646, + "name": "InvalidSignatureLength", + "nameLocation": "435:22:35", + "nodeType": "EnumValue", + "src": "435:22:35" + }, + { + "id": 5647, + "name": "InvalidSignatureS", + "nameLocation": "467:17:35", + "nodeType": "EnumValue", + "src": "467:17:35" + } + ], + "name": "RecoverError", + "nameLocation": "369:12:35", + "nodeType": "EnumDefinition", + "src": "364:126:35" + }, + { + "documentation": { + "id": 5649, + "nodeType": "StructuredDocumentation", + "src": "496:63:35", + "text": " @dev The signature derives the `address(0)`." + }, + "errorSelector": "f645eedf", + "id": 5651, + "name": "ECDSAInvalidSignature", + "nameLocation": "570:21:35", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5650, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:35" + }, + "src": "564:30:35" + }, + { + "documentation": { + "id": 5652, + "nodeType": "StructuredDocumentation", + "src": "600:60:35", + "text": " @dev The signature has an invalid length." + }, + "errorSelector": "fce698f7", + "id": 5656, + "name": "ECDSAInvalidSignatureLength", + "nameLocation": "671:27:35", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5654, + "mutability": "mutable", + "name": "length", + "nameLocation": "707:6:35", + "nodeType": "VariableDeclaration", + "scope": 5656, + "src": "699:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "698:16:35" + }, + "src": "665:50:35" + }, + { + "documentation": { + "id": 5657, + "nodeType": "StructuredDocumentation", + "src": "721:85:35", + "text": " @dev The signature has an S value that is in the upper half order." + }, + "errorSelector": "d78bce0c", + "id": 5661, + "name": "ECDSAInvalidSignatureS", + "nameLocation": "817:22:35", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5659, + "mutability": "mutable", + "name": "s", + "nameLocation": "848:1:35", + "nodeType": "VariableDeclaration", + "scope": 5661, + "src": "840:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5658, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "840:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "839:11:35" + }, + "src": "811:40:35" + }, + { + "body": { + "id": 5713, + "nodeType": "Block", + "src": "2242:653:35", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5676, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "2256:9:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2266:6:35", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2256:16:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3635", + "id": 5678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2276:2:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "2256:22:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5711, + "nodeType": "Block", + "src": "2781:108:35", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2811:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2803:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2803:7:35", + "typeDescriptions": {} + } + }, + "id": 5701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2803:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 5702, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "2815:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2828:22:35", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 5646, + "src": "2815:35:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "expression": { + "id": 5706, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "2860:9:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2870:6:35", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2860:16:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2852:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5704, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2852:7:35", + "typeDescriptions": {} + } + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2852:25:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 5709, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2802:76:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5675, + "id": 5710, + "nodeType": "Return", + "src": "2795:83:35" + } + ] + }, + "id": 5712, + "nodeType": "IfStatement", + "src": "2252:637:35", + "trueBody": { + "id": 5697, + "nodeType": "Block", + "src": "2280:495:35", + "statements": [ + { + "assignments": [ + 5681 + ], + "declarations": [ + { + "constant": false, + "id": 5681, + "mutability": "mutable", + "name": "r", + "nameLocation": "2302:1:35", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "2294:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5680, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2294:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5682, + "nodeType": "VariableDeclarationStatement", + "src": "2294:9:35" + }, + { + "assignments": [ + 5684 + ], + "declarations": [ + { + "constant": false, + "id": 5684, + "mutability": "mutable", + "name": "s", + "nameLocation": "2325:1:35", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "2317:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5685, + "nodeType": "VariableDeclarationStatement", + "src": "2317:9:35" + }, + { + "assignments": [ + 5687 + ], + "declarations": [ + { + "constant": false, + "id": 5687, + "mutability": "mutable", + "name": "v", + "nameLocation": "2346:1:35", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "2340:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5686, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2340:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 5688, + "nodeType": "VariableDeclarationStatement", + "src": "2340:7:35" + }, + { + "AST": { + "nativeSrc": "2548:171:35", + "nodeType": "YulBlock", + "src": "2548:171:35", + "statements": [ + { + "nativeSrc": "2566:32:35", + "nodeType": "YulAssignment", + "src": "2566:32:35", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2581:9:35", + "nodeType": "YulIdentifier", + "src": "2581:9:35" + }, + { + "kind": "number", + "nativeSrc": "2592:4:35", + "nodeType": "YulLiteral", + "src": "2592:4:35", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2577:3:35", + "nodeType": "YulIdentifier", + "src": "2577:3:35" + }, + "nativeSrc": "2577:20:35", + "nodeType": "YulFunctionCall", + "src": "2577:20:35" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2571:5:35", + "nodeType": "YulIdentifier", + "src": "2571:5:35" + }, + "nativeSrc": "2571:27:35", + "nodeType": "YulFunctionCall", + "src": "2571:27:35" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "2566:1:35", + "nodeType": "YulIdentifier", + "src": "2566:1:35" + } + ] + }, + { + "nativeSrc": "2615:32:35", + "nodeType": "YulAssignment", + "src": "2615:32:35", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2630:9:35", + "nodeType": "YulIdentifier", + "src": "2630:9:35" + }, + { + "kind": "number", + "nativeSrc": "2641:4:35", + "nodeType": "YulLiteral", + "src": "2641:4:35", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2626:3:35", + "nodeType": "YulIdentifier", + "src": "2626:3:35" + }, + "nativeSrc": "2626:20:35", + "nodeType": "YulFunctionCall", + "src": "2626:20:35" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2620:5:35", + "nodeType": "YulIdentifier", + "src": "2620:5:35" + }, + "nativeSrc": "2620:27:35", + "nodeType": "YulFunctionCall", + "src": "2620:27:35" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "2615:1:35", + "nodeType": "YulIdentifier", + "src": "2615:1:35" + } + ] + }, + { + "nativeSrc": "2664:41:35", + "nodeType": "YulAssignment", + "src": "2664:41:35", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2674:1:35", + "nodeType": "YulLiteral", + "src": "2674:1:35", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2687:9:35", + "nodeType": "YulIdentifier", + "src": "2687:9:35" + }, + { + "kind": "number", + "nativeSrc": "2698:4:35", + "nodeType": "YulLiteral", + "src": "2698:4:35", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2683:3:35", + "nodeType": "YulIdentifier", + "src": "2683:3:35" + }, + "nativeSrc": "2683:20:35", + "nodeType": "YulFunctionCall", + "src": "2683:20:35" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2677:5:35", + "nodeType": "YulIdentifier", + "src": "2677:5:35" + }, + "nativeSrc": "2677:27:35", + "nodeType": "YulFunctionCall", + "src": "2677:27:35" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "2669:4:35", + "nodeType": "YulIdentifier", + "src": "2669:4:35" + }, + "nativeSrc": "2669:36:35", + "nodeType": "YulFunctionCall", + "src": "2669:36:35" + }, + "variableNames": [ + { + "name": "v", + "nativeSrc": "2664:1:35", + "nodeType": "YulIdentifier", + "src": "2664:1:35" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5681, + "isOffset": false, + "isSlot": false, + "src": "2566:1:35", + "valueSize": 1 + }, + { + "declaration": 5684, + "isOffset": false, + "isSlot": false, + "src": "2615:1:35", + "valueSize": 1 + }, + { + "declaration": 5666, + "isOffset": false, + "isSlot": false, + "src": "2581:9:35", + "valueSize": 1 + }, + { + "declaration": 5666, + "isOffset": false, + "isSlot": false, + "src": "2630:9:35", + "valueSize": 1 + }, + { + "declaration": 5666, + "isOffset": false, + "isSlot": false, + "src": "2687:9:35", + "valueSize": 1 + }, + { + "declaration": 5687, + "isOffset": false, + "isSlot": false, + "src": "2664:1:35", + "valueSize": 1 + } + ], + "id": 5689, + "nodeType": "InlineAssembly", + "src": "2539:180:35" + }, + { + "expression": { + "arguments": [ + { + "id": 5691, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5664, + "src": "2750:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5692, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5687, + "src": "2756:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5693, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5681, + "src": "2759:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5694, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5684, + "src": "2762:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5690, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5714, + 5794, + 5902 + ], + "referencedDeclaration": 5902, + "src": "2739:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2739:25:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5675, + "id": 5696, + "nodeType": "Return", + "src": "2732:32:35" + } + ] + } + } + ] + }, + "documentation": { + "id": 5662, + "nodeType": "StructuredDocumentation", + "src": "857:1267:35", + "text": " @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]" + }, + "id": 5714, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "2138:10:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5664, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2157:4:35", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2149:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5663, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2149:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5666, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2176:9:35", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2163:22:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5665, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2163:5:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2148:38:35" + }, + "returnParameters": { + "id": 5675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5669, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2210:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2210:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2219:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5671, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5670, + "name": "RecoverError", + "nameLocations": [ + "2219:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "2219:12:35" + }, + "referencedDeclaration": 5648, + "src": "2219:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5674, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5714, + "src": "2233:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5673, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2233:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2209:32:35" + }, + "scope": 5988, + "src": "2129:766:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5743, + "nodeType": "Block", + "src": "3789:168:35", + "statements": [ + { + "assignments": [ + 5725, + 5728, + 5730 + ], + "declarations": [ + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "3808:9:35", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "3800:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3800:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5728, + "mutability": "mutable", + "name": "error", + "nameLocation": "3832:5:35", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "3819:18:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5727, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5726, + "name": "RecoverError", + "nameLocations": [ + "3819:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "3819:12:35" + }, + "referencedDeclaration": 5648, + "src": "3819:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5730, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "3847:8:35", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "3839:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5729, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3839:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5735, + "initialValue": { + "arguments": [ + { + "id": 5732, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "3870:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5733, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5719, + "src": "3876:9:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5731, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5714, + 5794, + 5902 + ], + "referencedDeclaration": 5714, + "src": "3859:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 5734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3859:27:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3799:87:35" + }, + { + "expression": { + "arguments": [ + { + "id": 5737, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "3908:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 5738, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "3915:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5736, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5987, + "src": "3896:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5648_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 5739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3896:28:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5740, + "nodeType": "ExpressionStatement", + "src": "3896:28:35" + }, + { + "expression": { + "id": 5741, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5725, + "src": "3941:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5723, + "id": 5742, + "nodeType": "Return", + "src": "3934:16:35" + } + ] + }, + "documentation": { + "id": 5715, + "nodeType": "StructuredDocumentation", + "src": "2901:796:35", + "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it." + }, + "id": 5744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "3711:7:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5717, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3727:4:35", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "3719:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5716, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3719:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5719, + "mutability": "mutable", + "name": "signature", + "nameLocation": "3746:9:35", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "3733:22:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5718, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3733:5:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3718:38:35" + }, + "returnParameters": { + "id": 5723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5722, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "3780:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5721, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3780:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3779:9:35" + }, + "scope": 5988, + "src": "3702:255:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5793, + "nodeType": "Block", + "src": "4285:342:35", + "statements": [ + { + "id": 5792, + "nodeType": "UncheckedBlock", + "src": "4295:326:35", + "statements": [ + { + "assignments": [ + 5762 + ], + "declarations": [ + { + "constant": false, + "id": 5762, + "mutability": "mutable", + "name": "s", + "nameLocation": "4327:1:35", + "nodeType": "VariableDeclaration", + "scope": 5792, + "src": "4319:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5761, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4319:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5769, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 5768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5763, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5751, + "src": "4331:2:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "arguments": [ + { + "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666", + "id": 5766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4344:66:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + }, + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + } + ], + "id": 5765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4336:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5764, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4336:7:35", + "typeDescriptions": {} + } + }, + "id": 5767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4336:75:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4331:80:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4319:92:35" + }, + { + "assignments": [ + 5771 + ], + "declarations": [ + { + "constant": false, + "id": 5771, + "mutability": "mutable", + "name": "v", + "nameLocation": "4528:1:35", + "nodeType": "VariableDeclaration", + "scope": 5792, + "src": "4522:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5770, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4522:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 5784, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5776, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5751, + "src": "4547:2:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4539:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4539:7:35", + "typeDescriptions": {} + } + }, + "id": 5777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4539:11:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 5778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4554:3:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "4539:18:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5780, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4538:20:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3237", + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4561:2:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "4538:25:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4532:5:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 5772, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4532:5:35", + "typeDescriptions": {} + } + }, + "id": 5783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4532:32:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4522:42:35" + }, + { + "expression": { + "arguments": [ + { + "id": 5786, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5747, + "src": "4596:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5787, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5771, + "src": "4602:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5788, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5749, + "src": "4605:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5789, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5762, + "src": "4608:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5785, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5714, + 5794, + 5902 + ], + "referencedDeclaration": 5902, + "src": "4585:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 5790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4585:25:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5760, + "id": 5791, + "nodeType": "Return", + "src": "4578:32:35" + } + ] + } + ] + }, + "documentation": { + "id": 5745, + "nodeType": "StructuredDocumentation", + "src": "3963:205:35", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]" + }, + "id": 5794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "4182:10:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5747, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4201:4:35", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4193:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5746, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4193:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5749, + "mutability": "mutable", + "name": "r", + "nameLocation": "4215:1:35", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4207:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5748, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4207:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5751, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4226:2:35", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4218:10:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5750, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4218:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4192:37:35" + }, + "returnParameters": { + "id": 5760, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5754, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4253:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4253:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5757, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4262:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5756, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5755, + "name": "RecoverError", + "nameLocations": [ + "4262:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "4262:12:35" + }, + "referencedDeclaration": 5648, + "src": "4262:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5759, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5794, + "src": "4276:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5758, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4276:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4252:32:35" + }, + "scope": 5988, + "src": "4173:454:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5826, + "nodeType": "Block", + "src": "4840:164:35", + "statements": [ + { + "assignments": [ + 5807, + 5810, + 5812 + ], + "declarations": [ + { + "constant": false, + "id": 5807, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "4859:9:35", + "nodeType": "VariableDeclaration", + "scope": 5826, + "src": "4851:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4851:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5810, + "mutability": "mutable", + "name": "error", + "nameLocation": "4883:5:35", + "nodeType": "VariableDeclaration", + "scope": 5826, + "src": "4870:18:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5809, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5808, + "name": "RecoverError", + "nameLocations": [ + "4870:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "4870:12:35" + }, + "referencedDeclaration": 5648, + "src": "4870:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5812, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "4898:8:35", + "nodeType": "VariableDeclaration", + "scope": 5826, + "src": "4890:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5811, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4890:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5818, + "initialValue": { + "arguments": [ + { + "id": 5814, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5797, + "src": "4921:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5815, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5799, + "src": "4927:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5816, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5801, + "src": "4930:2:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5813, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5714, + 5794, + 5902 + ], + "referencedDeclaration": 5794, + "src": "4910:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 5817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4910:23:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4850:83:35" + }, + { + "expression": { + "arguments": [ + { + "id": 5820, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5810, + "src": "4955:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 5821, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5812, + "src": "4962:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5819, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5987, + "src": "4943:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5648_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 5822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4943:28:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5823, + "nodeType": "ExpressionStatement", + "src": "4943:28:35" + }, + { + "expression": { + "id": 5824, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5807, + "src": "4988:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5805, + "id": 5825, + "nodeType": "Return", + "src": "4981:16:35" + } + ] + }, + "documentation": { + "id": 5795, + "nodeType": "StructuredDocumentation", + "src": "4633:116:35", + "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately." + }, + "id": 5827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "4763:7:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5797, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4779:4:35", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "4771:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5796, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4771:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5799, + "mutability": "mutable", + "name": "r", + "nameLocation": "4793:1:35", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "4785:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5798, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4785:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5801, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4804:2:35", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "4796:10:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5800, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4796:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4770:37:35" + }, + "returnParameters": { + "id": 5805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5804, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5827, + "src": "4831:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4831:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4830:9:35" + }, + "scope": 5988, + "src": "4754:250:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5901, + "nodeType": "Block", + "src": "5298:1372:35", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5848, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5836, + "src": "6194:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6186:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5846, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6186:7:35", + "typeDescriptions": {} + } + }, + "id": 5849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6186:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", + "id": 5850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6199:66:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", + "typeString": "int_const 5789...(69 digits omitted)...7168" + }, + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "src": "6186:79:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5862, + "nodeType": "IfStatement", + "src": "6182:164:35", + "trueBody": { + "id": 5861, + "nodeType": "Block", + "src": "6267:79:35", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6297:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6289:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6289:7:35", + "typeDescriptions": {} + } + }, + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6289:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 5856, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "6301:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6314:17:35", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 5647, + "src": "6301:30:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 5858, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5836, + "src": "6333:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 5859, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6288:47:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5845, + "id": 5860, + "nodeType": "Return", + "src": "6281:54:35" + } + ] + } + }, + { + "assignments": [ + 5864 + ], + "declarations": [ + { + "constant": false, + "id": 5864, + "mutability": "mutable", + "name": "signer", + "nameLocation": "6448:6:35", + "nodeType": "VariableDeclaration", + "scope": 5901, + "src": "6440:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6440:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 5871, + "initialValue": { + "arguments": [ + { + "id": 5866, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5830, + "src": "6467:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5867, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5832, + "src": "6473:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5868, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5834, + "src": "6476:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5869, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5836, + "src": "6479:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5865, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "6457:9:35", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 5870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6457:24:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6440:41:35" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5872, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5864, + "src": "6495:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6513:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6505:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6505:7:35", + "typeDescriptions": {} + } + }, + "id": 5876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6505:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6495:20:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5891, + "nodeType": "IfStatement", + "src": "6491:113:35", + "trueBody": { + "id": 5890, + "nodeType": "Block", + "src": "6517:87:35", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6547:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6539:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6539:7:35", + "typeDescriptions": {} + } + }, + "id": 5881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6539:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 5882, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "6551:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6564:16:35", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 5645, + "src": "6551:29:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 5886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6590:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6582:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5884, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6582:7:35", + "typeDescriptions": {} + } + }, + "id": 5887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6582:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 5888, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6538:55:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5845, + "id": 5889, + "nodeType": "Return", + "src": "6531:62:35" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 5892, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5864, + "src": "6622:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 5893, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "6630:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6643:7:35", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 5644, + "src": "6630:20:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 5897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6660:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6652:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6652:7:35", + "typeDescriptions": {} + } + }, + "id": 5898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6652:10:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 5899, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6621:42:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 5845, + "id": 5900, + "nodeType": "Return", + "src": "6614:49:35" + } + ] + }, + "documentation": { + "id": 5828, + "nodeType": "StructuredDocumentation", + "src": "5010:125:35", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 5902, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "5149:10:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5830, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5177:4:35", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5169:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5829, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5169:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5832, + "mutability": "mutable", + "name": "v", + "nameLocation": "5197:1:35", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5191:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5831, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5191:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5834, + "mutability": "mutable", + "name": "r", + "nameLocation": "5216:1:35", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5208:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5833, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5208:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5836, + "mutability": "mutable", + "name": "s", + "nameLocation": "5235:1:35", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5227:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5835, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5227:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5159:83:35" + }, + "returnParameters": { + "id": 5845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5839, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5266:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5266:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5842, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5275:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5841, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5840, + "name": "RecoverError", + "nameLocations": [ + "5275:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "5275:12:35" + }, + "referencedDeclaration": 5648, + "src": "5275:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5844, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5902, + "src": "5289:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5843, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5289:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5265:32:35" + }, + "scope": 5988, + "src": "5140:1530:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5937, + "nodeType": "Block", + "src": "6897:166:35", + "statements": [ + { + "assignments": [ + 5917, + 5920, + 5922 + ], + "declarations": [ + { + "constant": false, + "id": 5917, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "6916:9:35", + "nodeType": "VariableDeclaration", + "scope": 5937, + "src": "6908:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6908:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5920, + "mutability": "mutable", + "name": "error", + "nameLocation": "6940:5:35", + "nodeType": "VariableDeclaration", + "scope": 5937, + "src": "6927:18:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5919, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5918, + "name": "RecoverError", + "nameLocations": [ + "6927:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "6927:12:35" + }, + "referencedDeclaration": 5648, + "src": "6927:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5922, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "6955:8:35", + "nodeType": "VariableDeclaration", + "scope": 5937, + "src": "6947:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5921, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6947:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5929, + "initialValue": { + "arguments": [ + { + "id": 5924, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "6978:4:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5925, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5907, + "src": "6984:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5926, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5909, + "src": "6987:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5927, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5911, + "src": "6990:1:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5923, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5714, + 5794, + 5902 + ], + "referencedDeclaration": 5902, + "src": "6967:10:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 5928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6967:25:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5648_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6907:85:35" + }, + { + "expression": { + "arguments": [ + { + "id": 5931, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5920, + "src": "7014:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 5932, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5922, + "src": "7021:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5930, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5987, + "src": "7002:11:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5648_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 5933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7002:28:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5934, + "nodeType": "ExpressionStatement", + "src": "7002:28:35" + }, + { + "expression": { + "id": 5935, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5917, + "src": "7047:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5915, + "id": 5936, + "nodeType": "Return", + "src": "7040:16:35" + } + ] + }, + "documentation": { + "id": 5903, + "nodeType": "StructuredDocumentation", + "src": "6676:122:35", + "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 5938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "6812:7:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5905, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6828:4:35", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "6820:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5904, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6820:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5907, + "mutability": "mutable", + "name": "v", + "nameLocation": "6840:1:35", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "6834:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5906, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6834:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5909, + "mutability": "mutable", + "name": "r", + "nameLocation": "6851:1:35", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "6843:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6843:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5911, + "mutability": "mutable", + "name": "s", + "nameLocation": "6862:1:35", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "6854:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5910, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6854:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6819:45:35" + }, + "returnParameters": { + "id": 5915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5914, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5938, + "src": "6888:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6888:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6887:9:35" + }, + "scope": 5988, + "src": "6803:260:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5986, + "nodeType": "Block", + "src": "7268:460:35", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 5950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5947, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5942, + "src": "7282:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 5948, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "7291:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7304:7:35", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 5644, + "src": "7291:20:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7282:29:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 5956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5953, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5942, + "src": "7378:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 5954, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "7387:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7400:16:35", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 5645, + "src": "7387:29:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7378:38:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 5964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5961, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5942, + "src": "7483:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 5962, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "7492:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7505:22:35", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 5646, + "src": "7492:35:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7483:44:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 5976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5973, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5942, + "src": "7617:5:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 5974, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "7626:12:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$5648_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 5975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7639:17:35", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 5647, + "src": "7626:30:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7617:39:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5982, + "nodeType": "IfStatement", + "src": "7613:109:35", + "trueBody": { + "id": 5981, + "nodeType": "Block", + "src": "7658:64:35", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5978, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5944, + "src": "7702:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5977, + "name": "ECDSAInvalidSignatureS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5661, + "src": "7679:22:35", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 5979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7679:32:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5980, + "nodeType": "RevertStatement", + "src": "7672:39:35" + } + ] + } + }, + "id": 5983, + "nodeType": "IfStatement", + "src": "7479:243:35", + "trueBody": { + "id": 5972, + "nodeType": "Block", + "src": "7529:78:35", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 5968, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5944, + "src": "7586:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7578:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7578:7:35", + "typeDescriptions": {} + } + }, + "id": 5969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7578:17:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5965, + "name": "ECDSAInvalidSignatureLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5656, + "src": "7550:27:35", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 5970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7550:46:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5971, + "nodeType": "RevertStatement", + "src": "7543:53:35" + } + ] + } + }, + "id": 5984, + "nodeType": "IfStatement", + "src": "7374:348:35", + "trueBody": { + "id": 5960, + "nodeType": "Block", + "src": "7418:55:35", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5957, + "name": "ECDSAInvalidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5651, + "src": "7439:21:35", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7439:23:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5959, + "nodeType": "RevertStatement", + "src": "7432:30:35" + } + ] + } + }, + "id": 5985, + "nodeType": "IfStatement", + "src": "7278:444:35", + "trueBody": { + "id": 5952, + "nodeType": "Block", + "src": "7313:55:35", + "statements": [ + { + "functionReturnParameters": 5946, + "id": 5951, + "nodeType": "Return", + "src": "7327:7:35" + } + ] + } + } + ] + }, + "documentation": { + "id": 5939, + "nodeType": "StructuredDocumentation", + "src": "7069:122:35", + "text": " @dev Optionally reverts with the corresponding custom error according to the `error` argument provided." + }, + "id": 5987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_throwError", + "nameLocation": "7205:11:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5942, + "mutability": "mutable", + "name": "error", + "nameLocation": "7230:5:35", + "nodeType": "VariableDeclaration", + "scope": 5987, + "src": "7217:18:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 5941, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5940, + "name": "RecoverError", + "nameLocations": [ + "7217:12:35" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5648, + "src": "7217:12:35" + }, + "referencedDeclaration": 5648, + "src": "7217:12:35", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$5648", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5944, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "7245:8:35", + "nodeType": "VariableDeclaration", + "scope": 5987, + "src": "7237:16:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5943, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7237:7:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7216:38:35" + }, + "returnParameters": { + "id": 5946, + "nodeType": "ParameterList", + "parameters": [], + "src": "7268:0:35" + }, + "scope": 5988, + "src": "7196:532:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 5989, + "src": "344:7386:35", + "usedErrors": [ + 5651, + 5656, + 5661 + ], + "usedEvents": [] + } + ], + "src": "112:7619:35" + }, + "id": 35 + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 6000 + ] + }, + "id": 6001, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5990, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:36" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5991, + "nodeType": "StructuredDocumentation", + "src": "141:279:36", + "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 6000, + "linearizedBaseContracts": [ + 6000 + ], + "name": "IERC165", + "nameLocation": "431:7:36", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5992, + "nodeType": "StructuredDocumentation", + "src": "445:340:36", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 5999, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "799:17:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5994, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "824:11:36", + "nodeType": "VariableDeclaration", + "scope": 5999, + "src": "817:18:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5993, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "817:6:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "816:20:36" + }, + "returnParameters": { + "id": 5998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5997, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5999, + "src": "860:4:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5996, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "860:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "859:6:36" + }, + "scope": 6000, + "src": "790:76:36", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6001, + "src": "421:447:36", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:754:36" + }, + "id": 36 + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol", + "exportedSymbols": { + "Math": [ + 7054 + ] + }, + "id": 7055, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6002, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "103:24:37" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6003, + "nodeType": "StructuredDocumentation", + "src": "129:73:37", + "text": " @dev Standard math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 7054, + "linearizedBaseContracts": [ + 7054 + ], + "name": "Math", + "nameLocation": "211:4:37", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 6004, + "nodeType": "StructuredDocumentation", + "src": "222:50:37", + "text": " @dev Muldiv operation overflow." + }, + "errorSelector": "227bc153", + "id": 6006, + "name": "MathOverflowedMulDiv", + "nameLocation": "283:20:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6005, + "nodeType": "ParameterList", + "parameters": [], + "src": "303:2:37" + }, + "src": "277:29:37" + }, + { + "canonicalName": "Math.Rounding", + "id": 6011, + "members": [ + { + "id": 6007, + "name": "Floor", + "nameLocation": "336:5:37", + "nodeType": "EnumValue", + "src": "336:5:37" + }, + { + "id": 6008, + "name": "Ceil", + "nameLocation": "379:4:37", + "nodeType": "EnumValue", + "src": "379:4:37" + }, + { + "id": 6009, + "name": "Trunc", + "nameLocation": "421:5:37", + "nodeType": "EnumValue", + "src": "421:5:37" + }, + { + "id": 6010, + "name": "Expand", + "nameLocation": "451:6:37", + "nodeType": "EnumValue", + "src": "451:6:37" + } + ], + "name": "Rounding", + "nameLocation": "317:8:37", + "nodeType": "EnumDefinition", + "src": "312:169:37" + }, + { + "body": { + "id": 6042, + "nodeType": "Block", + "src": "661:140:37", + "statements": [ + { + "id": 6041, + "nodeType": "UncheckedBlock", + "src": "671:124:37", + "statements": [ + { + "assignments": [ + 6024 + ], + "declarations": [ + { + "constant": false, + "id": 6024, + "mutability": "mutable", + "name": "c", + "nameLocation": "703:1:37", + "nodeType": "VariableDeclaration", + "scope": 6041, + "src": "695:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "695:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6028, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6025, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6014, + "src": "707:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6026, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "711:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "707:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "695:17:37" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6029, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "730:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6030, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6014, + "src": "734:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "730:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6036, + "nodeType": "IfStatement", + "src": "726:28:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "745:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "752:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6034, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "744:10:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6022, + "id": 6035, + "nodeType": "Return", + "src": "737:17:37" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6037, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "776:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 6038, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "782:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6039, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "775:9:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6022, + "id": 6040, + "nodeType": "Return", + "src": "768:16:37" + } + ] + } + ] + }, + "documentation": { + "id": 6012, + "nodeType": "StructuredDocumentation", + "src": "487:93:37", + "text": " @dev Returns the addition of two unsigned integers, with an overflow flag." + }, + "id": 6043, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nameLocation": "594:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6014, + "mutability": "mutable", + "name": "a", + "nameLocation": "609:1:37", + "nodeType": "VariableDeclaration", + "scope": 6043, + "src": "601:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "601:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6016, + "mutability": "mutable", + "name": "b", + "nameLocation": "620:1:37", + "nodeType": "VariableDeclaration", + "scope": 6043, + "src": "612:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6015, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "612:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "600:22:37" + }, + "returnParameters": { + "id": 6022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6019, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6043, + "src": "646:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6018, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "646:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6021, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6043, + "src": "652:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "652:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "645:15:37" + }, + "scope": 7054, + "src": "585:216:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6070, + "nodeType": "Block", + "src": "984:113:37", + "statements": [ + { + "id": 6069, + "nodeType": "UncheckedBlock", + "src": "994:97:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6055, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6048, + "src": "1022:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6056, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6046, + "src": "1026:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1022:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6062, + "nodeType": "IfStatement", + "src": "1018:28:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1037:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1044:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6060, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1036:10:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6054, + "id": 6061, + "nodeType": "Return", + "src": "1029:17:37" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1068:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6064, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6046, + "src": "1074:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6065, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6048, + "src": "1078:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1074:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6067, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1067:13:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6054, + "id": 6068, + "nodeType": "Return", + "src": "1060:20:37" + } + ] + } + ] + }, + "documentation": { + "id": 6044, + "nodeType": "StructuredDocumentation", + "src": "807:96:37", + "text": " @dev Returns the subtraction of two unsigned integers, with an overflow flag." + }, + "id": 6071, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nameLocation": "917:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6046, + "mutability": "mutable", + "name": "a", + "nameLocation": "932:1:37", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "924:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "924:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6048, + "mutability": "mutable", + "name": "b", + "nameLocation": "943:1:37", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "935:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "935:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "923:22:37" + }, + "returnParameters": { + "id": 6054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6051, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "969:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6050, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "969:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6053, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "975:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "975:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "968:15:37" + }, + "scope": 7054, + "src": "908:189:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6112, + "nodeType": "Block", + "src": "1283:417:37", + "statements": [ + { + "id": 6111, + "nodeType": "UncheckedBlock", + "src": "1293:401:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6083, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6074, + "src": "1551:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1556:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1551:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6090, + "nodeType": "IfStatement", + "src": "1547:28:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1567:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "hexValue": "30", + "id": 6087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1573:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6088, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1566:9:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6082, + "id": 6089, + "nodeType": "Return", + "src": "1559:16:37" + } + }, + { + "assignments": [ + 6092 + ], + "declarations": [ + { + "constant": false, + "id": 6092, + "mutability": "mutable", + "name": "c", + "nameLocation": "1597:1:37", + "nodeType": "VariableDeclaration", + "scope": 6111, + "src": "1589:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1589:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6096, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6093, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6074, + "src": "1601:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6094, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6076, + "src": "1605:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1601:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1589:17:37" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6097, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6092, + "src": "1624:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6098, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6074, + "src": "1628:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1624:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 6100, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6076, + "src": "1633:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1624:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6106, + "nodeType": "IfStatement", + "src": "1620:33:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1644:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1651:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6104, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1643:10:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6082, + "id": 6105, + "nodeType": "Return", + "src": "1636:17:37" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1675:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 6108, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6092, + "src": "1681:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6109, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1674:9:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6082, + "id": 6110, + "nodeType": "Return", + "src": "1667:16:37" + } + ] + } + ] + }, + "documentation": { + "id": 6072, + "nodeType": "StructuredDocumentation", + "src": "1103:99:37", + "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag." + }, + "id": 6113, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nameLocation": "1216:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6074, + "mutability": "mutable", + "name": "a", + "nameLocation": "1231:1:37", + "nodeType": "VariableDeclaration", + "scope": 6113, + "src": "1223:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1223:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6076, + "mutability": "mutable", + "name": "b", + "nameLocation": "1242:1:37", + "nodeType": "VariableDeclaration", + "scope": 6113, + "src": "1234:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1234:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1222:22:37" + }, + "returnParameters": { + "id": 6082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6079, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6113, + "src": "1268:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6081, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6113, + "src": "1274:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1274:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1267:15:37" + }, + "scope": 7054, + "src": "1207:493:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6140, + "nodeType": "Block", + "src": "1887:114:37", + "statements": [ + { + "id": 6139, + "nodeType": "UncheckedBlock", + "src": "1897:98:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6125, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6118, + "src": "1925:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1930:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1925:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6132, + "nodeType": "IfStatement", + "src": "1921:29:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1941:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1948:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6130, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1940:10:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6124, + "id": 6131, + "nodeType": "Return", + "src": "1933:17:37" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1972:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6134, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6116, + "src": "1978:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6135, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6118, + "src": "1982:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1978:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6137, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1971:13:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6124, + "id": 6138, + "nodeType": "Return", + "src": "1964:20:37" + } + ] + } + ] + }, + "documentation": { + "id": 6114, + "nodeType": "StructuredDocumentation", + "src": "1706:100:37", + "text": " @dev Returns the division of two unsigned integers, with a division by zero flag." + }, + "id": 6141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nameLocation": "1820:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6116, + "mutability": "mutable", + "name": "a", + "nameLocation": "1835:1:37", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "1827:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1827:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6118, + "mutability": "mutable", + "name": "b", + "nameLocation": "1846:1:37", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "1838:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1838:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1826:22:37" + }, + "returnParameters": { + "id": 6124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6121, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "1872:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6120, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1872:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6123, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "1878:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1878:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1871:15:37" + }, + "scope": 7054, + "src": "1811:190:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6168, + "nodeType": "Block", + "src": "2198:114:37", + "statements": [ + { + "id": 6167, + "nodeType": "UncheckedBlock", + "src": "2208:98:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6153, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6146, + "src": "2236:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2241:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2236:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6160, + "nodeType": "IfStatement", + "src": "2232:29:37", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2252:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2259:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6158, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2251:10:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6152, + "id": 6159, + "nodeType": "Return", + "src": "2244:17:37" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2283:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6162, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6144, + "src": "2289:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 6163, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6146, + "src": "2293:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2289:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2282:13:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6152, + "id": 6166, + "nodeType": "Return", + "src": "2275:20:37" + } + ] + } + ] + }, + "documentation": { + "id": 6142, + "nodeType": "StructuredDocumentation", + "src": "2007:110:37", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag." + }, + "id": 6169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nameLocation": "2131:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6144, + "mutability": "mutable", + "name": "a", + "nameLocation": "2146:1:37", + "nodeType": "VariableDeclaration", + "scope": 6169, + "src": "2138:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2138:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6146, + "mutability": "mutable", + "name": "b", + "nameLocation": "2157:1:37", + "nodeType": "VariableDeclaration", + "scope": 6169, + "src": "2149:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2149:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2137:22:37" + }, + "returnParameters": { + "id": 6152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6149, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6169, + "src": "2183:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6148, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2183:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6151, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6169, + "src": "2189:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6150, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2189:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2182:15:37" + }, + "scope": 7054, + "src": "2122:190:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6186, + "nodeType": "Block", + "src": "2449:37:37", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6179, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6172, + "src": "2466:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6180, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6174, + "src": "2470:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2466:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 6183, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6174, + "src": "2478:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2466:13:37", + "trueExpression": { + "id": 6182, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6172, + "src": "2474:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6178, + "id": 6185, + "nodeType": "Return", + "src": "2459:20:37" + } + ] + }, + "documentation": { + "id": 6170, + "nodeType": "StructuredDocumentation", + "src": "2318:59:37", + "text": " @dev Returns the largest of two numbers." + }, + "id": 6187, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "2391:3:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6172, + "mutability": "mutable", + "name": "a", + "nameLocation": "2403:1:37", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "2395:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2395:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6174, + "mutability": "mutable", + "name": "b", + "nameLocation": "2414:1:37", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "2406:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2406:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2394:22:37" + }, + "returnParameters": { + "id": 6178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6177, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "2440:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2440:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2439:9:37" + }, + "scope": 7054, + "src": "2382:104:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6204, + "nodeType": "Block", + "src": "2624:37:37", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6197, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "2641:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6198, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6192, + "src": "2645:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2641:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 6201, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6192, + "src": "2653:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2641:13:37", + "trueExpression": { + "id": 6200, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "2649:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6196, + "id": 6203, + "nodeType": "Return", + "src": "2634:20:37" + } + ] + }, + "documentation": { + "id": 6188, + "nodeType": "StructuredDocumentation", + "src": "2492:60:37", + "text": " @dev Returns the smallest of two numbers." + }, + "id": 6205, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "2566:3:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6190, + "mutability": "mutable", + "name": "a", + "nameLocation": "2578:1:37", + "nodeType": "VariableDeclaration", + "scope": 6205, + "src": "2570:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2570:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6192, + "mutability": "mutable", + "name": "b", + "nameLocation": "2589:1:37", + "nodeType": "VariableDeclaration", + "scope": 6205, + "src": "2581:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2581:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2569:22:37" + }, + "returnParameters": { + "id": 6196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6195, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6205, + "src": "2615:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2615:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2614:9:37" + }, + "scope": 7054, + "src": "2557:104:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6227, + "nodeType": "Block", + "src": "2845:82:37", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6215, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6208, + "src": "2900:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 6216, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6210, + "src": "2904:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2900:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6218, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2899:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6219, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6208, + "src": "2910:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 6220, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6210, + "src": "2914:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2910:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6222, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2909:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2919:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2909:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2899:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6214, + "id": 6226, + "nodeType": "Return", + "src": "2892:28:37" + } + ] + }, + "documentation": { + "id": 6206, + "nodeType": "StructuredDocumentation", + "src": "2667:102:37", + "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." + }, + "id": 6228, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "2783:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6208, + "mutability": "mutable", + "name": "a", + "nameLocation": "2799:1:37", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "2791:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2791:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6210, + "mutability": "mutable", + "name": "b", + "nameLocation": "2810:1:37", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "2802:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2802:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2790:22:37" + }, + "returnParameters": { + "id": 6214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6213, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "2836:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2836:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2835:9:37" + }, + "scope": 7054, + "src": "2774:153:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6261, + "nodeType": "Block", + "src": "3219:260:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6238, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6233, + "src": "3233:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3238:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3233:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6246, + "nodeType": "IfStatement", + "src": "3229:127:37", + "trueBody": { + "id": 6245, + "nodeType": "Block", + "src": "3241:115:37", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6241, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6231, + "src": "3340:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6242, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6233, + "src": "3344:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3340:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6237, + "id": 6244, + "nodeType": "Return", + "src": "3333:12:37" + } + ] + } + }, + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6247, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6231, + "src": "3444:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3449:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3444:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6251, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6231, + "src": "3458:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 6252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3462:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3458:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3457:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6255, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6233, + "src": "3467:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3457:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3471:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3457:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3444:28:37", + "trueExpression": { + "hexValue": "30", + "id": 6250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3453:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6237, + "id": 6260, + "nodeType": "Return", + "src": "3437:35:37" + } + ] + }, + "documentation": { + "id": 6229, + "nodeType": "StructuredDocumentation", + "src": "2933:210:37", + "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero." + }, + "id": 6262, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ceilDiv", + "nameLocation": "3157:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6231, + "mutability": "mutable", + "name": "a", + "nameLocation": "3173:1:37", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "3165:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3165:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6233, + "mutability": "mutable", + "name": "b", + "nameLocation": "3184:1:37", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "3176:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3176:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3164:22:37" + }, + "returnParameters": { + "id": 6237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6236, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "3210:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3209:9:37" + }, + "scope": 7054, + "src": "3148:331:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6387, + "nodeType": "Block", + "src": "3901:4018:37", + "statements": [ + { + "id": 6386, + "nodeType": "UncheckedBlock", + "src": "3911:4002:37", + "statements": [ + { + "assignments": [ + 6275 + ], + "declarations": [ + { + "constant": false, + "id": 6275, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "4240:5:37", + "nodeType": "VariableDeclaration", + "scope": 6386, + "src": "4232:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4232:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6279, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6276, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6265, + "src": "4248:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6277, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6267, + "src": "4252:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4248:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4232:21:37" + }, + { + "assignments": [ + 6281 + ], + "declarations": [ + { + "constant": false, + "id": 6281, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "4320:5:37", + "nodeType": "VariableDeclaration", + "scope": 6386, + "src": "4312:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4312:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6282, + "nodeType": "VariableDeclarationStatement", + "src": "4312:13:37" + }, + { + "AST": { + "nativeSrc": "4392:122:37", + "nodeType": "YulBlock", + "src": "4392:122:37", + "statements": [ + { + "nativeSrc": "4410:30:37", + "nodeType": "YulVariableDeclaration", + "src": "4410:30:37", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4427:1:37", + "nodeType": "YulIdentifier", + "src": "4427:1:37" + }, + { + "name": "y", + "nativeSrc": "4430:1:37", + "nodeType": "YulIdentifier", + "src": "4430:1:37" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4437:1:37", + "nodeType": "YulLiteral", + "src": "4437:1:37", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4433:3:37", + "nodeType": "YulIdentifier", + "src": "4433:3:37" + }, + "nativeSrc": "4433:6:37", + "nodeType": "YulFunctionCall", + "src": "4433:6:37" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "4420:6:37", + "nodeType": "YulIdentifier", + "src": "4420:6:37" + }, + "nativeSrc": "4420:20:37", + "nodeType": "YulFunctionCall", + "src": "4420:20:37" + }, + "variables": [ + { + "name": "mm", + "nativeSrc": "4414:2:37", + "nodeType": "YulTypedName", + "src": "4414:2:37", + "type": "" + } + ] + }, + { + "nativeSrc": "4457:43:37", + "nodeType": "YulAssignment", + "src": "4457:43:37", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "4474:2:37", + "nodeType": "YulIdentifier", + "src": "4474:2:37" + }, + { + "name": "prod0", + "nativeSrc": "4478:5:37", + "nodeType": "YulIdentifier", + "src": "4478:5:37" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4470:3:37", + "nodeType": "YulIdentifier", + "src": "4470:3:37" + }, + "nativeSrc": "4470:14:37", + "nodeType": "YulFunctionCall", + "src": "4470:14:37" + }, + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "4489:2:37", + "nodeType": "YulIdentifier", + "src": "4489:2:37" + }, + { + "name": "prod0", + "nativeSrc": "4493:5:37", + "nodeType": "YulIdentifier", + "src": "4493:5:37" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4486:2:37", + "nodeType": "YulIdentifier", + "src": "4486:2:37" + }, + "nativeSrc": "4486:13:37", + "nodeType": "YulFunctionCall", + "src": "4486:13:37" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4466:3:37", + "nodeType": "YulIdentifier", + "src": "4466:3:37" + }, + "nativeSrc": "4466:34:37", + "nodeType": "YulFunctionCall", + "src": "4466:34:37" + }, + "variableNames": [ + { + "name": "prod1", + "nativeSrc": "4457:5:37", + "nodeType": "YulIdentifier", + "src": "4457:5:37" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "4478:5:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "4493:5:37", + "valueSize": 1 + }, + { + "declaration": 6281, + "isOffset": false, + "isSlot": false, + "src": "4457:5:37", + "valueSize": 1 + }, + { + "declaration": 6265, + "isOffset": false, + "isSlot": false, + "src": "4427:1:37", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "4430:1:37", + "valueSize": 1 + } + ], + "id": 6283, + "nodeType": "InlineAssembly", + "src": "4383:131:37" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6284, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6281, + "src": "4595:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4604:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4595:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6292, + "nodeType": "IfStatement", + "src": "4591:368:37", + "trueBody": { + "id": 6291, + "nodeType": "Block", + "src": "4607:352:37", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6287, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6275, + "src": "4925:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6288, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "4933:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4925:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6273, + "id": 6290, + "nodeType": "Return", + "src": "4918:26:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6293, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "5065:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 6294, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6281, + "src": "5080:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5065:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6300, + "nodeType": "IfStatement", + "src": "5061:88:37", + "trueBody": { + "id": 6299, + "nodeType": "Block", + "src": "5087:62:37", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6296, + "name": "MathOverflowedMulDiv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6006, + "src": "5112:20:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5112:22:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6298, + "nodeType": "RevertStatement", + "src": "5105:29:37" + } + ] + } + }, + { + "assignments": [ + 6302 + ], + "declarations": [ + { + "constant": false, + "id": 6302, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "5412:9:37", + "nodeType": "VariableDeclaration", + "scope": 6386, + "src": "5404:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5404:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6303, + "nodeType": "VariableDeclarationStatement", + "src": "5404:17:37" + }, + { + "AST": { + "nativeSrc": "5444:291:37", + "nodeType": "YulBlock", + "src": "5444:291:37", + "statements": [ + { + "nativeSrc": "5513:38:37", + "nodeType": "YulAssignment", + "src": "5513:38:37", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "5533:1:37", + "nodeType": "YulIdentifier", + "src": "5533:1:37" + }, + { + "name": "y", + "nativeSrc": "5536:1:37", + "nodeType": "YulIdentifier", + "src": "5536:1:37" + }, + { + "name": "denominator", + "nativeSrc": "5539:11:37", + "nodeType": "YulIdentifier", + "src": "5539:11:37" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "5526:6:37", + "nodeType": "YulIdentifier", + "src": "5526:6:37" + }, + "nativeSrc": "5526:25:37", + "nodeType": "YulFunctionCall", + "src": "5526:25:37" + }, + "variableNames": [ + { + "name": "remainder", + "nativeSrc": "5513:9:37", + "nodeType": "YulIdentifier", + "src": "5513:9:37" + } + ] + }, + { + "nativeSrc": "5633:41:37", + "nodeType": "YulAssignment", + "src": "5633:41:37", + "value": { + "arguments": [ + { + "name": "prod1", + "nativeSrc": "5646:5:37", + "nodeType": "YulIdentifier", + "src": "5646:5:37" + }, + { + "arguments": [ + { + "name": "remainder", + "nativeSrc": "5656:9:37", + "nodeType": "YulIdentifier", + "src": "5656:9:37" + }, + { + "name": "prod0", + "nativeSrc": "5667:5:37", + "nodeType": "YulIdentifier", + "src": "5667:5:37" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5653:2:37", + "nodeType": "YulIdentifier", + "src": "5653:2:37" + }, + "nativeSrc": "5653:20:37", + "nodeType": "YulFunctionCall", + "src": "5653:20:37" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5642:3:37", + "nodeType": "YulIdentifier", + "src": "5642:3:37" + }, + "nativeSrc": "5642:32:37", + "nodeType": "YulFunctionCall", + "src": "5642:32:37" + }, + "variableNames": [ + { + "name": "prod1", + "nativeSrc": "5633:5:37", + "nodeType": "YulIdentifier", + "src": "5633:5:37" + } + ] + }, + { + "nativeSrc": "5691:30:37", + "nodeType": "YulAssignment", + "src": "5691:30:37", + "value": { + "arguments": [ + { + "name": "prod0", + "nativeSrc": "5704:5:37", + "nodeType": "YulIdentifier", + "src": "5704:5:37" + }, + { + "name": "remainder", + "nativeSrc": "5711:9:37", + "nodeType": "YulIdentifier", + "src": "5711:9:37" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5700:3:37", + "nodeType": "YulIdentifier", + "src": "5700:3:37" + }, + "nativeSrc": "5700:21:37", + "nodeType": "YulFunctionCall", + "src": "5700:21:37" + }, + "variableNames": [ + { + "name": "prod0", + "nativeSrc": "5691:5:37", + "nodeType": "YulIdentifier", + "src": "5691:5:37" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6269, + "isOffset": false, + "isSlot": false, + "src": "5539:11:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "5667:5:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "5691:5:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "5704:5:37", + "valueSize": 1 + }, + { + "declaration": 6281, + "isOffset": false, + "isSlot": false, + "src": "5633:5:37", + "valueSize": 1 + }, + { + "declaration": 6281, + "isOffset": false, + "isSlot": false, + "src": "5646:5:37", + "valueSize": 1 + }, + { + "declaration": 6302, + "isOffset": false, + "isSlot": false, + "src": "5513:9:37", + "valueSize": 1 + }, + { + "declaration": 6302, + "isOffset": false, + "isSlot": false, + "src": "5656:9:37", + "valueSize": 1 + }, + { + "declaration": 6302, + "isOffset": false, + "isSlot": false, + "src": "5711:9:37", + "valueSize": 1 + }, + { + "declaration": 6265, + "isOffset": false, + "isSlot": false, + "src": "5533:1:37", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "5536:1:37", + "valueSize": 1 + } + ], + "id": 6304, + "nodeType": "InlineAssembly", + "src": "5435:300:37" + }, + { + "assignments": [ + 6306 + ], + "declarations": [ + { + "constant": false, + "id": 6306, + "mutability": "mutable", + "name": "twos", + "nameLocation": "5947:4:37", + "nodeType": "VariableDeclaration", + "scope": 6386, + "src": "5939:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5939:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6313, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6307, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "5954:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "30", + "id": 6308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5969:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6309, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "5973:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5969:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6311, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5968:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5954:31:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5939:46:37" + }, + { + "AST": { + "nativeSrc": "6008:362:37", + "nodeType": "YulBlock", + "src": "6008:362:37", + "statements": [ + { + "nativeSrc": "6073:37:37", + "nodeType": "YulAssignment", + "src": "6073:37:37", + "value": { + "arguments": [ + { + "name": "denominator", + "nativeSrc": "6092:11:37", + "nodeType": "YulIdentifier", + "src": "6092:11:37" + }, + { + "name": "twos", + "nativeSrc": "6105:4:37", + "nodeType": "YulIdentifier", + "src": "6105:4:37" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "6088:3:37", + "nodeType": "YulIdentifier", + "src": "6088:3:37" + }, + "nativeSrc": "6088:22:37", + "nodeType": "YulFunctionCall", + "src": "6088:22:37" + }, + "variableNames": [ + { + "name": "denominator", + "nativeSrc": "6073:11:37", + "nodeType": "YulIdentifier", + "src": "6073:11:37" + } + ] + }, + { + "nativeSrc": "6177:25:37", + "nodeType": "YulAssignment", + "src": "6177:25:37", + "value": { + "arguments": [ + { + "name": "prod0", + "nativeSrc": "6190:5:37", + "nodeType": "YulIdentifier", + "src": "6190:5:37" + }, + { + "name": "twos", + "nativeSrc": "6197:4:37", + "nodeType": "YulIdentifier", + "src": "6197:4:37" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "6186:3:37", + "nodeType": "YulIdentifier", + "src": "6186:3:37" + }, + "nativeSrc": "6186:16:37", + "nodeType": "YulFunctionCall", + "src": "6186:16:37" + }, + "variableNames": [ + { + "name": "prod0", + "nativeSrc": "6177:5:37", + "nodeType": "YulIdentifier", + "src": "6177:5:37" + } + ] + }, + { + "nativeSrc": "6317:39:37", + "nodeType": "YulAssignment", + "src": "6317:39:37", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6337:1:37", + "nodeType": "YulLiteral", + "src": "6337:1:37", + "type": "", + "value": "0" + }, + { + "name": "twos", + "nativeSrc": "6340:4:37", + "nodeType": "YulIdentifier", + "src": "6340:4:37" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6333:3:37", + "nodeType": "YulIdentifier", + "src": "6333:3:37" + }, + "nativeSrc": "6333:12:37", + "nodeType": "YulFunctionCall", + "src": "6333:12:37" + }, + { + "name": "twos", + "nativeSrc": "6347:4:37", + "nodeType": "YulIdentifier", + "src": "6347:4:37" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "6329:3:37", + "nodeType": "YulIdentifier", + "src": "6329:3:37" + }, + "nativeSrc": "6329:23:37", + "nodeType": "YulFunctionCall", + "src": "6329:23:37" + }, + { + "kind": "number", + "nativeSrc": "6354:1:37", + "nodeType": "YulLiteral", + "src": "6354:1:37", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6325:3:37", + "nodeType": "YulIdentifier", + "src": "6325:3:37" + }, + "nativeSrc": "6325:31:37", + "nodeType": "YulFunctionCall", + "src": "6325:31:37" + }, + "variableNames": [ + { + "name": "twos", + "nativeSrc": "6317:4:37", + "nodeType": "YulIdentifier", + "src": "6317:4:37" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6269, + "isOffset": false, + "isSlot": false, + "src": "6073:11:37", + "valueSize": 1 + }, + { + "declaration": 6269, + "isOffset": false, + "isSlot": false, + "src": "6092:11:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "6177:5:37", + "valueSize": 1 + }, + { + "declaration": 6275, + "isOffset": false, + "isSlot": false, + "src": "6190:5:37", + "valueSize": 1 + }, + { + "declaration": 6306, + "isOffset": false, + "isSlot": false, + "src": "6105:4:37", + "valueSize": 1 + }, + { + "declaration": 6306, + "isOffset": false, + "isSlot": false, + "src": "6197:4:37", + "valueSize": 1 + }, + { + "declaration": 6306, + "isOffset": false, + "isSlot": false, + "src": "6317:4:37", + "valueSize": 1 + }, + { + "declaration": 6306, + "isOffset": false, + "isSlot": false, + "src": "6340:4:37", + "valueSize": 1 + }, + { + "declaration": 6306, + "isOffset": false, + "isSlot": false, + "src": "6347:4:37", + "valueSize": 1 + } + ], + "id": 6314, + "nodeType": "InlineAssembly", + "src": "5999:371:37" + }, + { + "expression": { + "id": 6319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6315, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6275, + "src": "6436:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6316, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6281, + "src": "6445:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6317, + "name": "twos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6306, + "src": "6453:4:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6445:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6436:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6320, + "nodeType": "ExpressionStatement", + "src": "6436:21:37" + }, + { + "assignments": [ + 6322 + ], + "declarations": [ + { + "constant": false, + "id": 6322, + "mutability": "mutable", + "name": "inverse", + "nameLocation": "6783:7:37", + "nodeType": "VariableDeclaration", + "scope": 6386, + "src": "6775:15:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6775:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6329, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 6323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6794:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6324, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "6798:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6794:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6326, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6793:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 6327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6813:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "6793:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6775:39:37" + }, + { + "expression": { + "id": 6336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6330, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7031:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7042:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6332, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7046:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6333, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7060:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7046:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7042:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7031:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6337, + "nodeType": "ExpressionStatement", + "src": "7031:36:37" + }, + { + "expression": { + "id": 6344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6338, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7100:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7111:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6340, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7115:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6341, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7129:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7115:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7111:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7100:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6345, + "nodeType": "ExpressionStatement", + "src": "7100:36:37" + }, + { + "expression": { + "id": 6352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6346, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7170:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7181:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6348, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7185:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6349, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7199:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7185:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7181:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7170:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6353, + "nodeType": "ExpressionStatement", + "src": "7170:36:37" + }, + { + "expression": { + "id": 6360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6354, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7240:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7251:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6356, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7255:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6357, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7269:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7255:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7251:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7240:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6361, + "nodeType": "ExpressionStatement", + "src": "7240:36:37" + }, + { + "expression": { + "id": 6368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6362, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7310:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7321:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6364, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7325:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6365, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7339:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7325:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7321:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7310:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6369, + "nodeType": "ExpressionStatement", + "src": "7310:36:37" + }, + { + "expression": { + "id": 6376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6370, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7381:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7392:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6372, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6269, + "src": "7396:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6373, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7410:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7396:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7392:25:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7381:36:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6377, + "nodeType": "ExpressionStatement", + "src": "7381:36:37" + }, + { + "expression": { + "id": 6382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6378, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6272, + "src": "7851:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6379, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6275, + "src": "7860:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6380, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "7868:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7860:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7851:24:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6383, + "nodeType": "ExpressionStatement", + "src": "7851:24:37" + }, + { + "expression": { + "id": 6384, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6272, + "src": "7896:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6273, + "id": 6385, + "nodeType": "Return", + "src": "7889:13:37" + } + ] + } + ] + }, + "documentation": { + "id": 6263, + "nodeType": "StructuredDocumentation", + "src": "3485:313:37", + "text": " @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license." + }, + "id": 6388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "3812:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6265, + "mutability": "mutable", + "name": "x", + "nameLocation": "3827:1:37", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "3819:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3819:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6267, + "mutability": "mutable", + "name": "y", + "nameLocation": "3838:1:37", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "3830:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3830:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6269, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "3849:11:37", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "3841:19:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6268, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3841:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3818:43:37" + }, + "returnParameters": { + "id": 6273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6272, + "mutability": "mutable", + "name": "result", + "nameLocation": "3893:6:37", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "3885:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3885:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3884:16:37" + }, + "scope": 7054, + "src": "3803:4116:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6430, + "nodeType": "Block", + "src": "8161:192:37", + "statements": [ + { + "assignments": [ + 6404 + ], + "declarations": [ + { + "constant": false, + "id": 6404, + "mutability": "mutable", + "name": "result", + "nameLocation": "8179:6:37", + "nodeType": "VariableDeclaration", + "scope": 6430, + "src": "8171:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8171:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6410, + "initialValue": { + "arguments": [ + { + "id": 6406, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6391, + "src": "8195:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6407, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6393, + "src": "8198:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6408, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "8201:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6405, + "name": "mulDiv", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6388, + 6431 + ], + "referencedDeclaration": 6388, + "src": "8188:6:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8188:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8171:42:37" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6412, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6398, + "src": "8244:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 6411, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "8227:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6011_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 6413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8227:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6415, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6391, + "src": "8264:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6416, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6393, + "src": "8267:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6417, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "8270:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6414, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8257:6:37", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8257:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8285:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8257:29:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8227:59:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6427, + "nodeType": "IfStatement", + "src": "8223:101:37", + "trueBody": { + "id": 6426, + "nodeType": "Block", + "src": "8288:36:37", + "statements": [ + { + "expression": { + "id": 6424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6422, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "8302:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 6423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8312:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8302:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6425, + "nodeType": "ExpressionStatement", + "src": "8302:11:37" + } + ] + } + }, + { + "expression": { + "id": 6428, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "8340:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6402, + "id": 6429, + "nodeType": "Return", + "src": "8333:13:37" + } + ] + }, + "documentation": { + "id": 6389, + "nodeType": "StructuredDocumentation", + "src": "7925:121:37", + "text": " @notice Calculates x * y / denominator with full precision, following the selected rounding direction." + }, + "id": 6431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "8060:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6391, + "mutability": "mutable", + "name": "x", + "nameLocation": "8075:1:37", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8067:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8067:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6393, + "mutability": "mutable", + "name": "y", + "nameLocation": "8086:1:37", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8078:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8078:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6395, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "8097:11:37", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8089:19:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8089:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6398, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "8119:8:37", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8110:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 6397, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6396, + "name": "Rounding", + "nameLocations": [ + "8110:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "8110:8:37" + }, + "referencedDeclaration": 6011, + "src": "8110:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "8066:62:37" + }, + "returnParameters": { + "id": 6402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6401, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8152:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8152:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8151:9:37" + }, + "scope": 7054, + "src": "8051:302:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6542, + "nodeType": "Block", + "src": "8644:1585:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6439, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "8658:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8663:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8658:6:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6445, + "nodeType": "IfStatement", + "src": "8654:45:37", + "trueBody": { + "id": 6444, + "nodeType": "Block", + "src": "8666:33:37", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 6442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8687:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6438, + "id": 6443, + "nodeType": "Return", + "src": "8680:8:37" + } + ] + } + }, + { + "assignments": [ + 6447 + ], + "declarations": [ + { + "constant": false, + "id": 6447, + "mutability": "mutable", + "name": "result", + "nameLocation": "9386:6:37", + "nodeType": "VariableDeclaration", + "scope": 6542, + "src": "9378:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9378:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6456, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 6448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9395:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6450, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "9406:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6449, + "name": "log2", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6710, + 6745 + ], + "referencedDeclaration": 6710, + "src": "9401:4:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 6451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9401:7:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9412:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9401:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6454, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9400:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9395:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9378:36:37" + }, + { + "id": 6541, + "nodeType": "UncheckedBlock", + "src": "9815:408:37", + "statements": [ + { + "expression": { + "id": 6466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6457, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9839:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6458, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9849:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6459, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "9858:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6460, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9862:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9858:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9849:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6463, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9848:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9873:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9848:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9839:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6467, + "nodeType": "ExpressionStatement", + "src": "9839:35:37" + }, + { + "expression": { + "id": 6477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6468, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9888:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6469, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9898:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6470, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "9907:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6471, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9911:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9907:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9898:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6474, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9897:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9922:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9897:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9888:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6478, + "nodeType": "ExpressionStatement", + "src": "9888:35:37" + }, + { + "expression": { + "id": 6488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6479, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9937:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6480, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9947:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6481, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "9956:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6482, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9960:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9956:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9947:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6485, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9946:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9971:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9946:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9937:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6489, + "nodeType": "ExpressionStatement", + "src": "9937:35:37" + }, + { + "expression": { + "id": 6499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6490, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9986:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6491, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "9996:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6492, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "10005:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6493, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10009:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10005:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9996:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6496, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9995:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10020:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9995:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9986:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6500, + "nodeType": "ExpressionStatement", + "src": "9986:35:37" + }, + { + "expression": { + "id": 6510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6501, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10035:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6502, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10045:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6503, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "10054:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6504, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10058:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10054:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10045:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6507, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10044:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10069:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10044:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10035:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6511, + "nodeType": "ExpressionStatement", + "src": "10035:35:37" + }, + { + "expression": { + "id": 6521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6512, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10084:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6513, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10094:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6514, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "10103:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6515, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10107:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10103:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10094:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6518, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10093:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10118:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10093:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10084:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6522, + "nodeType": "ExpressionStatement", + "src": "10084:35:37" + }, + { + "expression": { + "id": 6532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6523, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10133:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6524, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10143:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6525, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "10152:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6526, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10156:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10152:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10143:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6529, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10142:21:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10167:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10142:26:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10133:35:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6533, + "nodeType": "ExpressionStatement", + "src": "10133:35:37" + }, + { + "expression": { + "arguments": [ + { + "id": 6535, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10193:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6536, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6434, + "src": "10201:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6537, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "10205:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10201:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6534, + "name": "min", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6205, + "src": "10189:3:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10189:23:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6438, + "id": 6540, + "nodeType": "Return", + "src": "10182:30:37" + } + ] + } + ] + }, + "documentation": { + "id": 6432, + "nodeType": "StructuredDocumentation", + "src": "8359:223:37", + "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)." + }, + "id": 6543, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "8596:4:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6434, + "mutability": "mutable", + "name": "a", + "nameLocation": "8609:1:37", + "nodeType": "VariableDeclaration", + "scope": 6543, + "src": "8601:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8601:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8600:11:37" + }, + "returnParameters": { + "id": 6438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6437, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6543, + "src": "8635:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8635:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8634:9:37" + }, + "scope": 7054, + "src": "8587:1642:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6577, + "nodeType": "Block", + "src": "10405:164:37", + "statements": [ + { + "id": 6576, + "nodeType": "UncheckedBlock", + "src": "10415:148:37", + "statements": [ + { + "assignments": [ + 6555 + ], + "declarations": [ + { + "constant": false, + "id": 6555, + "mutability": "mutable", + "name": "result", + "nameLocation": "10447:6:37", + "nodeType": "VariableDeclaration", + "scope": 6576, + "src": "10439:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10439:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6559, + "initialValue": { + "arguments": [ + { + "id": 6557, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6546, + "src": "10461:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6556, + "name": "sqrt", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6543, + 6578 + ], + "referencedDeclaration": 6543, + "src": "10456:4:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 6558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10456:7:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10439:24:37" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6560, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "10484:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6562, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6549, + "src": "10511:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 6561, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "10494:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6011_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 6563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10494:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6564, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "10524:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6565, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "10533:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10524:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6567, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6546, + "src": "10542:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10524:19:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10494:49:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 6571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10550:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 6572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "10494:57:37", + "trueExpression": { + "hexValue": "31", + "id": 6570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10546:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 6573, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10493:59:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10484:68:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6553, + "id": 6575, + "nodeType": "Return", + "src": "10477:75:37" + } + ] + } + ] + }, + "documentation": { + "id": 6544, + "nodeType": "StructuredDocumentation", + "src": "10235:89:37", + "text": " @notice Calculates sqrt(a), following the selected rounding direction." + }, + "id": 6578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "10338:4:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6546, + "mutability": "mutable", + "name": "a", + "nameLocation": "10351:1:37", + "nodeType": "VariableDeclaration", + "scope": 6578, + "src": "10343:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10343:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6549, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "10363:8:37", + "nodeType": "VariableDeclaration", + "scope": 6578, + "src": "10354:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 6548, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6547, + "name": "Rounding", + "nameLocations": [ + "10354:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "10354:8:37" + }, + "referencedDeclaration": 6011, + "src": "10354:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "10342:30:37" + }, + "returnParameters": { + "id": 6553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6578, + "src": "10396:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10396:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10395:9:37" + }, + "scope": 7054, + "src": "10329:240:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6709, + "nodeType": "Block", + "src": "10760:922:37", + "statements": [ + { + "assignments": [ + 6587 + ], + "declarations": [ + { + "constant": false, + "id": 6587, + "mutability": "mutable", + "name": "result", + "nameLocation": "10778:6:37", + "nodeType": "VariableDeclaration", + "scope": 6709, + "src": "10770:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10770:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6589, + "initialValue": { + "hexValue": "30", + "id": 6588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10787:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10770:18:37" + }, + { + "id": 6706, + "nodeType": "UncheckedBlock", + "src": "10798:855:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6590, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "10826:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 6591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10835:3:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10826:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10841:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10826:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6604, + "nodeType": "IfStatement", + "src": "10822:99:37", + "trueBody": { + "id": 6603, + "nodeType": "Block", + "src": "10844:77:37", + "statements": [ + { + "expression": { + "id": 6597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6595, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "10862:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "313238", + "id": 6596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10872:3:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10862:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6598, + "nodeType": "ExpressionStatement", + "src": "10862:13:37" + }, + { + "expression": { + "id": 6601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6599, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "10893:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "313238", + "id": 6600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10903:3:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10893:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6602, + "nodeType": "ExpressionStatement", + "src": "10893:13:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6605, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "10938:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 6606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10947:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "10938:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10952:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10938:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6619, + "nodeType": "IfStatement", + "src": "10934:96:37", + "trueBody": { + "id": 6618, + "nodeType": "Block", + "src": "10955:75:37", + "statements": [ + { + "expression": { + "id": 6612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6610, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "10973:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3634", + "id": 6611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10983:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "10973:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6613, + "nodeType": "ExpressionStatement", + "src": "10973:12:37" + }, + { + "expression": { + "id": 6616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6614, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11003:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3634", + "id": 6615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11013:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "11003:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6617, + "nodeType": "ExpressionStatement", + "src": "11003:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6620, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11047:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 6621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11056:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "11047:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11061:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11047:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6634, + "nodeType": "IfStatement", + "src": "11043:96:37", + "trueBody": { + "id": 6633, + "nodeType": "Block", + "src": "11064:75:37", + "statements": [ + { + "expression": { + "id": 6627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6625, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11082:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3332", + "id": 6626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11092:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "11082:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6628, + "nodeType": "ExpressionStatement", + "src": "11082:12:37" + }, + { + "expression": { + "id": 6631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6629, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11112:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3332", + "id": 6630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11122:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "11112:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6632, + "nodeType": "ExpressionStatement", + "src": "11112:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6635, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11156:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 6636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11165:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "11156:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6638, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11170:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11156:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6649, + "nodeType": "IfStatement", + "src": "11152:96:37", + "trueBody": { + "id": 6648, + "nodeType": "Block", + "src": "11173:75:37", + "statements": [ + { + "expression": { + "id": 6642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6640, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11191:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3136", + "id": 6641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11201:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "11191:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6643, + "nodeType": "ExpressionStatement", + "src": "11191:12:37" + }, + { + "expression": { + "id": 6646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6644, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11221:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3136", + "id": 6645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11231:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "11221:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6647, + "nodeType": "ExpressionStatement", + "src": "11221:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6650, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11265:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 6651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11274:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "11265:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11278:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11265:14:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6664, + "nodeType": "IfStatement", + "src": "11261:93:37", + "trueBody": { + "id": 6663, + "nodeType": "Block", + "src": "11281:73:37", + "statements": [ + { + "expression": { + "id": 6657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6655, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11299:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "38", + "id": 6656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11309:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "11299:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6658, + "nodeType": "ExpressionStatement", + "src": "11299:11:37" + }, + { + "expression": { + "id": 6661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6659, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11328:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "38", + "id": 6660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11338:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "11328:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6662, + "nodeType": "ExpressionStatement", + "src": "11328:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6665, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11371:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "34", + "id": 6666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11380:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "11371:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11384:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11371:14:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6679, + "nodeType": "IfStatement", + "src": "11367:93:37", + "trueBody": { + "id": 6678, + "nodeType": "Block", + "src": "11387:73:37", + "statements": [ + { + "expression": { + "id": 6672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6670, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11405:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 6671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11415:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "11405:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6673, + "nodeType": "ExpressionStatement", + "src": "11405:11:37" + }, + { + "expression": { + "id": 6676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6674, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11434:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "34", + "id": 6675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11444:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "11434:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6677, + "nodeType": "ExpressionStatement", + "src": "11434:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6680, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11477:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "32", + "id": 6681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11486:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "11477:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11490:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11477:14:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6694, + "nodeType": "IfStatement", + "src": "11473:93:37", + "trueBody": { + "id": 6693, + "nodeType": "Block", + "src": "11493:73:37", + "statements": [ + { + "expression": { + "id": 6687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6685, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11511:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "32", + "id": 6686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11521:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "11511:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6688, + "nodeType": "ExpressionStatement", + "src": "11511:11:37" + }, + { + "expression": { + "id": 6691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6689, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11540:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "32", + "id": 6690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11550:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "11540:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6692, + "nodeType": "ExpressionStatement", + "src": "11540:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6695, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6581, + "src": "11583:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 6696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11592:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11583:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11596:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11583:14:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6705, + "nodeType": "IfStatement", + "src": "11579:64:37", + "trueBody": { + "id": 6704, + "nodeType": "Block", + "src": "11599:44:37", + "statements": [ + { + "expression": { + "id": 6702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6700, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11617:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 6701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11627:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11617:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6703, + "nodeType": "ExpressionStatement", + "src": "11617:11:37" + } + ] + } + } + ] + }, + { + "expression": { + "id": 6707, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6587, + "src": "11669:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6585, + "id": 6708, + "nodeType": "Return", + "src": "11662:13:37" + } + ] + }, + "documentation": { + "id": 6579, + "nodeType": "StructuredDocumentation", + "src": "10575:119:37", + "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 6710, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "10708:4:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6581, + "mutability": "mutable", + "name": "value", + "nameLocation": "10721:5:37", + "nodeType": "VariableDeclaration", + "scope": 6710, + "src": "10713:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6580, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10713:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10712:15:37" + }, + "returnParameters": { + "id": 6585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6584, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6710, + "src": "10751:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10751:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10750:9:37" + }, + "scope": 7054, + "src": "10699:983:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6744, + "nodeType": "Block", + "src": "11915:168:37", + "statements": [ + { + "id": 6743, + "nodeType": "UncheckedBlock", + "src": "11925:152:37", + "statements": [ + { + "assignments": [ + 6722 + ], + "declarations": [ + { + "constant": false, + "id": 6722, + "mutability": "mutable", + "name": "result", + "nameLocation": "11957:6:37", + "nodeType": "VariableDeclaration", + "scope": 6743, + "src": "11949:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11949:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6726, + "initialValue": { + "arguments": [ + { + "id": 6724, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6713, + "src": "11971:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6723, + "name": "log2", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6710, + 6745 + ], + "referencedDeclaration": 6710, + "src": "11966:4:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 6725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11966:11:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11949:28:37" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6727, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "11998:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6729, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6716, + "src": "12025:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 6728, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "12008:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6011_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 6730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12008:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 6731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12038:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 6732, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "12043:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12038:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6734, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6713, + "src": "12052:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12038:19:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12008:49:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 6738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12064:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 6739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "12008:57:37", + "trueExpression": { + "hexValue": "31", + "id": 6737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12060:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 6740, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12007:59:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "11998:68:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6720, + "id": 6742, + "nodeType": "Return", + "src": "11991:75:37" + } + ] + } + ] + }, + "documentation": { + "id": 6711, + "nodeType": "StructuredDocumentation", + "src": "11688:142:37", + "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 6745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "11844:4:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6713, + "mutability": "mutable", + "name": "value", + "nameLocation": "11857:5:37", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "11849:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11849:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6716, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "11873:8:37", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "11864:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 6715, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6714, + "name": "Rounding", + "nameLocations": [ + "11864:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "11864:8:37" + }, + "referencedDeclaration": 6011, + "src": "11864:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "11848:34:37" + }, + "returnParameters": { + "id": 6720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6719, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6745, + "src": "11906:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11906:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11905:9:37" + }, + "scope": 7054, + "src": "11835:248:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6873, + "nodeType": "Block", + "src": "12276:854:37", + "statements": [ + { + "assignments": [ + 6754 + ], + "declarations": [ + { + "constant": false, + "id": 6754, + "mutability": "mutable", + "name": "result", + "nameLocation": "12294:6:37", + "nodeType": "VariableDeclaration", + "scope": 6873, + "src": "12286:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6753, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12286:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6756, + "initialValue": { + "hexValue": "30", + "id": 6755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12303:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12286:18:37" + }, + { + "id": 6870, + "nodeType": "UncheckedBlock", + "src": "12314:787:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6757, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12342:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 6760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12351:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 6759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12357:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "12351:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "12342:17:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6773, + "nodeType": "IfStatement", + "src": "12338:103:37", + "trueBody": { + "id": 6772, + "nodeType": "Block", + "src": "12361:80:37", + "statements": [ + { + "expression": { + "id": 6766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6762, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12379:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 6765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12388:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 6764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12394:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "12388:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "12379:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6767, + "nodeType": "ExpressionStatement", + "src": "12379:17:37" + }, + { + "expression": { + "id": 6770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6768, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12414:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3634", + "id": 6769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12424:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "12414:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6771, + "nodeType": "ExpressionStatement", + "src": "12414:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6774, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12458:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 6777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12467:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 6776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12473:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "12467:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "12458:17:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6790, + "nodeType": "IfStatement", + "src": "12454:103:37", + "trueBody": { + "id": 6789, + "nodeType": "Block", + "src": "12477:80:37", + "statements": [ + { + "expression": { + "id": 6783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6779, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12495:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 6782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12504:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 6781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12510:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "12504:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "12495:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6784, + "nodeType": "ExpressionStatement", + "src": "12495:17:37" + }, + { + "expression": { + "id": 6787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6785, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12530:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3332", + "id": 6786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12540:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "12530:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6788, + "nodeType": "ExpressionStatement", + "src": "12530:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6791, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12574:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 6794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12583:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 6793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12589:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "12583:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "12574:17:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6807, + "nodeType": "IfStatement", + "src": "12570:103:37", + "trueBody": { + "id": 6806, + "nodeType": "Block", + "src": "12593:80:37", + "statements": [ + { + "expression": { + "id": 6800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6796, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12611:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 6799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12620:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 6798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12626:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "12620:8:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "12611:17:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6801, + "nodeType": "ExpressionStatement", + "src": "12611:17:37" + }, + { + "expression": { + "id": 6804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6802, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12646:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3136", + "id": 6803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12656:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "12646:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6805, + "nodeType": "ExpressionStatement", + "src": "12646:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6808, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12690:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 6811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12699:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 6810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12705:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "12699:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "12690:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6824, + "nodeType": "IfStatement", + "src": "12686:100:37", + "trueBody": { + "id": 6823, + "nodeType": "Block", + "src": "12708:78:37", + "statements": [ + { + "expression": { + "id": 6817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6813, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12726:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 6816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12735:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 6815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12741:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "12735:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "12726:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6818, + "nodeType": "ExpressionStatement", + "src": "12726:16:37" + }, + { + "expression": { + "id": 6821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6819, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12760:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "38", + "id": 6820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12770:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "12760:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6822, + "nodeType": "ExpressionStatement", + "src": "12760:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6825, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12803:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 6828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12812:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 6827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12818:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "12812:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "12803:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6841, + "nodeType": "IfStatement", + "src": "12799:100:37", + "trueBody": { + "id": 6840, + "nodeType": "Block", + "src": "12821:78:37", + "statements": [ + { + "expression": { + "id": 6834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6830, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12839:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 6833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12848:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 6832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12854:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "12848:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "12839:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6835, + "nodeType": "ExpressionStatement", + "src": "12839:16:37" + }, + { + "expression": { + "id": 6838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6836, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12873:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "34", + "id": 6837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12883:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "12873:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6839, + "nodeType": "ExpressionStatement", + "src": "12873:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6842, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12916:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 6845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12925:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 6844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12931:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12925:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "12916:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6858, + "nodeType": "IfStatement", + "src": "12912:100:37", + "trueBody": { + "id": 6857, + "nodeType": "Block", + "src": "12934:78:37", + "statements": [ + { + "expression": { + "id": 6851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6847, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "12952:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 6850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12961:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 6849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12967:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12961:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "12952:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6852, + "nodeType": "ExpressionStatement", + "src": "12952:16:37" + }, + { + "expression": { + "id": 6855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6853, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "12986:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "32", + "id": 6854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12996:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12986:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6856, + "nodeType": "ExpressionStatement", + "src": "12986:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6859, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6748, + "src": "13029:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "id": 6862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13038:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "31", + "id": 6861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13044:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "13038:7:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + } + }, + "src": "13029:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6869, + "nodeType": "IfStatement", + "src": "13025:66:37", + "trueBody": { + "id": 6868, + "nodeType": "Block", + "src": "13047:44:37", + "statements": [ + { + "expression": { + "id": 6866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6864, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "13065:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 6865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13075:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "13065:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6867, + "nodeType": "ExpressionStatement", + "src": "13065:11:37" + } + ] + } + } + ] + }, + { + "expression": { + "id": 6871, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6754, + "src": "13117:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6752, + "id": 6872, + "nodeType": "Return", + "src": "13110:13:37" + } + ] + }, + "documentation": { + "id": 6746, + "nodeType": "StructuredDocumentation", + "src": "12089:120:37", + "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 6874, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "12223:5:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6748, + "mutability": "mutable", + "name": "value", + "nameLocation": "12237:5:37", + "nodeType": "VariableDeclaration", + "scope": 6874, + "src": "12229:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12229:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12228:15:37" + }, + "returnParameters": { + "id": 6752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6751, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6874, + "src": "12267:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12267:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12266:9:37" + }, + "scope": 7054, + "src": "12214:916:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6908, + "nodeType": "Block", + "src": "13365:170:37", + "statements": [ + { + "id": 6907, + "nodeType": "UncheckedBlock", + "src": "13375:154:37", + "statements": [ + { + "assignments": [ + 6886 + ], + "declarations": [ + { + "constant": false, + "id": 6886, + "mutability": "mutable", + "name": "result", + "nameLocation": "13407:6:37", + "nodeType": "VariableDeclaration", + "scope": 6907, + "src": "13399:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13399:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6890, + "initialValue": { + "arguments": [ + { + "id": 6888, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6877, + "src": "13422:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6887, + "name": "log10", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6874, + 6909 + ], + "referencedDeclaration": 6874, + "src": "13416:5:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 6889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13416:12:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13399:29:37" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6891, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6886, + "src": "13449:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6893, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6880, + "src": "13476:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 6892, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "13459:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6011_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 6894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13459:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 6895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13489:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 6896, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6886, + "src": "13495:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13489:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6898, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6877, + "src": "13504:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13489:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13459:50:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 6902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13516:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 6903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "13459:58:37", + "trueExpression": { + "hexValue": "31", + "id": 6901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13512:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 6904, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13458:60:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "13449:69:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6884, + "id": 6906, + "nodeType": "Return", + "src": "13442:76:37" + } + ] + } + ] + }, + "documentation": { + "id": 6875, + "nodeType": "StructuredDocumentation", + "src": "13136:143:37", + "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 6909, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "13293:5:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6877, + "mutability": "mutable", + "name": "value", + "nameLocation": "13307:5:37", + "nodeType": "VariableDeclaration", + "scope": 6909, + "src": "13299:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13299:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6880, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "13323:8:37", + "nodeType": "VariableDeclaration", + "scope": 6909, + "src": "13314:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 6879, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6878, + "name": "Rounding", + "nameLocations": [ + "13314:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "13314:8:37" + }, + "referencedDeclaration": 6011, + "src": "13314:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "13298:34:37" + }, + "returnParameters": { + "id": 6884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6883, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6909, + "src": "13356:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13356:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13355:9:37" + }, + "scope": 7054, + "src": "13284:251:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6995, + "nodeType": "Block", + "src": "13855:600:37", + "statements": [ + { + "assignments": [ + 6918 + ], + "declarations": [ + { + "constant": false, + "id": 6918, + "mutability": "mutable", + "name": "result", + "nameLocation": "13873:6:37", + "nodeType": "VariableDeclaration", + "scope": 6995, + "src": "13865:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6917, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13865:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6920, + "initialValue": { + "hexValue": "30", + "id": 6919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13882:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13865:18:37" + }, + { + "id": 6992, + "nodeType": "UncheckedBlock", + "src": "13893:533:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6921, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "13921:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 6922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13930:3:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "13921:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13936:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13921:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6935, + "nodeType": "IfStatement", + "src": "13917:98:37", + "trueBody": { + "id": 6934, + "nodeType": "Block", + "src": "13939:76:37", + "statements": [ + { + "expression": { + "id": 6928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6926, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "13957:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "313238", + "id": 6927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13967:3:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "13957:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6929, + "nodeType": "ExpressionStatement", + "src": "13957:13:37" + }, + { + "expression": { + "id": 6932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6930, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "13988:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3136", + "id": 6931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13998:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "13988:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6933, + "nodeType": "ExpressionStatement", + "src": "13988:12:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6936, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14032:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 6937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14041:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "14032:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14046:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14032:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6950, + "nodeType": "IfStatement", + "src": "14028:95:37", + "trueBody": { + "id": 6949, + "nodeType": "Block", + "src": "14049:74:37", + "statements": [ + { + "expression": { + "id": 6943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14067:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3634", + "id": 6942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14077:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "14067:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6944, + "nodeType": "ExpressionStatement", + "src": "14067:12:37" + }, + { + "expression": { + "id": 6947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6945, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "14097:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "38", + "id": 6946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14107:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "14097:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6948, + "nodeType": "ExpressionStatement", + "src": "14097:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6951, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14140:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 6952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14149:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14140:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14154:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14140:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6965, + "nodeType": "IfStatement", + "src": "14136:95:37", + "trueBody": { + "id": 6964, + "nodeType": "Block", + "src": "14157:74:37", + "statements": [ + { + "expression": { + "id": 6958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6956, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14175:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3332", + "id": 6957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14185:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14175:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6959, + "nodeType": "ExpressionStatement", + "src": "14175:12:37" + }, + { + "expression": { + "id": 6962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6960, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "14205:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "34", + "id": 6961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14215:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "14205:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6963, + "nodeType": "ExpressionStatement", + "src": "14205:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6966, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14248:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 6967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14257:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "14248:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14262:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14248:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6980, + "nodeType": "IfStatement", + "src": "14244:95:37", + "trueBody": { + "id": 6979, + "nodeType": "Block", + "src": "14265:74:37", + "statements": [ + { + "expression": { + "id": 6973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6971, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14283:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3136", + "id": 6972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14293:2:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "14283:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6974, + "nodeType": "ExpressionStatement", + "src": "14283:12:37" + }, + { + "expression": { + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6975, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "14313:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "32", + "id": 6976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14323:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "14313:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6978, + "nodeType": "ExpressionStatement", + "src": "14313:11:37" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6981, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6912, + "src": "14356:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 6982, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14365:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "14356:10:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14369:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14356:14:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6991, + "nodeType": "IfStatement", + "src": "14352:64:37", + "trueBody": { + "id": 6990, + "nodeType": "Block", + "src": "14372:44:37", + "statements": [ + { + "expression": { + "id": 6988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6986, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "14390:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 6987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14400:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "14390:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6989, + "nodeType": "ExpressionStatement", + "src": "14390:11:37" + } + ] + } + } + ] + }, + { + "expression": { + "id": 6993, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6918, + "src": "14442:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6916, + "id": 6994, + "nodeType": "Return", + "src": "14435:13:37" + } + ] + }, + "documentation": { + "id": 6910, + "nodeType": "StructuredDocumentation", + "src": "13541:246:37", + "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string." + }, + "id": 6996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "13801:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6912, + "mutability": "mutable", + "name": "value", + "nameLocation": "13816:5:37", + "nodeType": "VariableDeclaration", + "scope": 6996, + "src": "13808:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13808:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13807:15:37" + }, + "returnParameters": { + "id": 6916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6915, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6996, + "src": "13846:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13846:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13845:9:37" + }, + "scope": 7054, + "src": "13792:663:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7033, + "nodeType": "Block", + "src": "14692:177:37", + "statements": [ + { + "id": 7032, + "nodeType": "UncheckedBlock", + "src": "14702:161:37", + "statements": [ + { + "assignments": [ + 7008 + ], + "declarations": [ + { + "constant": false, + "id": 7008, + "mutability": "mutable", + "name": "result", + "nameLocation": "14734:6:37", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "14726:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14726:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7012, + "initialValue": { + "arguments": [ + { + "id": 7010, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6999, + "src": "14750:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7009, + "name": "log256", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6996, + 7034 + ], + "referencedDeclaration": 6996, + "src": "14743:6:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14743:13:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14726:30:37" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7013, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7008, + "src": "14777:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7015, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7002, + "src": "14804:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 7014, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "14787:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6011_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 7016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14787:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14817:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7018, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7008, + "src": "14823:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "33", + "id": 7019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14833:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "14823:11:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7021, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14822:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14817:18:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7023, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6999, + "src": "14838:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14817:26:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14787:56:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 7027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14850:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 7028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "14787:64:37", + "trueExpression": { + "hexValue": "31", + "id": 7026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14846:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 7029, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14786:66:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "14777:75:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7006, + "id": 7031, + "nodeType": "Return", + "src": "14770:82:37" + } + ] + } + ] + }, + "documentation": { + "id": 6997, + "nodeType": "StructuredDocumentation", + "src": "14461:144:37", + "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 7034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "14619:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6999, + "mutability": "mutable", + "name": "value", + "nameLocation": "14634:5:37", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "14626:13:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14626:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7002, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "14650:8:37", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "14641:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7001, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7000, + "name": "Rounding", + "nameLocations": [ + "14641:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "14641:8:37" + }, + "referencedDeclaration": 6011, + "src": "14641:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "14625:34:37" + }, + "returnParameters": { + "id": 7006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7005, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "14683:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14683:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14682:9:37" + }, + "scope": 7054, + "src": "14610:259:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7052, + "nodeType": "Block", + "src": "15067:48:37", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 7050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 7048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7045, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "15090:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + ], + "id": 7044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15084:5:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 7043, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "15084:5:37", + "typeDescriptions": {} + } + }, + "id": 7046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15084:15:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 7047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15102:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "15084:19:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 7049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15107:1:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "15084:24:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7042, + "id": 7051, + "nodeType": "Return", + "src": "15077:31:37" + } + ] + }, + "documentation": { + "id": 7035, + "nodeType": "StructuredDocumentation", + "src": "14875:113:37", + "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers." + }, + "id": 7053, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unsignedRoundsUp", + "nameLocation": "15002:16:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7038, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "15028:8:37", + "nodeType": "VariableDeclaration", + "scope": 7053, + "src": "15019:17:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7037, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7036, + "name": "Rounding", + "nameLocations": [ + "15019:8:37" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6011, + "src": "15019:8:37" + }, + "referencedDeclaration": 6011, + "src": "15019:8:37", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6011", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "15018:19:37" + }, + "returnParameters": { + "id": 7042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7053, + "src": "15061:4:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7040, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15061:4:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15060:6:37" + }, + "scope": 7054, + "src": "14993:122:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7055, + "src": "203:14914:37", + "usedErrors": [ + 6006 + ], + "usedEvents": [] + } + ], + "src": "103:15015:37" + }, + "id": 37 + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "exportedSymbols": { + "SignedMath": [ + 7159 + ] + }, + "id": 7160, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7056, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:38" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SignedMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 7057, + "nodeType": "StructuredDocumentation", + "src": "135:80:38", + "text": " @dev Standard signed math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 7159, + "linearizedBaseContracts": [ + 7159 + ], + "name": "SignedMath", + "nameLocation": "224:10:38", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7074, + "nodeType": "Block", + "src": "376:37:38", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7067, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7060, + "src": "393:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7068, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7062, + "src": "397:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "393:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 7071, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7062, + "src": "405:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "393:13:38", + "trueExpression": { + "id": 7070, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7060, + "src": "401:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 7066, + "id": 7073, + "nodeType": "Return", + "src": "386:20:38" + } + ] + }, + "documentation": { + "id": 7058, + "nodeType": "StructuredDocumentation", + "src": "241:66:38", + "text": " @dev Returns the largest of two signed numbers." + }, + "id": 7075, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "321:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7060, + "mutability": "mutable", + "name": "a", + "nameLocation": "332:1:38", + "nodeType": "VariableDeclaration", + "scope": 7075, + "src": "325:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7059, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "325:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7062, + "mutability": "mutable", + "name": "b", + "nameLocation": "342:1:38", + "nodeType": "VariableDeclaration", + "scope": 7075, + "src": "335:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7061, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "335:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "324:20:38" + }, + "returnParameters": { + "id": 7066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7065, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7075, + "src": "368:6:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7064, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "368:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "367:8:38" + }, + "scope": 7159, + "src": "312:101:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7092, + "nodeType": "Block", + "src": "555:37:38", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7085, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7078, + "src": "572:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7086, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7080, + "src": "576:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "572:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 7089, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7080, + "src": "584:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 7090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "572:13:38", + "trueExpression": { + "id": 7088, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7078, + "src": "580:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 7084, + "id": 7091, + "nodeType": "Return", + "src": "565:20:38" + } + ] + }, + "documentation": { + "id": 7076, + "nodeType": "StructuredDocumentation", + "src": "419:67:38", + "text": " @dev Returns the smallest of two signed numbers." + }, + "id": 7093, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "500:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7078, + "mutability": "mutable", + "name": "a", + "nameLocation": "511:1:38", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "504:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7077, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "504:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7080, + "mutability": "mutable", + "name": "b", + "nameLocation": "521:1:38", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "514:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7079, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "514:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "503:20:38" + }, + "returnParameters": { + "id": 7084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7083, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7093, + "src": "547:6:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7082, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "547:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "546:8:38" + }, + "scope": 7159, + "src": "491:101:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7136, + "nodeType": "Block", + "src": "797:162:38", + "statements": [ + { + "assignments": [ + 7104 + ], + "declarations": [ + { + "constant": false, + "id": 7104, + "mutability": "mutable", + "name": "x", + "nameLocation": "866:1:38", + "nodeType": "VariableDeclaration", + "scope": 7136, + "src": "859:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7103, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "859:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 7117, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7105, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7096, + "src": "871:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 7106, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "875:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "871:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 7108, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "870:7:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7109, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7096, + "src": "882:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 7110, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "886:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "882:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 7112, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "881:7:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "892:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "881:12:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 7115, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "880:14:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "870:24:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "859:35:38" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7118, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7104, + "src": "911:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7123, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7104, + "src": "931:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 7122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "923:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "923:7:38", + "typeDescriptions": {} + } + }, + "id": 7124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "923:10:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 7125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "937:3:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "923:17:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "916:6:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 7119, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "916:6:38", + "typeDescriptions": {} + } + }, + "id": 7127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "916:25:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7128, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7096, + "src": "945:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 7129, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7098, + "src": "949:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "945:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 7131, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "944:7:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "916:35:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 7133, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "915:37:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "911:41:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 7102, + "id": 7135, + "nodeType": "Return", + "src": "904:48:38" + } + ] + }, + "documentation": { + "id": 7094, + "nodeType": "StructuredDocumentation", + "src": "598:126:38", + "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero." + }, + "id": 7137, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "738:7:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7096, + "mutability": "mutable", + "name": "a", + "nameLocation": "753:1:38", + "nodeType": "VariableDeclaration", + "scope": 7137, + "src": "746:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7095, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "746:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7098, + "mutability": "mutable", + "name": "b", + "nameLocation": "763:1:38", + "nodeType": "VariableDeclaration", + "scope": 7137, + "src": "756:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7097, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "756:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "745:20:38" + }, + "returnParameters": { + "id": 7102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7101, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7137, + "src": "789:6:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7100, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "789:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "788:8:38" + }, + "scope": 7159, + "src": "729:230:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7157, + "nodeType": "Block", + "src": "1103:158:38", + "statements": [ + { + "id": 7156, + "nodeType": "UncheckedBlock", + "src": "1113:142:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 7149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7147, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7140, + "src": "1228:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 7148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1233:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1228:6:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 7152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1241:2:38", + "subExpression": { + "id": 7151, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7140, + "src": "1242:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 7153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1228:15:38", + "trueExpression": { + "id": 7150, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7140, + "src": "1237:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 7146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1220:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1220:7:38", + "typeDescriptions": {} + } + }, + "id": 7154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1220:24:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7144, + "id": 7155, + "nodeType": "Return", + "src": "1213:31:38" + } + ] + } + ] + }, + "documentation": { + "id": 7138, + "nodeType": "StructuredDocumentation", + "src": "965:78:38", + "text": " @dev Returns the absolute unsigned value of a signed value." + }, + "id": 7158, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "abs", + "nameLocation": "1057:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7140, + "mutability": "mutable", + "name": "n", + "nameLocation": "1068:1:38", + "nodeType": "VariableDeclaration", + "scope": 7158, + "src": "1061:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 7139, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1061:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1060:10:38" + }, + "returnParameters": { + "id": 7144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7143, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7158, + "src": "1094:7:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1094:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1093:9:38" + }, + "scope": 7159, + "src": "1048:213:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7160, + "src": "216:1047:38", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "109:1155:38" + }, + "id": 38 + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 7772 + ] + }, + "id": 7773, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7161, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "205:24:39" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 7162, + "nodeType": "StructuredDocumentation", + "src": "231:1098:39", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ====" + }, + "fullyImplemented": true, + "id": 7772, + "linearizedBaseContracts": [ + 7772 + ], + "name": "EnumerableSet", + "nameLocation": "1338:13:39", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 7170, + "members": [ + { + "constant": false, + "id": 7165, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1862:7:39", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "1852:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7163, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1852:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7164, + "nodeType": "ArrayTypeName", + "src": "1852:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7169, + "mutability": "mutable", + "name": "_positions", + "nameLocation": "2054:10:39", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "2020:44:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 7168, + "keyName": "value", + "keyNameLocation": "2036:5:39", + "keyType": { + "id": 7166, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2028:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2020:33:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 7167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2045:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1805:3:39", + "nodeType": "StructDefinition", + "scope": 7772, + "src": "1798:273:39", + "visibility": "public" + }, + { + "body": { + "id": 7211, + "nodeType": "Block", + "src": "2310:337:39", + "statements": [ + { + "condition": { + "id": 7185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2324:22:39", + "subExpression": { + "arguments": [ + { + "id": 7182, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7174, + "src": "2335:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 7183, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7176, + "src": "2340:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7181, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7315, + "src": "2325:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 7184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2325:21:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 7209, + "nodeType": "Block", + "src": "2604:37:39", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 7207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2625:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7180, + "id": 7208, + "nodeType": "Return", + "src": "2618:12:39" + } + ] + }, + "id": 7210, + "nodeType": "IfStatement", + "src": "2320:321:39", + "trueBody": { + "id": 7206, + "nodeType": "Block", + "src": "2348:250:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7191, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7176, + "src": "2379:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 7186, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7174, + "src": "2362:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2366:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "2362:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2374:4:39", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2362:16:39", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 7192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2362:23:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7193, + "nodeType": "ExpressionStatement", + "src": "2362:23:39" + }, + { + "expression": { + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7194, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7174, + "src": "2520:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2524:10:39", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "2520:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 7198, + "indexExpression": { + "id": 7196, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7176, + "src": "2535:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2520:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 7199, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7174, + "src": "2544:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2548:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "2544:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2556:6:39", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2544:18:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2520:42:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7203, + "nodeType": "ExpressionStatement", + "src": "2520:42:39" + }, + { + "expression": { + "hexValue": "74727565", + "id": 7204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2583:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7180, + "id": 7205, + "nodeType": "Return", + "src": "2576:11:39" + } + ] + } + } + ] + }, + "documentation": { + "id": 7171, + "nodeType": "StructuredDocumentation", + "src": "2077:159:39", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 7212, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "2250:4:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7174, + "mutability": "mutable", + "name": "set", + "nameLocation": "2267:3:39", + "nodeType": "VariableDeclaration", + "scope": 7212, + "src": "2255:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7173, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7172, + "name": "Set", + "nameLocations": [ + "2255:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "2255:3:39" + }, + "referencedDeclaration": 7170, + "src": "2255:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7176, + "mutability": "mutable", + "name": "value", + "nameLocation": "2280:5:39", + "nodeType": "VariableDeclaration", + "scope": 7212, + "src": "2272:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7175, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2272:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2254:32:39" + }, + "returnParameters": { + "id": 7180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7179, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7212, + "src": "2304:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7178, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2304:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2303:6:39" + }, + "scope": 7772, + "src": "2241:406:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7295, + "nodeType": "Block", + "src": "2887:1296:39", + "statements": [ + { + "assignments": [ + 7224 + ], + "declarations": [ + { + "constant": false, + "id": 7224, + "mutability": "mutable", + "name": "position", + "nameLocation": "2999:8:39", + "nodeType": "VariableDeclaration", + "scope": 7295, + "src": "2991:16:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2991:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7229, + "initialValue": { + "baseExpression": { + "expression": { + "id": 7225, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3010:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7226, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3014:10:39", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "3010:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 7228, + "indexExpression": { + "id": 7227, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7218, + "src": "3025:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3010:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2991:40:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7230, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7224, + "src": "3046:8:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 7231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3058:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3046:13:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 7293, + "nodeType": "Block", + "src": "4140:37:39", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 7291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4161:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7222, + "id": 7292, + "nodeType": "Return", + "src": "4154:12:39" + } + ] + }, + "id": 7294, + "nodeType": "IfStatement", + "src": "3042:1135:39", + "trueBody": { + "id": 7290, + "nodeType": "Block", + "src": "3061:1073:39", + "statements": [ + { + "assignments": [ + 7234 + ], + "declarations": [ + { + "constant": false, + "id": 7234, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "3421:10:39", + "nodeType": "VariableDeclaration", + "scope": 7290, + "src": "3413:18:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3413:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7238, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7235, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7224, + "src": "3434:8:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3445:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3434:12:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3413:33:39" + }, + { + "assignments": [ + 7240 + ], + "declarations": [ + { + "constant": false, + "id": 7240, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "3468:9:39", + "nodeType": "VariableDeclaration", + "scope": 7290, + "src": "3460:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3460:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7246, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 7241, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3480:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7242, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3484:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "3480:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3492:6:39", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3480:18:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3501:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3480:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3460:42:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7247, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7234, + "src": "3521:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 7248, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7240, + "src": "3535:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3521:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7274, + "nodeType": "IfStatement", + "src": "3517:378:39", + "trueBody": { + "id": 7273, + "nodeType": "Block", + "src": "3546:349:39", + "statements": [ + { + "assignments": [ + 7251 + ], + "declarations": [ + { + "constant": false, + "id": 7251, + "mutability": "mutable", + "name": "lastValue", + "nameLocation": "3572:9:39", + "nodeType": "VariableDeclaration", + "scope": 7273, + "src": "3564:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3564:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 7256, + "initialValue": { + "baseExpression": { + "expression": { + "id": 7252, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3584:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3588:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "3584:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7255, + "indexExpression": { + "id": 7254, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7240, + "src": "3596:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3584:22:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3564:42:39" + }, + { + "expression": { + "id": 7263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7257, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3705:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7260, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "3705:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7261, + "indexExpression": { + "id": 7259, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7234, + "src": "3717:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3705:23:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7262, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7251, + "src": "3731:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3705:35:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7264, + "nodeType": "ExpressionStatement", + "src": "3705:35:39" + }, + { + "expression": { + "id": 7271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7265, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3844:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7268, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3848:10:39", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "3844:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 7269, + "indexExpression": { + "id": 7267, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7251, + "src": "3859:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3844:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7270, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7224, + "src": "3872:8:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3844:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7272, + "nodeType": "ExpressionStatement", + "src": "3844:36:39" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 7275, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "3973:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7278, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3977:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "3973:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3985:3:39", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3973:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 7280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3973:17:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7281, + "nodeType": "ExpressionStatement", + "src": "3973:17:39" + }, + { + "expression": { + "id": 7286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4069:28:39", + "subExpression": { + "baseExpression": { + "expression": { + "id": 7282, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7216, + "src": "4076:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7283, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4080:10:39", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "4076:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 7285, + "indexExpression": { + "id": 7284, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7218, + "src": "4091:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4076:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7287, + "nodeType": "ExpressionStatement", + "src": "4069:28:39" + }, + { + "expression": { + "hexValue": "74727565", + "id": 7288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7222, + "id": 7289, + "nodeType": "Return", + "src": "4112:11:39" + } + ] + } + } + ] + }, + "documentation": { + "id": 7213, + "nodeType": "StructuredDocumentation", + "src": "2653:157:39", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 7296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2824:7:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7216, + "mutability": "mutable", + "name": "set", + "nameLocation": "2844:3:39", + "nodeType": "VariableDeclaration", + "scope": 7296, + "src": "2832:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7215, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7214, + "name": "Set", + "nameLocations": [ + "2832:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "2832:3:39" + }, + "referencedDeclaration": 7170, + "src": "2832:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7218, + "mutability": "mutable", + "name": "value", + "nameLocation": "2857:5:39", + "nodeType": "VariableDeclaration", + "scope": 7296, + "src": "2849:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2849:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2831:32:39" + }, + "returnParameters": { + "id": 7222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7221, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7296, + "src": "2881:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7220, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2881:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2880:6:39" + }, + "scope": 7772, + "src": "2815:1368:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7314, + "nodeType": "Block", + "src": "4343:50:39", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 7307, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7300, + "src": "4360:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7308, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4364:10:39", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "4360:14:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 7310, + "indexExpression": { + "id": 7309, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7302, + "src": "4375:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4360:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 7311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4360:26:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7306, + "id": 7313, + "nodeType": "Return", + "src": "4353:33:39" + } + ] + }, + "documentation": { + "id": 7297, + "nodeType": "StructuredDocumentation", + "src": "4189:70:39", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 7315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "4273:9:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7300, + "mutability": "mutable", + "name": "set", + "nameLocation": "4295:3:39", + "nodeType": "VariableDeclaration", + "scope": 7315, + "src": "4283:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7299, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7298, + "name": "Set", + "nameLocations": [ + "4283:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "4283:3:39" + }, + "referencedDeclaration": 7170, + "src": "4283:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7302, + "mutability": "mutable", + "name": "value", + "nameLocation": "4308:5:39", + "nodeType": "VariableDeclaration", + "scope": 7315, + "src": "4300:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7301, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4300:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4282:32:39" + }, + "returnParameters": { + "id": 7306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7305, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7315, + "src": "4337:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7304, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4337:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4336:6:39" + }, + "scope": 7772, + "src": "4264:129:39", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7328, + "nodeType": "Block", + "src": "4539:42:39", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 7324, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "4556:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7325, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4560:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "4556:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4568:6:39", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4556:18:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7323, + "id": 7327, + "nodeType": "Return", + "src": "4549:25:39" + } + ] + }, + "documentation": { + "id": 7316, + "nodeType": "StructuredDocumentation", + "src": "4399:70:39", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 7329, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4483:7:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7319, + "mutability": "mutable", + "name": "set", + "nameLocation": "4503:3:39", + "nodeType": "VariableDeclaration", + "scope": 7329, + "src": "4491:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7318, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7317, + "name": "Set", + "nameLocations": [ + "4491:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "4491:3:39" + }, + "referencedDeclaration": 7170, + "src": "4491:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4490:17:39" + }, + "returnParameters": { + "id": 7323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7322, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7329, + "src": "4530:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4530:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4529:9:39" + }, + "scope": 7772, + "src": "4474:107:39", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7345, + "nodeType": "Block", + "src": "4999:42:39", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 7340, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7333, + "src": "5016:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "5016:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 7343, + "indexExpression": { + "id": 7342, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7335, + "src": "5028:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5016:18:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7339, + "id": 7344, + "nodeType": "Return", + "src": "5009:25:39" + } + ] + }, + "documentation": { + "id": 7330, + "nodeType": "StructuredDocumentation", + "src": "4587:331:39", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 7346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4932:3:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7333, + "mutability": "mutable", + "name": "set", + "nameLocation": "4948:3:39", + "nodeType": "VariableDeclaration", + "scope": 7346, + "src": "4936:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7332, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7331, + "name": "Set", + "nameLocations": [ + "4936:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "4936:3:39" + }, + "referencedDeclaration": 7170, + "src": "4936:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7335, + "mutability": "mutable", + "name": "index", + "nameLocation": "4961:5:39", + "nodeType": "VariableDeclaration", + "scope": 7346, + "src": "4953:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4953:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4935:32:39" + }, + "returnParameters": { + "id": 7339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7338, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7346, + "src": "4990:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7337, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4990:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4989:9:39" + }, + "scope": 7772, + "src": "4923:118:39", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7359, + "nodeType": "Block", + "src": "5655:35:39", + "statements": [ + { + "expression": { + "expression": { + "id": 7356, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7350, + "src": "5672:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 7357, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5676:7:39", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7165, + "src": "5672:11:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "functionReturnParameters": 7355, + "id": 7358, + "nodeType": "Return", + "src": "5665:18:39" + } + ] + }, + "documentation": { + "id": 7347, + "nodeType": "StructuredDocumentation", + "src": "5047:529:39", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 7360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_values", + "nameLocation": "5590:7:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7350, + "mutability": "mutable", + "name": "set", + "nameLocation": "5610:3:39", + "nodeType": "VariableDeclaration", + "scope": 7360, + "src": "5598:15:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7349, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7348, + "name": "Set", + "nameLocations": [ + "5598:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "5598:3:39" + }, + "referencedDeclaration": 7170, + "src": "5598:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "5597:17:39" + }, + "returnParameters": { + "id": 7355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7354, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7360, + "src": "5637:16:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7352, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5637:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7353, + "nodeType": "ArrayTypeName", + "src": "5637:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5636:18:39" + }, + "scope": 7772, + "src": "5581:109:39", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 7364, + "members": [ + { + "constant": false, + "id": 7363, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "5747:6:39", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "5743:10:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7362, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7361, + "name": "Set", + "nameLocations": [ + "5743:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "5743:3:39" + }, + "referencedDeclaration": 7170, + "src": "5743:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nameLocation": "5722:10:39", + "nodeType": "StructDefinition", + "scope": 7772, + "src": "5715:45:39", + "visibility": "public" + }, + { + "body": { + "id": 7381, + "nodeType": "Block", + "src": "6006:47:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7376, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7368, + "src": "6028:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6032:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "6028:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7378, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7370, + "src": "6040:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7375, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7212, + "src": "6023:4:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6023:23:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7374, + "id": 7380, + "nodeType": "Return", + "src": "6016:30:39" + } + ] + }, + "documentation": { + "id": 7365, + "nodeType": "StructuredDocumentation", + "src": "5766:159:39", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 7382, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "5939:3:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7368, + "mutability": "mutable", + "name": "set", + "nameLocation": "5962:3:39", + "nodeType": "VariableDeclaration", + "scope": 7382, + "src": "5943:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7367, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7366, + "name": "Bytes32Set", + "nameLocations": [ + "5943:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "5943:10:39" + }, + "referencedDeclaration": 7364, + "src": "5943:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7370, + "mutability": "mutable", + "name": "value", + "nameLocation": "5975:5:39", + "nodeType": "VariableDeclaration", + "scope": 7382, + "src": "5967:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7369, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5967:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5942:39:39" + }, + "returnParameters": { + "id": 7374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7373, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7382, + "src": "6000:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7372, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6000:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5999:6:39" + }, + "scope": 7772, + "src": "5930:123:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7399, + "nodeType": "Block", + "src": "6300:50:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7394, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7386, + "src": "6325:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7395, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6329:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "6325:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7396, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7388, + "src": "6337:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7393, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7296, + "src": "6317:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6317:26:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7392, + "id": 7398, + "nodeType": "Return", + "src": "6310:33:39" + } + ] + }, + "documentation": { + "id": 7383, + "nodeType": "StructuredDocumentation", + "src": "6059:157:39", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 7400, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6230:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7386, + "mutability": "mutable", + "name": "set", + "nameLocation": "6256:3:39", + "nodeType": "VariableDeclaration", + "scope": 7400, + "src": "6237:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7385, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7384, + "name": "Bytes32Set", + "nameLocations": [ + "6237:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "6237:10:39" + }, + "referencedDeclaration": 7364, + "src": "6237:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7388, + "mutability": "mutable", + "name": "value", + "nameLocation": "6269:5:39", + "nodeType": "VariableDeclaration", + "scope": 7400, + "src": "6261:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7387, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6261:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6236:39:39" + }, + "returnParameters": { + "id": 7392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7391, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7400, + "src": "6294:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7390, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6294:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6293:6:39" + }, + "scope": 7772, + "src": "6221:129:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7417, + "nodeType": "Block", + "src": "6517:52:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7412, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7404, + "src": "6544:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7413, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6548:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "6544:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7414, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7406, + "src": "6556:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7411, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7315, + "src": "6534:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 7415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6534:28:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7410, + "id": 7416, + "nodeType": "Return", + "src": "6527:35:39" + } + ] + }, + "documentation": { + "id": 7401, + "nodeType": "StructuredDocumentation", + "src": "6356:70:39", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 7418, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6440:8:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7404, + "mutability": "mutable", + "name": "set", + "nameLocation": "6468:3:39", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "6449:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7403, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7402, + "name": "Bytes32Set", + "nameLocations": [ + "6449:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "6449:10:39" + }, + "referencedDeclaration": 7364, + "src": "6449:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7406, + "mutability": "mutable", + "name": "value", + "nameLocation": "6481:5:39", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "6473:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7405, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6473:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6448:39:39" + }, + "returnParameters": { + "id": 7410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7409, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "6511:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6511:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6510:6:39" + }, + "scope": 7772, + "src": "6431:138:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7432, + "nodeType": "Block", + "src": "6722:43:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7428, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7422, + "src": "6747:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6751:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "6747:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7427, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7329, + "src": "6739:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 7430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6739:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7426, + "id": 7431, + "nodeType": "Return", + "src": "6732:26:39" + } + ] + }, + "documentation": { + "id": 7419, + "nodeType": "StructuredDocumentation", + "src": "6575:70:39", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 7433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "6659:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7422, + "mutability": "mutable", + "name": "set", + "nameLocation": "6685:3:39", + "nodeType": "VariableDeclaration", + "scope": 7433, + "src": "6666:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7421, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7420, + "name": "Bytes32Set", + "nameLocations": [ + "6666:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "6666:10:39" + }, + "referencedDeclaration": 7364, + "src": "6666:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "6665:24:39" + }, + "returnParameters": { + "id": 7426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7425, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7433, + "src": "6713:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6713:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6712:9:39" + }, + "scope": 7772, + "src": "6650:115:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7450, + "nodeType": "Block", + "src": "7190:46:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7445, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7437, + "src": "7211:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7215:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "7211:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7447, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7439, + "src": "7223:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7444, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7346, + "src": "7207:3:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 7448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7207:22:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7443, + "id": 7449, + "nodeType": "Return", + "src": "7200:29:39" + } + ] + }, + "documentation": { + "id": 7434, + "nodeType": "StructuredDocumentation", + "src": "6771:331:39", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 7451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7116:2:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7437, + "mutability": "mutable", + "name": "set", + "nameLocation": "7138:3:39", + "nodeType": "VariableDeclaration", + "scope": 7451, + "src": "7119:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7436, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7435, + "name": "Bytes32Set", + "nameLocations": [ + "7119:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "7119:10:39" + }, + "referencedDeclaration": 7364, + "src": "7119:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7439, + "mutability": "mutable", + "name": "index", + "nameLocation": "7151:5:39", + "nodeType": "VariableDeclaration", + "scope": 7451, + "src": "7143:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7143:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7118:39:39" + }, + "returnParameters": { + "id": 7443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7442, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7451, + "src": "7181:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7441, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7181:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7180:9:39" + }, + "scope": 7772, + "src": "7107:129:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7480, + "nodeType": "Block", + "src": "7857:219:39", + "statements": [ + { + "assignments": [ + 7465 + ], + "declarations": [ + { + "constant": false, + "id": 7465, + "mutability": "mutable", + "name": "store", + "nameLocation": "7884:5:39", + "nodeType": "VariableDeclaration", + "scope": 7480, + "src": "7867:22:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7463, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7867:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7464, + "nodeType": "ArrayTypeName", + "src": "7867:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 7470, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7467, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7455, + "src": "7900:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 7468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7904:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7363, + "src": "7900:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7466, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7360, + "src": "7892:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 7469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7892:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7867:44:39" + }, + { + "assignments": [ + 7475 + ], + "declarations": [ + { + "constant": false, + "id": 7475, + "mutability": "mutable", + "name": "result", + "nameLocation": "7938:6:39", + "nodeType": "VariableDeclaration", + "scope": 7480, + "src": "7921:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7921:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7474, + "nodeType": "ArrayTypeName", + "src": "7921:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 7476, + "nodeType": "VariableDeclarationStatement", + "src": "7921:23:39" + }, + { + "AST": { + "nativeSrc": "8007:39:39", + "nodeType": "YulBlock", + "src": "8007:39:39", + "statements": [ + { + "nativeSrc": "8021:15:39", + "nodeType": "YulAssignment", + "src": "8021:15:39", + "value": { + "name": "store", + "nativeSrc": "8031:5:39", + "nodeType": "YulIdentifier", + "src": "8031:5:39" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "8021:6:39", + "nodeType": "YulIdentifier", + "src": "8021:6:39" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7475, + "isOffset": false, + "isSlot": false, + "src": "8021:6:39", + "valueSize": 1 + }, + { + "declaration": 7465, + "isOffset": false, + "isSlot": false, + "src": "8031:5:39", + "valueSize": 1 + } + ], + "id": 7477, + "nodeType": "InlineAssembly", + "src": "7998:48:39" + }, + { + "expression": { + "id": 7478, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7475, + "src": "8063:6:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 7460, + "id": 7479, + "nodeType": "Return", + "src": "8056:13:39" + } + ] + }, + "documentation": { + "id": 7452, + "nodeType": "StructuredDocumentation", + "src": "7242:529:39", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 7481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "7785:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7455, + "mutability": "mutable", + "name": "set", + "nameLocation": "7811:3:39", + "nodeType": "VariableDeclaration", + "scope": 7481, + "src": "7792:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 7454, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7453, + "name": "Bytes32Set", + "nameLocations": [ + "7792:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "7792:10:39" + }, + "referencedDeclaration": 7364, + "src": "7792:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "7791:24:39" + }, + "returnParameters": { + "id": 7460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7459, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7481, + "src": "7839:16:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7457, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7839:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7458, + "nodeType": "ArrayTypeName", + "src": "7839:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "7838:18:39" + }, + "scope": 7772, + "src": "7776:300:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 7485, + "members": [ + { + "constant": false, + "id": 7484, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "8133:6:39", + "nodeType": "VariableDeclaration", + "scope": 7485, + "src": "8129:10:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7483, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7482, + "name": "Set", + "nameLocations": [ + "8129:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "8129:3:39" + }, + "referencedDeclaration": 7170, + "src": "8129:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "8108:10:39", + "nodeType": "StructDefinition", + "scope": 7772, + "src": "8101:45:39", + "visibility": "public" + }, + { + "body": { + "id": 7511, + "nodeType": "Block", + "src": "8392:74:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7497, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7489, + "src": "8414:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8418:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "8414:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 7505, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7491, + "src": "8450:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8442:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7503, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8442:7:39", + "typeDescriptions": {} + } + }, + "id": 7506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8442:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 7502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8434:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8434:7:39", + "typeDescriptions": {} + } + }, + "id": 7507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8434:23:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7499, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8426:7:39", + "typeDescriptions": {} + } + }, + "id": 7508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8426:32:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7496, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7212, + "src": "8409:4:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8409:50:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7495, + "id": 7510, + "nodeType": "Return", + "src": "8402:57:39" + } + ] + }, + "documentation": { + "id": 7486, + "nodeType": "StructuredDocumentation", + "src": "8152:159:39", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 7512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "8325:3:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7489, + "mutability": "mutable", + "name": "set", + "nameLocation": "8348:3:39", + "nodeType": "VariableDeclaration", + "scope": 7512, + "src": "8329:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7487, + "name": "AddressSet", + "nameLocations": [ + "8329:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "8329:10:39" + }, + "referencedDeclaration": 7485, + "src": "8329:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7491, + "mutability": "mutable", + "name": "value", + "nameLocation": "8361:5:39", + "nodeType": "VariableDeclaration", + "scope": 7512, + "src": "8353:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8353:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8328:39:39" + }, + "returnParameters": { + "id": 7495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7494, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7512, + "src": "8386:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8386:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8385:6:39" + }, + "scope": 7772, + "src": "8316:150:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7538, + "nodeType": "Block", + "src": "8713:77:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7524, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7516, + "src": "8738:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8742:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "8738:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 7532, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7518, + "src": "8774:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8766:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7530, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8766:7:39", + "typeDescriptions": {} + } + }, + "id": 7533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8766:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 7529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8758:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8758:7:39", + "typeDescriptions": {} + } + }, + "id": 7534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8758:23:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8750:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7526, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8750:7:39", + "typeDescriptions": {} + } + }, + "id": 7535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8750:32:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7523, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7296, + "src": "8730:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8730:53:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7522, + "id": 7537, + "nodeType": "Return", + "src": "8723:60:39" + } + ] + }, + "documentation": { + "id": 7513, + "nodeType": "StructuredDocumentation", + "src": "8472:157:39", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 7539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "8643:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7516, + "mutability": "mutable", + "name": "set", + "nameLocation": "8669:3:39", + "nodeType": "VariableDeclaration", + "scope": 7539, + "src": "8650:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7514, + "name": "AddressSet", + "nameLocations": [ + "8650:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "8650:10:39" + }, + "referencedDeclaration": 7485, + "src": "8650:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7518, + "mutability": "mutable", + "name": "value", + "nameLocation": "8682:5:39", + "nodeType": "VariableDeclaration", + "scope": 7539, + "src": "8674:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8674:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8649:39:39" + }, + "returnParameters": { + "id": 7522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7521, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7539, + "src": "8707:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7520, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8707:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8706:6:39" + }, + "scope": 7772, + "src": "8634:156:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7565, + "nodeType": "Block", + "src": "8957:79:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7551, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7543, + "src": "8984:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7552, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8988:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "8984:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 7559, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7545, + "src": "9020:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9012:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7557, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9012:7:39", + "typeDescriptions": {} + } + }, + "id": 7560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9012:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 7556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9004:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9004:7:39", + "typeDescriptions": {} + } + }, + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9004:23:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8996:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7553, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8996:7:39", + "typeDescriptions": {} + } + }, + "id": 7562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8996:32:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7550, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7315, + "src": "8974:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 7563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8974:55:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7549, + "id": 7564, + "nodeType": "Return", + "src": "8967:62:39" + } + ] + }, + "documentation": { + "id": 7540, + "nodeType": "StructuredDocumentation", + "src": "8796:70:39", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 7566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "8880:8:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7543, + "mutability": "mutable", + "name": "set", + "nameLocation": "8908:3:39", + "nodeType": "VariableDeclaration", + "scope": 7566, + "src": "8889:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7542, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7541, + "name": "AddressSet", + "nameLocations": [ + "8889:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "8889:10:39" + }, + "referencedDeclaration": 7485, + "src": "8889:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7545, + "mutability": "mutable", + "name": "value", + "nameLocation": "8921:5:39", + "nodeType": "VariableDeclaration", + "scope": 7566, + "src": "8913:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8913:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8888:39:39" + }, + "returnParameters": { + "id": 7549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7548, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7566, + "src": "8951:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7547, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8951:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8950:6:39" + }, + "scope": 7772, + "src": "8871:165:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7580, + "nodeType": "Block", + "src": "9189:43:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7576, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7570, + "src": "9214:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9218:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "9214:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7575, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7329, + "src": "9206:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 7578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9206:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7574, + "id": 7579, + "nodeType": "Return", + "src": "9199:26:39" + } + ] + }, + "documentation": { + "id": 7567, + "nodeType": "StructuredDocumentation", + "src": "9042:70:39", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 7581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "9126:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7570, + "mutability": "mutable", + "name": "set", + "nameLocation": "9152:3:39", + "nodeType": "VariableDeclaration", + "scope": 7581, + "src": "9133:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7569, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7568, + "name": "AddressSet", + "nameLocations": [ + "9133:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "9133:10:39" + }, + "referencedDeclaration": 7485, + "src": "9133:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "9132:24:39" + }, + "returnParameters": { + "id": 7574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7573, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7581, + "src": "9180:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9180:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9179:9:39" + }, + "scope": 7772, + "src": "9117:115:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7607, + "nodeType": "Block", + "src": "9657:73:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 7599, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7585, + "src": "9702:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7600, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9706:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "9702:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7601, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7587, + "src": "9714:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7598, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7346, + "src": "9698:3:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 7602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9698:22:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9690:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7596, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9690:7:39", + "typeDescriptions": {} + } + }, + "id": 7603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9690:31:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9682:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7594, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9682:7:39", + "typeDescriptions": {} + } + }, + "id": 7604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9682:40:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 7593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9674:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9674:7:39", + "typeDescriptions": {} + } + }, + "id": 7605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9674:49:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7591, + "id": 7606, + "nodeType": "Return", + "src": "9667:56:39" + } + ] + }, + "documentation": { + "id": 7582, + "nodeType": "StructuredDocumentation", + "src": "9238:331:39", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 7608, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "9583:2:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7585, + "mutability": "mutable", + "name": "set", + "nameLocation": "9605:3:39", + "nodeType": "VariableDeclaration", + "scope": 7608, + "src": "9586:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7584, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7583, + "name": "AddressSet", + "nameLocations": [ + "9586:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "9586:10:39" + }, + "referencedDeclaration": 7485, + "src": "9586:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7587, + "mutability": "mutable", + "name": "index", + "nameLocation": "9618:5:39", + "nodeType": "VariableDeclaration", + "scope": 7608, + "src": "9610:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9610:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9585:39:39" + }, + "returnParameters": { + "id": 7591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7590, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7608, + "src": "9648:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9648:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9647:9:39" + }, + "scope": 7772, + "src": "9574:156:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7637, + "nodeType": "Block", + "src": "10351:219:39", + "statements": [ + { + "assignments": [ + 7622 + ], + "declarations": [ + { + "constant": false, + "id": 7622, + "mutability": "mutable", + "name": "store", + "nameLocation": "10378:5:39", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "10361:22:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7620, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10361:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7621, + "nodeType": "ArrayTypeName", + "src": "10361:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 7627, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7624, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7612, + "src": "10394:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 7625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10398:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7484, + "src": "10394:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7623, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7360, + "src": "10386:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 7626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10386:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10361:44:39" + }, + { + "assignments": [ + 7632 + ], + "declarations": [ + { + "constant": false, + "id": 7632, + "mutability": "mutable", + "name": "result", + "nameLocation": "10432:6:39", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "10415:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 7630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10415:7:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7631, + "nodeType": "ArrayTypeName", + "src": "10415:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 7633, + "nodeType": "VariableDeclarationStatement", + "src": "10415:23:39" + }, + { + "AST": { + "nativeSrc": "10501:39:39", + "nodeType": "YulBlock", + "src": "10501:39:39", + "statements": [ + { + "nativeSrc": "10515:15:39", + "nodeType": "YulAssignment", + "src": "10515:15:39", + "value": { + "name": "store", + "nativeSrc": "10525:5:39", + "nodeType": "YulIdentifier", + "src": "10525:5:39" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10515:6:39", + "nodeType": "YulIdentifier", + "src": "10515:6:39" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7632, + "isOffset": false, + "isSlot": false, + "src": "10515:6:39", + "valueSize": 1 + }, + { + "declaration": 7622, + "isOffset": false, + "isSlot": false, + "src": "10525:5:39", + "valueSize": 1 + } + ], + "id": 7634, + "nodeType": "InlineAssembly", + "src": "10492:48:39" + }, + { + "expression": { + "id": 7635, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "10557:6:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 7617, + "id": 7636, + "nodeType": "Return", + "src": "10550:13:39" + } + ] + }, + "documentation": { + "id": 7609, + "nodeType": "StructuredDocumentation", + "src": "9736:529:39", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 7638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "10279:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7612, + "mutability": "mutable", + "name": "set", + "nameLocation": "10305:3:39", + "nodeType": "VariableDeclaration", + "scope": 7638, + "src": "10286:22:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 7611, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7610, + "name": "AddressSet", + "nameLocations": [ + "10286:10:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "10286:10:39" + }, + "referencedDeclaration": 7485, + "src": "10286:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "10285:24:39" + }, + "returnParameters": { + "id": 7617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7616, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7638, + "src": "10333:16:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 7614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10333:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7615, + "nodeType": "ArrayTypeName", + "src": "10333:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "10332:18:39" + }, + "scope": 7772, + "src": "10270:300:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 7642, + "members": [ + { + "constant": false, + "id": 7641, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "10621:6:39", + "nodeType": "VariableDeclaration", + "scope": 7642, + "src": "10617:10:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 7640, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7639, + "name": "Set", + "nameLocations": [ + "10617:3:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7170, + "src": "10617:3:39" + }, + "referencedDeclaration": 7170, + "src": "10617:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "10599:7:39", + "nodeType": "StructDefinition", + "scope": 7772, + "src": "10592:42:39", + "visibility": "public" + }, + { + "body": { + "id": 7662, + "nodeType": "Block", + "src": "10877:56:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7654, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7646, + "src": "10899:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10903:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "10899:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 7658, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7648, + "src": "10919:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10911:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7656, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10911:7:39", + "typeDescriptions": {} + } + }, + "id": 7659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10911:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7653, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7212, + "src": "10894:4:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10894:32:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7652, + "id": 7661, + "nodeType": "Return", + "src": "10887:39:39" + } + ] + }, + "documentation": { + "id": 7643, + "nodeType": "StructuredDocumentation", + "src": "10640:159:39", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 7663, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "10813:3:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7646, + "mutability": "mutable", + "name": "set", + "nameLocation": "10833:3:39", + "nodeType": "VariableDeclaration", + "scope": 7663, + "src": "10817:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7645, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7644, + "name": "UintSet", + "nameLocations": [ + "10817:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "10817:7:39" + }, + "referencedDeclaration": 7642, + "src": "10817:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7648, + "mutability": "mutable", + "name": "value", + "nameLocation": "10846:5:39", + "nodeType": "VariableDeclaration", + "scope": 7663, + "src": "10838:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7647, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10838:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10816:36:39" + }, + "returnParameters": { + "id": 7652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7651, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7663, + "src": "10871:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7650, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10871:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10870:6:39" + }, + "scope": 7772, + "src": "10804:129:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7683, + "nodeType": "Block", + "src": "11177:59:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7675, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7667, + "src": "11202:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11206:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "11202:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 7679, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7669, + "src": "11222:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11214:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7677, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11214:7:39", + "typeDescriptions": {} + } + }, + "id": 7680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11214:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7674, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7296, + "src": "11194:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 7681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11194:35:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7673, + "id": 7682, + "nodeType": "Return", + "src": "11187:42:39" + } + ] + }, + "documentation": { + "id": 7664, + "nodeType": "StructuredDocumentation", + "src": "10939:157:39", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 7684, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "11110:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7667, + "mutability": "mutable", + "name": "set", + "nameLocation": "11133:3:39", + "nodeType": "VariableDeclaration", + "scope": 7684, + "src": "11117:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7666, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7665, + "name": "UintSet", + "nameLocations": [ + "11117:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "11117:7:39" + }, + "referencedDeclaration": 7642, + "src": "11117:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7669, + "mutability": "mutable", + "name": "value", + "nameLocation": "11146:5:39", + "nodeType": "VariableDeclaration", + "scope": 7684, + "src": "11138:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11138:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11116:36:39" + }, + "returnParameters": { + "id": 7673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7672, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7684, + "src": "11171:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7671, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11171:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11170:6:39" + }, + "scope": 7772, + "src": "11101:135:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7704, + "nodeType": "Block", + "src": "11400:61:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7696, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7688, + "src": "11427:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7697, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11431:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "11427:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 7700, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7690, + "src": "11447:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11439:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7698, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11439:7:39", + "typeDescriptions": {} + } + }, + "id": 7701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11439:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7695, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7315, + "src": "11417:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 7702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11417:37:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7694, + "id": 7703, + "nodeType": "Return", + "src": "11410:44:39" + } + ] + }, + "documentation": { + "id": 7685, + "nodeType": "StructuredDocumentation", + "src": "11242:70:39", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 7705, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "11326:8:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7688, + "mutability": "mutable", + "name": "set", + "nameLocation": "11351:3:39", + "nodeType": "VariableDeclaration", + "scope": 7705, + "src": "11335:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7687, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7686, + "name": "UintSet", + "nameLocations": [ + "11335:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "11335:7:39" + }, + "referencedDeclaration": 7642, + "src": "11335:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7690, + "mutability": "mutable", + "name": "value", + "nameLocation": "11364:5:39", + "nodeType": "VariableDeclaration", + "scope": 7705, + "src": "11356:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11356:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11334:36:39" + }, + "returnParameters": { + "id": 7694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7693, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7705, + "src": "11394:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11394:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11393:6:39" + }, + "scope": 7772, + "src": "11317:144:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7719, + "nodeType": "Block", + "src": "11611:43:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7715, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7709, + "src": "11636:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11640:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "11636:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7714, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7329, + "src": "11628:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 7717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11628:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7713, + "id": 7718, + "nodeType": "Return", + "src": "11621:26:39" + } + ] + }, + "documentation": { + "id": 7706, + "nodeType": "StructuredDocumentation", + "src": "11467:70:39", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 7720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "11551:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7709, + "mutability": "mutable", + "name": "set", + "nameLocation": "11574:3:39", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "11558:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7708, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7707, + "name": "UintSet", + "nameLocations": [ + "11558:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "11558:7:39" + }, + "referencedDeclaration": 7642, + "src": "11558:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "11557:21:39" + }, + "returnParameters": { + "id": 7713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7712, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "11602:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11602:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11601:9:39" + }, + "scope": 7772, + "src": "11542:112:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7740, + "nodeType": "Block", + "src": "12076:55:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 7734, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7724, + "src": "12105:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12109:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "12105:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 7736, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7726, + "src": "12117:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7733, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7346, + "src": "12101:3:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 7737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12101:22:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12093:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12093:7:39", + "typeDescriptions": {} + } + }, + "id": 7738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12093:31:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7730, + "id": 7739, + "nodeType": "Return", + "src": "12086:38:39" + } + ] + }, + "documentation": { + "id": 7721, + "nodeType": "StructuredDocumentation", + "src": "11660:331:39", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 7741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "12005:2:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7727, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7724, + "mutability": "mutable", + "name": "set", + "nameLocation": "12024:3:39", + "nodeType": "VariableDeclaration", + "scope": 7741, + "src": "12008:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7723, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7722, + "name": "UintSet", + "nameLocations": [ + "12008:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "12008:7:39" + }, + "referencedDeclaration": 7642, + "src": "12008:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7726, + "mutability": "mutable", + "name": "index", + "nameLocation": "12037:5:39", + "nodeType": "VariableDeclaration", + "scope": 7741, + "src": "12029:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7725, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12029:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12007:36:39" + }, + "returnParameters": { + "id": 7730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7729, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7741, + "src": "12067:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12067:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12066:9:39" + }, + "scope": 7772, + "src": "11996:135:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7770, + "nodeType": "Block", + "src": "12749:219:39", + "statements": [ + { + "assignments": [ + 7755 + ], + "declarations": [ + { + "constant": false, + "id": 7755, + "mutability": "mutable", + "name": "store", + "nameLocation": "12776:5:39", + "nodeType": "VariableDeclaration", + "scope": 7770, + "src": "12759:22:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7753, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12759:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7754, + "nodeType": "ArrayTypeName", + "src": "12759:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 7760, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7757, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7745, + "src": "12792:3:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 7758, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12796:6:39", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7641, + "src": "12792:10:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$7170_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 7756, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7360, + "src": "12784:7:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$7170_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 7759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12784:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12759:44:39" + }, + { + "assignments": [ + 7765 + ], + "declarations": [ + { + "constant": false, + "id": 7765, + "mutability": "mutable", + "name": "result", + "nameLocation": "12830:6:39", + "nodeType": "VariableDeclaration", + "scope": 7770, + "src": "12813:23:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7764, + "nodeType": "ArrayTypeName", + "src": "12813:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 7766, + "nodeType": "VariableDeclarationStatement", + "src": "12813:23:39" + }, + { + "AST": { + "nativeSrc": "12899:39:39", + "nodeType": "YulBlock", + "src": "12899:39:39", + "statements": [ + { + "nativeSrc": "12913:15:39", + "nodeType": "YulAssignment", + "src": "12913:15:39", + "value": { + "name": "store", + "nativeSrc": "12923:5:39", + "nodeType": "YulIdentifier", + "src": "12923:5:39" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12913:6:39", + "nodeType": "YulIdentifier", + "src": "12913:6:39" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7765, + "isOffset": false, + "isSlot": false, + "src": "12913:6:39", + "valueSize": 1 + }, + { + "declaration": 7755, + "isOffset": false, + "isSlot": false, + "src": "12923:5:39", + "valueSize": 1 + } + ], + "id": 7767, + "nodeType": "InlineAssembly", + "src": "12890:48:39" + }, + { + "expression": { + "id": 7768, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7765, + "src": "12955:6:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 7750, + "id": 7769, + "nodeType": "Return", + "src": "12948:13:39" + } + ] + }, + "documentation": { + "id": 7742, + "nodeType": "StructuredDocumentation", + "src": "12137:529:39", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 7771, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "12680:6:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7745, + "mutability": "mutable", + "name": "set", + "nameLocation": "12703:3:39", + "nodeType": "VariableDeclaration", + "scope": 7771, + "src": "12687:19:39", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 7744, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7743, + "name": "UintSet", + "nameLocations": [ + "12687:7:39" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7642, + "src": "12687:7:39" + }, + "referencedDeclaration": 7642, + "src": "12687:7:39", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$7642_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "12686:21:39" + }, + "returnParameters": { + "id": 7750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7749, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7771, + "src": "12731:16:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12731:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7748, + "nodeType": "ArrayTypeName", + "src": "12731:9:39", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12730:18:39" + }, + "scope": 7772, + "src": "12671:297:39", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7773, + "src": "1330:11640:39", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "205:12766:39" + }, + "id": 39 + }, + "contracts/account/CMAccount.sol": { + "ast": { + "absolutePath": "contracts/account/CMAccount.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 563 + ], + "Address": [ + 5245 + ], + "BookingTokenOperator": [ + 10945 + ], + "CMAccount": [ + 8982 + ], + "ChequeManager": [ + 9656 + ], + "ERC1967Proxy": [ + 3503 + ], + "ERC1967Utils": [ + 3806 + ], + "GasMoneyManager": [ + 9930 + ], + "ICMAccountManager": [ + 11872 + ], + "IERC20": [ + 4445 + ], + "IERC721": [ + 4914 + ], + "IERC721Receiver": [ + 4932 + ], + "Initializable": [ + 817 + ], + "PartnerConfiguration": [ + 12872 + ], + "SafeERC20": [ + 4797 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 8983, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7774, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "86:24:40" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": 7776, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 3504, + "src": "112:86:40", + "symbolAliases": [ + { + "foreign": { + "id": 7775, + "name": "ERC1967Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "121:12:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 7778, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 818, + "src": "199:98:40", + "symbolAliases": [ + { + "foreign": { + "id": 7777, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "208:13:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 7780, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 1000, + "src": "298:102:40", + "symbolAliases": [ + { + "foreign": { + "id": 7779, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "307:15:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "id": 7782, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 564, + "src": "401:146:40", + "symbolAliases": [ + { + "foreign": { + "id": 7781, + "name": "AccessControlEnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "410:34:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 7784, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 5246, + "src": "548:68:40", + "symbolAliases": [ + { + "foreign": { + "id": 7783, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "557:7:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 7787, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 4798, + "src": "617:92:40", + "symbolAliases": [ + { + "foreign": { + "id": 7785, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4797, + "src": "626:9:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 7786, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "637:6:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 7789, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 4915, + "src": "710:75:40", + "symbolAliases": [ + { + "foreign": { + "id": 7788, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "719:7:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "id": 7791, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 4933, + "src": "786:91:40", + "symbolAliases": [ + { + "foreign": { + "id": 7790, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "795:15:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 7793, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 3807, + "src": "878:86:40", + "symbolAliases": [ + { + "foreign": { + "id": 7792, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "887:12:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 7795, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 11873, + "src": "966:69:40", + "symbolAliases": [ + { + "foreign": { + "id": 7794, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "975:17:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/ChequeManager.sol", + "file": "./ChequeManager.sol", + "id": 7797, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 9657, + "src": "1036:52:40", + "symbolAliases": [ + { + "foreign": { + "id": 7796, + "name": "ChequeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9656, + "src": "1045:13:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "file": "../booking-token/BookingTokenOperator.sol", + "id": 7799, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 10946, + "src": "1089:81:40", + "symbolAliases": [ + { + "foreign": { + "id": 7798, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10945, + "src": "1098:20:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "file": "../partner/PartnerConfiguration.sol", + "id": 7801, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 12873, + "src": "1171:75:40", + "symbolAliases": [ + { + "foreign": { + "id": 7800, + "name": "PartnerConfiguration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12872, + "src": "1180:20:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "file": "./GasMoneyManager.sol", + "id": 7803, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8983, + "sourceUnit": 9931, + "src": "1247:56:40", + "symbolAliases": [ + { + "foreign": { + "id": 7802, + "name": "GasMoneyManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9930, + "src": "1256:15:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 7805, + "name": "Initializable", + "nameLocations": [ + "2639:13:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "2639:13:40" + }, + "id": 7806, + "nodeType": "InheritanceSpecifier", + "src": "2639:13:40" + }, + { + "baseName": { + "id": 7807, + "name": "AccessControlEnumerableUpgradeable", + "nameLocations": [ + "2658:34:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 563, + "src": "2658:34:40" + }, + "id": 7808, + "nodeType": "InheritanceSpecifier", + "src": "2658:34:40" + }, + { + "baseName": { + "id": 7809, + "name": "UUPSUpgradeable", + "nameLocations": [ + "2698:15:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 999, + "src": "2698:15:40" + }, + "id": 7810, + "nodeType": "InheritanceSpecifier", + "src": "2698:15:40" + }, + { + "baseName": { + "id": 7811, + "name": "IERC721Receiver", + "nameLocations": [ + "2719:15:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4932, + "src": "2719:15:40" + }, + "id": 7812, + "nodeType": "InheritanceSpecifier", + "src": "2719:15:40" + }, + { + "baseName": { + "id": 7813, + "name": "ChequeManager", + "nameLocations": [ + "2740:13:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9656, + "src": "2740:13:40" + }, + "id": 7814, + "nodeType": "InheritanceSpecifier", + "src": "2740:13:40" + }, + { + "baseName": { + "id": 7815, + "name": "PartnerConfiguration", + "nameLocations": [ + "2759:20:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12872, + "src": "2759:20:40" + }, + "id": 7816, + "nodeType": "InheritanceSpecifier", + "src": "2759:20:40" + }, + { + "baseName": { + "id": 7817, + "name": "GasMoneyManager", + "nameLocations": [ + "2785:15:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9930, + "src": "2785:15:40" + }, + "id": 7818, + "nodeType": "InheritanceSpecifier", + "src": "2785:15:40" + } + ], + "canonicalName": "CMAccount", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 7804, + "nodeType": "StructuredDocumentation", + "src": "1305:1307:40", + "text": " @title Camino Messenger Account\n @notice A CM Account manages funds, minting/buying of booking tokens, provided\n or wanted services, and multiple bots for distributors and suppliers on\n Camino Messenger ecosystem.\n Registering bots is done by role based access control. Bot's with\n `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n contract to be used as gas money. This restricted with a `limit`\n (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n values are 10 CAM per 24 hours.\n `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n calling the corresponding functions on the {BookingToken} contract. The buy\n operation pays the price of the Booking Token with the funds on the\n {CMAccount} contract.\n @dev This contract uses UUPS style upgradeability. The authorization function\n `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n restricted to only upgrade to the implementation address registered on the\n {CMAccountManager} contract.\n @custom:security-contact https://r.xyz/program/camino-network" + }, + "fullyImplemented": true, + "id": 8982, + "linearizedBaseContracts": [ + 8982, + 9930, + 12872, + 9656, + 3137, + 4932, + 999, + 3328, + 563, + 362, + 3177, + 6000, + 3286, + 3260, + 2832, + 817 + ], + "name": "CMAccount", + "nameLocation": "2622:9:40", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 7821, + "libraryName": { + "id": 7819, + "name": "Address", + "nameLocations": [ + "2813:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "2813:7:40" + }, + "nodeType": "UsingForDirective", + "src": "2807:34:40", + "typeName": { + "id": 7820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2825:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "global": false, + "id": 7825, + "libraryName": { + "id": 7822, + "name": "SafeERC20", + "nameLocations": [ + "2852:9:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4797, + "src": "2852:9:40" + }, + "nodeType": "UsingForDirective", + "src": "2846:27:40", + "typeName": { + "id": 7824, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7823, + "name": "IERC20", + "nameLocations": [ + "2866:6:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "2866:6:40" + }, + "referencedDeclaration": 4445, + "src": "2866:6:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "documentation": { + "id": 7826, + "nodeType": "StructuredDocumentation", + "src": "3052:90:40", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 7831, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "3171:13:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "3147:66:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7827, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3147:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 7829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3197:15:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 7828, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3187:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3187:26:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7832, + "nodeType": "StructuredDocumentation", + "src": "3220:111:40", + "text": " @notice Bot admin role can add & remove bots and set gas money withdrawal\n parameters." + }, + "functionSelector": "33746274", + "id": 7837, + "mutability": "constant", + "name": "BOT_ADMIN_ROLE", + "nameLocation": "3360:14:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "3336:68:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7833, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3336:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f545f41444d494e5f524f4c45", + "id": 7835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3387:16:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + }, + "value": "BOT_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + } + ], + "id": 7834, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3377:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3377:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7838, + "nodeType": "StructuredDocumentation", + "src": "3411:111:40", + "text": " @notice Cheque operator role can issue cheques to be paid by this CMAccount\n contract." + }, + "functionSelector": "63e86cc8", + "id": 7843, + "mutability": "constant", + "name": "CHEQUE_OPERATOR_ROLE", + "nameLocation": "3551:20:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "3527:80:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7839, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3527:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4348455155455f4f50455241544f525f524f4c45", + "id": 7841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3584:22:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + }, + "value": "CHEQUE_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + } + ], + "id": 7840, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3574:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3574:33:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7844, + "nodeType": "StructuredDocumentation", + "src": "3614:191:40", + "text": " @notice Gas withdrawer role can withdraw gas money from the contract. This is\n intended to be used by the bots and is granted when `addMessengerBot` is\n called." + }, + "functionSelector": "383aba87", + "id": 7849, + "mutability": "constant", + "name": "GAS_WITHDRAWER_ROLE", + "nameLocation": "3834:19:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "3810:78:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7845, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3810:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4741535f574954484452415745525f524f4c45", + "id": 7847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3866:21:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + }, + "value": "GAS_WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + } + ], + "id": 7846, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3856:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3856:32:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7850, + "nodeType": "StructuredDocumentation", + "src": "3895:80:40", + "text": " @notice Withdrawer role can withdraw funds from the contract." + }, + "functionSelector": "85f438c1", + "id": 7855, + "mutability": "constant", + "name": "WITHDRAWER_ROLE", + "nameLocation": "4004:15:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "3980:70:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7851, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3980:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "574954484452415745525f524f4c45", + "id": 7853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4032:17:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + }, + "value": "WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + } + ], + "id": 7852, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4022:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4022:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7856, + "nodeType": "StructuredDocumentation", + "src": "4057:226:40", + "text": " @notice Booking operator role can mint and buy booking tokens using the\n functions on this contract. This is generally used by the bots. The\n price for the booking token is paid by this contract." + }, + "functionSelector": "852b3ccb", + "id": 7861, + "mutability": "constant", + "name": "BOOKING_OPERATOR_ROLE", + "nameLocation": "4312:21:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "4288:82:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7857, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4288:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f4f4b494e475f4f50455241544f525f524f4c45", + "id": 7859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4346:23:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + }, + "value": "BOOKING_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + } + ], + "id": 7858, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4336:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4336:34:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 7862, + "nodeType": "StructuredDocumentation", + "src": "4377:91:40", + "text": " @notice Service admin role can add & remove supported & wanted services." + }, + "functionSelector": "d09445c2", + "id": 7867, + "mutability": "constant", + "name": "SERVICE_ADMIN_ROLE", + "nameLocation": "4497:18:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "4473:76:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4473:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "534552564943455f41444d494e5f524f4c45", + "id": 7865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:20:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + }, + "value": "SERVICE_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + } + ], + "id": 7864, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4518:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4518:31:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "CMAccount.CMAccountStorage", + "documentation": { + "id": 7868, + "nodeType": "StructuredDocumentation", + "src": "4729:71:40", + "text": "@custom:storage-location erc7201:camino.messenger.storage.CMAccount" + }, + "id": 7878, + "members": [ + { + "constant": false, + "id": 7871, + "mutability": "mutable", + "name": "_manager", + "nameLocation": "4919:8:40", + "nodeType": "VariableDeclaration", + "scope": 7878, + "src": "4911:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7870, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4911:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7874, + "mutability": "mutable", + "name": "_bookingToken", + "nameLocation": "5022:13:40", + "nodeType": "VariableDeclaration", + "scope": 7878, + "src": "5014:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5014:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7877, + "mutability": "mutable", + "name": "_prefundAmount", + "nameLocation": "5108:14:40", + "nodeType": "VariableDeclaration", + "scope": 7878, + "src": "5100:22:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5100:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountStorage", + "nameLocation": "4812:16:40", + "nodeType": "StructDefinition", + "scope": 8982, + "src": "4805:324:40", + "visibility": "public" + }, + { + "constant": true, + "id": 7881, + "mutability": "constant", + "name": "CMAccountStorageLocation", + "nameLocation": "5278:24:40", + "nodeType": "VariableDeclaration", + "scope": 8982, + "src": "5253:126:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7879, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5253:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830633762373337393663376363383962396638343962393035366139333230306562613734313838316535376131623033623962656462326330653037313030", + "id": 7880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5313:66:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_5645873346375426079033729947690106159612509051670143668876781420921770504448_by_1", + "typeString": "int_const 5645...(68 digits omitted)...4448" + }, + "value": "0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100" + }, + "visibility": "private" + }, + { + "body": { + "id": 7888, + "nodeType": "Block", + "src": "5468:83:40", + "statements": [ + { + "AST": { + "nativeSrc": "5487:58:40", + "nodeType": "YulBlock", + "src": "5487:58:40", + "statements": [ + { + "nativeSrc": "5501:34:40", + "nodeType": "YulAssignment", + "src": "5501:34:40", + "value": { + "name": "CMAccountStorageLocation", + "nativeSrc": "5511:24:40", + "nodeType": "YulIdentifier", + "src": "5511:24:40" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "5501:6:40", + "nodeType": "YulIdentifier", + "src": "5501:6:40" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7885, + "isOffset": false, + "isSlot": true, + "src": "5501:6:40", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 7881, + "isOffset": false, + "isSlot": false, + "src": "5511:24:40", + "valueSize": 1 + } + ], + "id": 7887, + "nodeType": "InlineAssembly", + "src": "5478:67:40" + } + ] + }, + "id": 7889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCMAccountStorage", + "nameLocation": "5395:20:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7882, + "nodeType": "ParameterList", + "parameters": [], + "src": "5415:2:40" + }, + "returnParameters": { + "id": 7886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7885, + "mutability": "mutable", + "name": "$", + "nameLocation": "5465:1:40", + "nodeType": "VariableDeclaration", + "scope": 7889, + "src": "5440:26:40", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 7884, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7883, + "name": "CMAccountStorage", + "nameLocations": [ + "5440:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7878, + "src": "5440:16:40" + }, + "referencedDeclaration": 7878, + "src": "5440:16:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5439:28:40" + }, + "scope": 8982, + "src": "5386:165:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 7890, + "nodeType": "StructuredDocumentation", + "src": "5730:106:40", + "text": " @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded." + }, + "eventSelector": "a3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db4", + "id": 7896, + "name": "CMAccountUpgraded", + "nameLocation": "5847:17:40", + "nodeType": "EventDefinition", + "parameters": { + "id": 7895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7892, + "indexed": true, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "5881:17:40", + "nodeType": "VariableDeclaration", + "scope": 7896, + "src": "5865:33:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5865:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7894, + "indexed": true, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5916:17:40", + "nodeType": "VariableDeclaration", + "scope": 7896, + "src": "5900:33:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5900:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5864:70:40" + }, + "src": "5841:94:40" + }, + { + "anonymous": false, + "documentation": { + "id": 7897, + "nodeType": "StructuredDocumentation", + "src": "5941:77:40", + "text": " @notice Deposit event, emitted when there is a new deposit" + }, + "eventSelector": "e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "id": 7903, + "name": "Deposit", + "nameLocation": "6029:7:40", + "nodeType": "EventDefinition", + "parameters": { + "id": 7902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7899, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6053:6:40", + "nodeType": "VariableDeclaration", + "scope": 7903, + "src": "6037:22:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6037:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7901, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6069:6:40", + "nodeType": "VariableDeclaration", + "scope": 7903, + "src": "6061:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6061:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6036:40:40" + }, + "src": "6023:54:40" + }, + { + "anonymous": false, + "documentation": { + "id": 7904, + "nodeType": "StructuredDocumentation", + "src": "6083:81:40", + "text": " @notice Withdraw event, emitted when there is a new withdrawal" + }, + "eventSelector": "884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364", + "id": 7910, + "name": "Withdraw", + "nameLocation": "6175:8:40", + "nodeType": "EventDefinition", + "parameters": { + "id": 7909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7906, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "6200:8:40", + "nodeType": "VariableDeclaration", + "scope": 7910, + "src": "6184:24:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6184:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7908, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6218:6:40", + "nodeType": "VariableDeclaration", + "scope": 7910, + "src": "6210:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6210:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6183:42:40" + }, + "src": "6169:57:40" + }, + { + "anonymous": false, + "documentation": { + "id": 7911, + "nodeType": "StructuredDocumentation", + "src": "6232:46:40", + "text": " @notice Messenger bot added" + }, + "eventSelector": "db3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a873994", + "id": 7915, + "name": "MessengerBotAdded", + "nameLocation": "6289:17:40", + "nodeType": "EventDefinition", + "parameters": { + "id": 7914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7913, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6323:3:40", + "nodeType": "VariableDeclaration", + "scope": 7915, + "src": "6307:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7912, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6307:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6306:21:40" + }, + "src": "6283:45:40" + }, + { + "anonymous": false, + "documentation": { + "id": 7916, + "nodeType": "StructuredDocumentation", + "src": "6334:48:40", + "text": " @notice Messenger bot removed" + }, + "eventSelector": "d124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc62913", + "id": 7920, + "name": "MessengerBotRemoved", + "nameLocation": "6393:19:40", + "nodeType": "EventDefinition", + "parameters": { + "id": 7919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7918, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6429:3:40", + "nodeType": "VariableDeclaration", + "scope": 7920, + "src": "6413:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6413:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6412:21:40" + }, + "src": "6387:47:40" + }, + { + "documentation": { + "id": 7921, + "nodeType": "StructuredDocumentation", + "src": "6613:97:40", + "text": " @notice CMAccount implementation address does not match the one in the manager" + }, + "errorSelector": "d334043e", + "id": 7927, + "name": "CMAccountImplementationMismatch", + "nameLocation": "6721:31:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7923, + "mutability": "mutable", + "name": "latestImplementation", + "nameLocation": "6761:20:40", + "nodeType": "VariableDeclaration", + "scope": 7927, + "src": "6753:28:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6753:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7925, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6791:17:40", + "nodeType": "VariableDeclaration", + "scope": 7927, + "src": "6783:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6783:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6752:57:40" + }, + "src": "6715:95:40" + }, + { + "documentation": { + "id": 7928, + "nodeType": "StructuredDocumentation", + "src": "6816:105:40", + "text": " @notice New implementation is the same as the current implementation, no update needed" + }, + "errorSelector": "82afabc1", + "id": 7934, + "name": "CMAccountNoUpgradeNeeded", + "nameLocation": "6932:24:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7930, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "6965:17:40", + "nodeType": "VariableDeclaration", + "scope": 7934, + "src": "6957:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6957:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7932, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6992:17:40", + "nodeType": "VariableDeclaration", + "scope": 7934, + "src": "6984:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6984:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6956:54:40" + }, + "src": "6926:85:40" + }, + { + "documentation": { + "id": 7935, + "nodeType": "StructuredDocumentation", + "src": "7017:75:40", + "text": " @notice Error to revert with if depositer is not allowed" + }, + "errorSelector": "269ec892", + "id": 7939, + "name": "DepositorNotAllowed", + "nameLocation": "7103:19:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7937, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7131:6:40", + "nodeType": "VariableDeclaration", + "scope": 7939, + "src": "7123:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7123:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7122:16:40" + }, + "src": "7097:42:40" + }, + { + "documentation": { + "id": 7940, + "nodeType": "StructuredDocumentation", + "src": "7145:62:40", + "text": " @notice Error to revert zero value deposits" + }, + "errorSelector": "4a4e0cd2", + "id": 7944, + "name": "ZeroValueDeposit", + "nameLocation": "7218:16:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7942, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7243:6:40", + "nodeType": "VariableDeclaration", + "scope": 7944, + "src": "7235:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7235:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7234:16:40" + }, + "src": "7212:39:40" + }, + { + "documentation": { + "id": 7945, + "nodeType": "StructuredDocumentation", + "src": "7257:79:40", + "text": " @notice Error to revert with if the prefund is not spent yet" + }, + "errorSelector": "8990ec0a", + "id": 7953, + "name": "PrefundNotSpentYet", + "nameLocation": "7347:18:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7947, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "7374:18:40", + "nodeType": "VariableDeclaration", + "scope": 7953, + "src": "7366:26:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7366:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7949, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "7402:11:40", + "nodeType": "VariableDeclaration", + "scope": 7953, + "src": "7394:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7394:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7951, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7423:6:40", + "nodeType": "VariableDeclaration", + "scope": 7953, + "src": "7415:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7415:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7365:65:40" + }, + "src": "7341:90:40" + }, + { + "documentation": { + "id": 7954, + "nodeType": "StructuredDocumentation", + "src": "7437:70:40", + "text": " @notice Error to revert if transfer to zero address" + }, + "errorSelector": "ea553b34", + "id": 7956, + "name": "TransferToZeroAddress", + "nameLocation": "7518:21:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7955, + "nodeType": "ParameterList", + "parameters": [], + "src": "7539:2:40" + }, + "src": "7512:30:40" + }, + { + "body": { + "id": 7963, + "nodeType": "Block", + "src": "7788:39:40", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7960, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "7798:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7798:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7962, + "nodeType": "ExpressionStatement", + "src": "7798:22:40" + } + ] + }, + "documentation": { + "id": 7957, + "nodeType": "StructuredDocumentation", + "src": "7721:48:40", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 7964, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7958, + "nodeType": "ParameterList", + "parameters": [], + "src": "7785:2:40" + }, + "returnParameters": { + "id": 7959, + "nodeType": "ParameterList", + "parameters": [], + "src": "7788:0:40" + }, + "scope": 8982, + "src": "7774:53:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8045, + "nodeType": "Block", + "src": "8020:705:40", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7979, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "8030:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8030:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7981, + "nodeType": "ExpressionStatement", + "src": "8030:22:40" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7982, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "8062:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8062:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7984, + "nodeType": "ExpressionStatement", + "src": "8062:24:40" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7985, + "name": "__ChequeManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9162, + "src": "8096:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8096:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7987, + "nodeType": "ExpressionStatement", + "src": "8096:22:40" + }, + { + "expression": { + "arguments": [ + { + "id": 7989, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "8140:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7990, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "8160:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7988, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8129:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 7991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8129:44:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7992, + "nodeType": "ExpressionStatement", + "src": "8129:44:40" + }, + { + "expression": { + "arguments": [ + { + "id": 7994, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "8194:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7995, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "8214:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7993, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8183:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 7996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8183:44:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7997, + "nodeType": "ExpressionStatement", + "src": "8183:44:40" + }, + { + "expression": { + "arguments": [ + { + "id": 7999, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7837, + "src": "8248:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8000, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "8264:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7998, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8237:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8237:40:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8002, + "nodeType": "ExpressionStatement", + "src": "8237:40:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8004, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7831, + "src": "8298:13:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8005, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "8313:8:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8003, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8287:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8287:35:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8007, + "nodeType": "ExpressionStatement", + "src": "8287:35:40" + }, + { + "assignments": [ + 8010 + ], + "declarations": [ + { + "constant": false, + "id": 8010, + "mutability": "mutable", + "name": "$", + "nameLocation": "8358:1:40", + "nodeType": "VariableDeclaration", + "scope": 8045, + "src": "8333:26:40", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 8009, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8008, + "name": "CMAccountStorage", + "nameLocations": [ + "8333:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7878, + "src": "8333:16:40" + }, + "referencedDeclaration": 7878, + "src": "8333:16:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8013, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8011, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7889, + "src": "8362:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$7878_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 8012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8362:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8333:51:40" + }, + { + "expression": { + "id": 8018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8014, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8010, + "src": "8395:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8397:8:40", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 7871, + "src": "8395:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8017, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7966, + "src": "8408:7:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8395:20:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8019, + "nodeType": "ExpressionStatement", + "src": "8395:20:40" + }, + { + "expression": { + "id": 8024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8020, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8010, + "src": "8425:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8022, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8427:13:40", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 7874, + "src": "8425:15:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8023, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7968, + "src": "8443:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8425:30:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8025, + "nodeType": "ExpressionStatement", + "src": "8425:30:40" + }, + { + "expression": { + "id": 8030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8026, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8010, + "src": "8465:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8028, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8467:14:40", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7877, + "src": "8465:16:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 8029, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7970, + "src": "8484:13:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8465:32:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8031, + "nodeType": "ExpressionStatement", + "src": "8465:32:40" + }, + { + "assignments": [ + 8033 + ], + "declarations": [ + { + "constant": false, + "id": 8033, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "8554:15:40", + "nodeType": "VariableDeclaration", + "scope": 8045, + "src": "8546:23:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8546:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8035, + "initialValue": { + "hexValue": "3130", + "id": 8034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8572:8:40", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000_by_1", + "typeString": "int_const 10000000000000000000" + }, + "value": "10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8546:34:40" + }, + { + "assignments": [ + 8037 + ], + "declarations": [ + { + "constant": false, + "id": 8037, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "8608:16:40", + "nodeType": "VariableDeclaration", + "scope": 8045, + "src": "8600:24:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8600:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8039, + "initialValue": { + "hexValue": "3234", + "id": 8038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8627:8:40", + "subdenomination": "hours", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "24" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8600:35:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8041, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8033, + "src": "8684:15:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8042, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8037, + "src": "8701:16:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8040, + "name": "__GasMoneyManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9747, + "src": "8661:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 8043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8661:57:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8044, + "nodeType": "ExpressionStatement", + "src": "8661:57:40" + } + ] + }, + "functionSelector": "33e1a223", + "id": 8046, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7977, + "kind": "modifierInvocation", + "modifierName": { + "id": 7976, + "name": "initializer", + "nameLocations": [ + "8008:11:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 671, + "src": "8008:11:40" + }, + "nodeType": "ModifierInvocation", + "src": "8008:11:40" + } + ], + "name": "initialize", + "nameLocation": "7842:10:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7966, + "mutability": "mutable", + "name": "manager", + "nameLocation": "7870:7:40", + "nodeType": "VariableDeclaration", + "scope": 8046, + "src": "7862:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7862:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7968, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "7895:12:40", + "nodeType": "VariableDeclaration", + "scope": 8046, + "src": "7887:20:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7967, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7887:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7970, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "7925:13:40", + "nodeType": "VariableDeclaration", + "scope": 8046, + "src": "7917:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7917:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7972, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "7956:12:40", + "nodeType": "VariableDeclaration", + "scope": 8046, + "src": "7948:20:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7948:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7974, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "7986:8:40", + "nodeType": "VariableDeclaration", + "scope": 8046, + "src": "7978:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7978:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7852:148:40" + }, + "returnParameters": { + "id": 7978, + "nodeType": "ParameterList", + "parameters": [], + "src": "8020:0:40" + }, + "scope": 8982, + "src": "7833:892:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8049, + "nodeType": "Block", + "src": "8758:2:40", + "statements": [] + }, + "id": 8050, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8047, + "nodeType": "ParameterList", + "parameters": [], + "src": "8738:2:40" + }, + "returnParameters": { + "id": 8048, + "nodeType": "ParameterList", + "parameters": [], + "src": "8758:0:40" + }, + "scope": 8982, + "src": "8731:29:40", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 9655 + ], + "body": { + "id": 8066, + "nodeType": "Block", + "src": "9123:95:40", + "statements": [ + { + "assignments": [ + 8059 + ], + "declarations": [ + { + "constant": false, + "id": 8059, + "mutability": "mutable", + "name": "$", + "nameLocation": "9158:1:40", + "nodeType": "VariableDeclaration", + "scope": 8066, + "src": "9133:26:40", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 8058, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8057, + "name": "CMAccountStorage", + "nameLocations": [ + "9133:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7878, + "src": "9133:16:40" + }, + "referencedDeclaration": 7878, + "src": "9133:16:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8062, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8060, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7889, + "src": "9162:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$7878_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 8061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9162:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9133:51:40" + }, + { + "expression": { + "expression": { + "id": 8063, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8059, + "src": "9201:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9203:8:40", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 7871, + "src": "9201:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 8056, + "id": 8065, + "nodeType": "Return", + "src": "9194:17:40" + } + ] + }, + "documentation": { + "id": 8051, + "nodeType": "StructuredDocumentation", + "src": "8939:111:40", + "text": " @notice Returns the CMAccountManager address.\n @return CMAccountManager address" + }, + "functionSelector": "c162d7da", + "id": 8067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "9064:17:40", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8053, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9096:8:40" + }, + "parameters": { + "id": 8052, + "nodeType": "ParameterList", + "parameters": [], + "src": "9081:2:40" + }, + "returnParameters": { + "id": 8056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8055, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8067, + "src": "9114:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9114:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9113:9:40" + }, + "scope": 8982, + "src": "9055:163:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8082, + "nodeType": "Block", + "src": "9397:100:40", + "statements": [ + { + "assignments": [ + 8075 + ], + "declarations": [ + { + "constant": false, + "id": 8075, + "mutability": "mutable", + "name": "$", + "nameLocation": "9432:1:40", + "nodeType": "VariableDeclaration", + "scope": 8082, + "src": "9407:26:40", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 8074, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8073, + "name": "CMAccountStorage", + "nameLocations": [ + "9407:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7878, + "src": "9407:16:40" + }, + "referencedDeclaration": 7878, + "src": "9407:16:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8078, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8076, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7889, + "src": "9436:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$7878_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 8077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9436:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9407:51:40" + }, + { + "expression": { + "expression": { + "id": 8079, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8075, + "src": "9475:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8080, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9477:13:40", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 7874, + "src": "9475:15:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 8072, + "id": 8081, + "nodeType": "Return", + "src": "9468:22:40" + } + ] + }, + "documentation": { + "id": 8068, + "nodeType": "StructuredDocumentation", + "src": "9224:104:40", + "text": " @notice Returns the booking token address.\n @return BookingToken address" + }, + "functionSelector": "4f3f4639", + "id": 8083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingTokenAddress", + "nameLocation": "9342:22:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8069, + "nodeType": "ParameterList", + "parameters": [], + "src": "9364:2:40" + }, + "returnParameters": { + "id": 8072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8071, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8083, + "src": "9388:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9388:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9387:9:40" + }, + "scope": 8982, + "src": "9333:164:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8098, + "nodeType": "Block", + "src": "9657:101:40", + "statements": [ + { + "assignments": [ + 8091 + ], + "declarations": [ + { + "constant": false, + "id": 8091, + "mutability": "mutable", + "name": "$", + "nameLocation": "9692:1:40", + "nodeType": "VariableDeclaration", + "scope": 8098, + "src": "9667:26:40", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 8090, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8089, + "name": "CMAccountStorage", + "nameLocations": [ + "9667:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7878, + "src": "9667:16:40" + }, + "referencedDeclaration": 7878, + "src": "9667:16:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8094, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8092, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7889, + "src": "9696:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$7878_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 8093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9696:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9667:51:40" + }, + { + "expression": { + "expression": { + "id": 8095, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "9735:1:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$7878_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 8096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9737:14:40", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7877, + "src": "9735:16:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8088, + "id": 8097, + "nodeType": "Return", + "src": "9728:23:40" + } + ] + }, + "documentation": { + "id": 8084, + "nodeType": "StructuredDocumentation", + "src": "9503:91:40", + "text": " @notice Returns the prefund amount.\n @return prefund amount" + }, + "functionSelector": "c39409e1", + "id": 8099, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPrefundAmount", + "nameLocation": "9608:16:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8085, + "nodeType": "ParameterList", + "parameters": [], + "src": "9624:2:40" + }, + "returnParameters": { + "id": 8088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8087, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8099, + "src": "9648:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9648:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9647:9:40" + }, + "scope": 8982, + "src": "9599:159:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 953 + ], + "body": { + "id": 8149, + "nodeType": "Block", + "src": "10478:785:40", + "statements": [ + { + "assignments": [ + 8110 + ], + "declarations": [ + { + "constant": false, + "id": 8110, + "mutability": "mutable", + "name": "managerImplementation", + "nameLocation": "10555:21:40", + "nodeType": "VariableDeclaration", + "scope": 8149, + "src": "10547:29:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10547:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 8117, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8112, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8067 + ], + "referencedDeclaration": 8067, + "src": "10597:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10597:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8111, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "10579:17:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 8114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10579:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 8115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10618:24:40", + "memberName": "getAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 11840, + "src": "10579:63:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 8116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10579:65:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10547:97:40" + }, + { + "assignments": [ + 8119 + ], + "declarations": [ + { + "constant": false, + "id": 8119, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "10662:17:40", + "nodeType": "VariableDeclaration", + "scope": 8149, + "src": "10654:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10654:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 8123, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 8120, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "10682:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3806_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 8121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10695:17:40", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3564, + "src": "10682:30:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10682:32:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10654:60:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8124, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8119, + "src": "10800:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 8125, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8102, + "src": "10821:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10800:38:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8133, + "nodeType": "IfStatement", + "src": "10796:138:40", + "trueBody": { + "id": 8132, + "nodeType": "Block", + "src": "10840:94:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8128, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8119, + "src": "10886:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8129, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8102, + "src": "10905:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8127, + "name": "CMAccountNoUpgradeNeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7934, + "src": "10861:24:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 8130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10861:62:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8131, + "nodeType": "RevertStatement", + "src": "10854:69:40" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8134, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8102, + "src": "11037:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8135, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8110, + "src": "11058:21:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11037:42:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8143, + "nodeType": "IfStatement", + "src": "11033:153:40", + "trueBody": { + "id": 8142, + "nodeType": "Block", + "src": "11081:105:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8138, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8110, + "src": "11134:21:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8139, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8102, + "src": "11157:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8137, + "name": "CMAccountImplementationMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7927, + "src": "11102:31:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 8140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11102:73:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8141, + "nodeType": "RevertStatement", + "src": "11095:80:40" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 8145, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8119, + "src": "11219:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8146, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8102, + "src": "11238:17:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8144, + "name": "CMAccountUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7896, + "src": "11201:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 8147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11201:55:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8148, + "nodeType": "EmitStatement", + "src": "11196:60:40" + } + ] + }, + "documentation": { + "id": 8100, + "nodeType": "StructuredDocumentation", + "src": "9937:440:40", + "text": " @notice Authorizes the upgrade of the CMAccount.\n Reverts if the new implementation is the same as the old one.\n Reverts if the new implementation does not match the implementation address\n in the manager. Only implementations registered at the manager are allowed.\n @dev Emits a {CMAccountUpgraded} event.\n @param newImplementation The new implementation address" + }, + "id": 8150, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8106, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7831, + "src": "10463:13:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8107, + "kind": "modifierInvocation", + "modifierName": { + "id": 8105, + "name": "onlyRole", + "nameLocations": [ + "10454:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10454:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "10454:23:40" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "10391:17:40", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8104, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10445:8:40" + }, + "parameters": { + "id": 8103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8102, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "10417:17:40", + "nodeType": "VariableDeclaration", + "scope": 8150, + "src": "10409:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10409:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10408:27:40" + }, + "returnParameters": { + "id": 8108, + "nodeType": "ParameterList", + "parameters": [], + "src": "10478:0:40" + }, + "scope": 8982, + "src": "10382:881:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 9649 + ], + "body": { + "id": 8164, + "nodeType": "Block", + "src": "11471:58:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8160, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7843, + "src": "11496:20:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8161, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8153, + "src": "11518:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8159, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "11488:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 8162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11488:34:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8158, + "id": 8163, + "nodeType": "Return", + "src": "11481:41:40" + } + ] + }, + "documentation": { + "id": 8151, + "nodeType": "StructuredDocumentation", + "src": "11269:126:40", + "text": " @notice Returns true if an address is authorized to sign cheques\n @param bot The bot's address" + }, + "functionSelector": "e0b78add", + "id": 8165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "11409:12:40", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8155, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11447:8:40" + }, + "parameters": { + "id": 8154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8153, + "mutability": "mutable", + "name": "bot", + "nameLocation": "11430:3:40", + "nodeType": "VariableDeclaration", + "scope": 8165, + "src": "11422:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11422:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11421:13:40" + }, + "returnParameters": { + "id": 8158, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8157, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8165, + "src": "11465:4:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8156, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11465:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11464:6:40" + }, + "scope": 8982, + "src": "11400:129:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8213, + "nodeType": "Block", + "src": "11763:987:40", + "statements": [ + { + "assignments": [ + 8172 + ], + "declarations": [ + { + "constant": false, + "id": 8172, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "11781:13:40", + "nodeType": "VariableDeclaration", + "scope": 8213, + "src": "11773:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11773:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8175, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8173, + "name": "getPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8099, + "src": "11797:16:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 8174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11797:18:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11773:42:40" + }, + { + "assignments": [ + 8177 + ], + "declarations": [ + { + "constant": false, + "id": 8177, + "mutability": "mutable", + "name": "totalChequePayments", + "nameLocation": "11833:19:40", + "nodeType": "VariableDeclaration", + "scope": 8213, + "src": "11825:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11825:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8180, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8178, + "name": "getTotalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9641, + "src": "11855:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 8179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11855:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11825:54:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8181, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8177, + "src": "12036:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 8182, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "12058:13:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12036:35:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8212, + "nodeType": "IfStatement", + "src": "12032:712:40", + "trueBody": { + "id": 8211, + "nodeType": "Block", + "src": "12073:671:40", + "statements": [ + { + "assignments": [ + 8185 + ], + "declarations": [ + { + "constant": false, + "id": 8185, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "12333:11:40", + "nodeType": "VariableDeclaration", + "scope": 8211, + "src": "12325:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12325:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8189, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8186, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "12347:13:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 8187, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8177, + "src": "12363:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12347:35:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12325:57:40" + }, + { + "assignments": [ + 8191 + ], + "declarations": [ + { + "constant": false, + "id": 8191, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "12404:18:40", + "nodeType": "VariableDeclaration", + "scope": 8211, + "src": "12396:26:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12396:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8199, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 8194, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "12433:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$8982", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$8982", + "typeString": "contract CMAccount" + } + ], + "id": 8193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12425:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12425:7:40", + "typeDescriptions": {} + } + }, + "id": 8195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12425:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12439:7:40", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "12425:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 8197, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8185, + "src": "12449:11:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12425:35:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12396:64:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8200, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8168, + "src": "12606:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 8201, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8191, + "src": "12615:18:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12606:27:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8210, + "nodeType": "IfStatement", + "src": "12602:132:40", + "trueBody": { + "id": 8209, + "nodeType": "Block", + "src": "12635:99:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8204, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8191, + "src": "12679:18:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8205, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8185, + "src": "12699:11:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8206, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8168, + "src": "12712:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8203, + "name": "PrefundNotSpentYet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7953, + "src": "12660:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 8207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12660:59:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8208, + "nodeType": "RevertStatement", + "src": "12653:66:40" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 8166, + "nodeType": "StructuredDocumentation", + "src": "11535:166:40", + "text": " @notice Verifies if the amount is withdrawable by checking if prefund is spent\n @param amount The amount to check if it's withdrawable" + }, + "id": 8214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkPrefundSpent", + "nameLocation": "11715:18:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8168, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11742:6:40", + "nodeType": "VariableDeclaration", + "scope": 8214, + "src": "11734:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11734:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11733:16:40" + }, + "returnParameters": { + "id": 8170, + "nodeType": "ParameterList", + "parameters": [], + "src": "11763:0:40" + }, + "scope": 8982, + "src": "11706:1044:40", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 8242, + "nodeType": "Block", + "src": "13178:204:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8228, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8219, + "src": "13288:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8227, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8214, + "src": "13269:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 8229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13269:26:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8230, + "nodeType": "ExpressionStatement", + "src": "13269:26:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8234, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8219, + "src": "13326:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8231, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8217, + "src": "13306:9:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 8233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13316:9:40", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "13306:19:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 8235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13306:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8236, + "nodeType": "ExpressionStatement", + "src": "13306:27:40" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8238, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8217, + "src": "13357:9:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 8239, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8219, + "src": "13368:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8237, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7910, + "src": "13348:8:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 8240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13348:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8241, + "nodeType": "EmitStatement", + "src": "13343:32:40" + } + ] + }, + "documentation": { + "id": 8215, + "nodeType": "StructuredDocumentation", + "src": "12756:308:40", + "text": " @notice Withdraw CAM from the CMAccount\n This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n and withdraw the prefund." + }, + "functionSelector": "f3fef3a3", + "id": 8243, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8222, + "kind": "modifierInvocation", + "modifierName": { + "id": 8221, + "name": "nonReentrant", + "nameLocations": [ + "13139:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "13139:12:40" + }, + "nodeType": "ModifierInvocation", + "src": "13139:12:40" + }, + { + "arguments": [ + { + "id": 8224, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7855, + "src": "13161:15:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8225, + "kind": "modifierInvocation", + "modifierName": { + "id": 8223, + "name": "onlyRole", + "nameLocations": [ + "13152:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "13152:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "13152:25:40" + } + ], + "name": "withdraw", + "nameLocation": "13078:8:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8217, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "13103:9:40", + "nodeType": "VariableDeclaration", + "scope": 8243, + "src": "13087:25:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 8216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13087:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8219, + "mutability": "mutable", + "name": "amount", + "nameLocation": "13122:6:40", + "nodeType": "VariableDeclaration", + "scope": 8243, + "src": "13114:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8218, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13114:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13086:43:40" + }, + "returnParameters": { + "id": 8226, + "nodeType": "ParameterList", + "parameters": [], + "src": "13178:0:40" + }, + "scope": 8982, + "src": "13069:313:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8273, + "nodeType": "Block", + "src": "14114:248:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8264, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8083, + "src": "14201:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14201:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8266, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8246, + "src": "14239:11:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8267, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8248, + "src": "14264:3:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 8268, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8250, + "src": "14281:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8269, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8252, + "src": "14314:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8270, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8255, + "src": "14333:12:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "expression": { + "id": 8261, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10945, + "src": "14150:20:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$10945_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 8263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14171:16:40", + "memberName": "mintBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10870, + "src": "14150:37:40", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4445_$returns$__$", + "typeString": "function (address,address,string memory,uint256,uint256,contract IERC20)" + } + }, + "id": 8271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14150:205:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8272, + "nodeType": "ExpressionStatement", + "src": "14150:205:40" + } + ] + }, + "documentation": { + "id": 8244, + "nodeType": "StructuredDocumentation", + "src": "13561:330:40", + "text": " @notice Mints booking token.\n @param reservedFor The account to reserve the token for\n @param uri The URI of the token\n @param expirationTimestamp The expiration timestamp\n @param price The price of the token\n @param paymentToken The payment token, if address(0) then native" + }, + "functionSelector": "58e5cae0", + "id": 8274, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8258, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7861, + "src": "14091:21:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8259, + "kind": "modifierInvocation", + "modifierName": { + "id": 8257, + "name": "onlyRole", + "nameLocations": [ + "14082:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "14082:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "14082:31:40" + } + ], + "name": "mintBookingToken", + "nameLocation": "13905:16:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8246, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "13939:11:40", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "13931:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13931:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8248, + "mutability": "mutable", + "name": "uri", + "nameLocation": "13974:3:40", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "13960:17:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8247, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13960:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8250, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "13995:19:40", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "13987:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13987:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8252, + "mutability": "mutable", + "name": "price", + "nameLocation": "14032:5:40", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "14024:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14024:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8255, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "14054:12:40", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "14047:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8254, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8253, + "name": "IERC20", + "nameLocations": [ + "14047:6:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "14047:6:40" + }, + "referencedDeclaration": 4445, + "src": "14047:6:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "13921:151:40" + }, + "returnParameters": { + "id": 8260, + "nodeType": "ParameterList", + "parameters": [], + "src": "14114:0:40" + }, + "scope": 8982, + "src": "13896:466:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8293, + "nodeType": "Block", + "src": "14557:88:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8288, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8083, + "src": "14604:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14604:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8290, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8277, + "src": "14630:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8285, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10945, + "src": "14567:20:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$10945_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 8287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14588:15:40", + "memberName": "buyBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10944, + "src": "14567:36:40", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 8291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14567:71:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8292, + "nodeType": "ExpressionStatement", + "src": "14567:71:40" + } + ] + }, + "documentation": { + "id": 8275, + "nodeType": "StructuredDocumentation", + "src": "14368:88:40", + "text": " @notice Buys booking token.\n @param tokenId The token id" + }, + "functionSelector": "26687c9f", + "id": 8294, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8280, + "kind": "modifierInvocation", + "modifierName": { + "id": 8279, + "name": "nonReentrant", + "nameLocations": [ + "14512:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "14512:12:40" + }, + "nodeType": "ModifierInvocation", + "src": "14512:12:40" + }, + { + "arguments": [ + { + "id": 8282, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7861, + "src": "14534:21:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8283, + "kind": "modifierInvocation", + "modifierName": { + "id": 8281, + "name": "onlyRole", + "nameLocations": [ + "14525:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "14525:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "14525:31:40" + } + ], + "name": "buyBookingToken", + "nameLocation": "14470:15:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8277, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "14494:7:40", + "nodeType": "VariableDeclaration", + "scope": 8294, + "src": "14486:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14486:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14485:17:40" + }, + "returnParameters": { + "id": 8284, + "nodeType": "ParameterList", + "parameters": [], + "src": "14557:0:40" + }, + "scope": 8982, + "src": "14461:184:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 4931 + ], + "body": { + "id": 8312, + "nodeType": "Block", + "src": "14900:54:40", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 8308, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "14917:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$8982", + "typeString": "contract CMAccount" + } + }, + "id": 8309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14922:16:40", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 8313, + "src": "14917:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 8310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14939:8:40", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "14917:30:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 8307, + "id": 8311, + "nodeType": "Return", + "src": "14910:37:40" + } + ] + }, + "documentation": { + "id": 8295, + "nodeType": "StructuredDocumentation", + "src": "14651:145:40", + "text": " @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n @dev See {IERC721Receiver-onERC721Received}." + }, + "functionSelector": "150b7a02", + "id": 8313, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "14810:16:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8297, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8313, + "src": "14827:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14827:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8299, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8313, + "src": "14836:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14836:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8301, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8313, + "src": "14845:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14845:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8313, + "src": "14854:12:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8302, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14854:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14826:41:40" + }, + "returnParameters": { + "id": 8307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8306, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8313, + "src": "14892:6:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8305, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "14892:6:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "14891:8:40" + }, + "scope": 8982, + "src": "14801:153:40", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 8345, + "nodeType": "Block", + "src": "15505:133:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8327, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8319, + "src": "15519:2:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 8330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15533:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15525:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15525:7:40", + "typeDescriptions": {} + } + }, + "id": 8331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15525:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15519:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8337, + "nodeType": "IfStatement", + "src": "15515:77:40", + "trueBody": { + "id": 8336, + "nodeType": "Block", + "src": "15537:55:40", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8333, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "15558:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15558:23:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8335, + "nodeType": "RevertStatement", + "src": "15551:30:40" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8341, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8319, + "src": "15620:2:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8342, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8321, + "src": "15624:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8338, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8317, + "src": "15601:5:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 8340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15607:12:40", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4557, + "src": "15601:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4445_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15601:30:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8344, + "nodeType": "ExpressionStatement", + "src": "15601:30:40" + } + ] + }, + "documentation": { + "id": 8314, + "nodeType": "StructuredDocumentation", + "src": "15133:267:40", + "text": " @notice Transfers ERC20 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC20 token\n @param to The address to transfer the tokens to\n @param amount The amount of tokens to transfer" + }, + "functionSelector": "9db5dbe4", + "id": 8346, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8324, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7855, + "src": "15488:15:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8325, + "kind": "modifierInvocation", + "modifierName": { + "id": 8323, + "name": "onlyRole", + "nameLocations": [ + "15479:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15479:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "15479:25:40" + } + ], + "name": "transferERC20", + "nameLocation": "15414:13:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8317, + "mutability": "mutable", + "name": "token", + "nameLocation": "15435:5:40", + "nodeType": "VariableDeclaration", + "scope": 8346, + "src": "15428:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8316, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8315, + "name": "IERC20", + "nameLocations": [ + "15428:6:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "15428:6:40" + }, + "referencedDeclaration": 4445, + "src": "15428:6:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8319, + "mutability": "mutable", + "name": "to", + "nameLocation": "15450:2:40", + "nodeType": "VariableDeclaration", + "scope": 8346, + "src": "15442:10:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15442:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8321, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15462:6:40", + "nodeType": "VariableDeclaration", + "scope": 8346, + "src": "15454:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15454:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15427:42:40" + }, + "returnParameters": { + "id": 8326, + "nodeType": "ParameterList", + "parameters": [], + "src": "15505:0:40" + }, + "scope": 8982, + "src": "15405:233:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8382, + "nodeType": "Block", + "src": "16015:153:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8360, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8352, + "src": "16029:2:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 8363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16043:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16035:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16035:7:40", + "typeDescriptions": {} + } + }, + "id": 8364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16035:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16029:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8370, + "nodeType": "IfStatement", + "src": "16025:77:40", + "trueBody": { + "id": 8369, + "nodeType": "Block", + "src": "16047:55:40", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8366, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "16068:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16068:23:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8368, + "nodeType": "RevertStatement", + "src": "16061:30:40" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8376, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "16142:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$8982", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$8982", + "typeString": "contract CMAccount" + } + ], + "id": 8375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16134:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16134:7:40", + "typeDescriptions": {} + } + }, + "id": 8377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16134:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8378, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8352, + "src": "16149:2:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8379, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8354, + "src": "16153:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8371, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8350, + "src": "16111:5:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$4914", + "typeString": "contract IERC721" + } + }, + "id": 8373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16117:16:40", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4869, + "src": "16111:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" + } + }, + "id": 8380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16111:50:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8381, + "nodeType": "ExpressionStatement", + "src": "16111:50:40" + } + ] + }, + "documentation": { + "id": 8347, + "nodeType": "StructuredDocumentation", + "src": "15644:263:40", + "text": " @notice Transfers ERC721 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC721 token\n @param to The address to transfer the tokens to\n @param tokenId The token id of the token" + }, + "functionSelector": "1aca6376", + "id": 8383, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8357, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7855, + "src": "15998:15:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8358, + "kind": "modifierInvocation", + "modifierName": { + "id": 8356, + "name": "onlyRole", + "nameLocations": [ + "15989:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15989:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "15989:25:40" + } + ], + "name": "transferERC721", + "nameLocation": "15921:14:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8350, + "mutability": "mutable", + "name": "token", + "nameLocation": "15944:5:40", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "15936:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$4914", + "typeString": "contract IERC721" + }, + "typeName": { + "id": 8349, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8348, + "name": "IERC721", + "nameLocations": [ + "15936:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "15936:7:40" + }, + "referencedDeclaration": 4914, + "src": "15936:7:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$4914", + "typeString": "contract IERC721" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8352, + "mutability": "mutable", + "name": "to", + "nameLocation": "15959:2:40", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "15951:10:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15951:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8354, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15971:7:40", + "nodeType": "VariableDeclaration", + "scope": 8383, + "src": "15963:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15963:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15935:44:40" + }, + "returnParameters": { + "id": 8359, + "nodeType": "ParameterList", + "parameters": [], + "src": "16015:0:40" + }, + "scope": 8982, + "src": "15912:256:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 8408, + "nodeType": "Block", + "src": "17307:92:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8401, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8386, + "src": "17344:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8400, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "17329:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17329:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8403, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8388, + "src": "17358:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8404, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8393, + "src": "17363:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 8405, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8390, + "src": "17377:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 8399, + "name": "_addService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12118, + "src": "17317:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (bytes32,uint256,string memory[] memory,bool)" + } + }, + "id": 8406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17317:75:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8407, + "nodeType": "ExpressionStatement", + "src": "17317:75:40" + } + ] + }, + "documentation": { + "id": 8384, + "nodeType": "StructuredDocumentation", + "src": "16347:770:40", + "text": " @notice Adds a service to the account as a supported service.\n `serviceName` is defined as pkg + service name in protobuf. For example:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceName Service name to add to the account as a supported service\n @param fee Fee of the service in aCAM (wei in ETH terminology)\n @param capabilities Capabilities of the service (if any, optional)" + }, + "functionSelector": "432cf639", + "id": 8409, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8396, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "17287:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8397, + "kind": "modifierInvocation", + "modifierName": { + "id": 8395, + "name": "onlyRole", + "nameLocations": [ + "17278:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17278:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "17278:28:40" + } + ], + "name": "addService", + "nameLocation": "17131:10:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8386, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17165:11:40", + "nodeType": "VariableDeclaration", + "scope": 8409, + "src": "17151:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8385, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17151:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8388, + "mutability": "mutable", + "name": "fee", + "nameLocation": "17194:3:40", + "nodeType": "VariableDeclaration", + "scope": 8409, + "src": "17186:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17186:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8390, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "17212:14:40", + "nodeType": "VariableDeclaration", + "scope": 8409, + "src": "17207:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8389, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17207:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8393, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "17252:12:40", + "nodeType": "VariableDeclaration", + "scope": 8409, + "src": "17236:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8391, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17236:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8392, + "nodeType": "ArrayTypeName", + "src": "17236:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "17141:129:40" + }, + "returnParameters": { + "id": 8398, + "nodeType": "ParameterList", + "parameters": [], + "src": "17307:0:40" + }, + "scope": 8982, + "src": "17122:277:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8424, + "nodeType": "Block", + "src": "17568:60:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8420, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8412, + "src": "17608:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8419, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "17593:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17593:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8418, + "name": "_removeService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12157, + "src": "17578:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 8422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17578:43:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8423, + "nodeType": "ExpressionStatement", + "src": "17578:43:40" + } + ] + }, + "documentation": { + "id": 8410, + "nodeType": "StructuredDocumentation", + "src": "17405:72:40", + "text": " @notice Remove a service from the account by its name" + }, + "functionSelector": "f51acaea", + "id": 8425, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8415, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "17548:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8416, + "kind": "modifierInvocation", + "modifierName": { + "id": 8414, + "name": "onlyRole", + "nameLocations": [ + "17539:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17539:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "17539:28:40" + } + ], + "name": "removeService", + "nameLocation": "17491:13:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8412, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17519:11:40", + "nodeType": "VariableDeclaration", + "scope": 8425, + "src": "17505:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8411, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17505:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17504:27:40" + }, + "returnParameters": { + "id": 8417, + "nodeType": "ParameterList", + "parameters": [], + "src": "17568:0:40" + }, + "scope": 8982, + "src": "17482:146:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8443, + "nodeType": "Block", + "src": "17809:65:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8438, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8428, + "src": "17849:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8437, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "17834:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17834:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8440, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8430, + "src": "17863:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8436, + "name": "_setServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12191, + "src": "17819:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 8441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17819:48:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8442, + "nodeType": "ExpressionStatement", + "src": "17819:48:40" + } + ] + }, + "documentation": { + "id": 8426, + "nodeType": "StructuredDocumentation", + "src": "17646:59:40", + "text": " @notice Set the fee of a service by name" + }, + "functionSelector": "41bf7c69", + "id": 8444, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8433, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "17789:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8434, + "kind": "modifierInvocation", + "modifierName": { + "id": 8432, + "name": "onlyRole", + "nameLocations": [ + "17780:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17780:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "17780:28:40" + } + ], + "name": "setServiceFee", + "nameLocation": "17719:13:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8428, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17747:11:40", + "nodeType": "VariableDeclaration", + "scope": 8444, + "src": "17733:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8427, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17733:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8430, + "mutability": "mutable", + "name": "fee", + "nameLocation": "17768:3:40", + "nodeType": "VariableDeclaration", + "scope": 8444, + "src": "17760:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17760:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17732:40:40" + }, + "returnParameters": { + "id": 8435, + "nodeType": "ParameterList", + "parameters": [], + "src": "17809:0:40" + }, + "scope": 8982, + "src": "17710:164:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8462, + "nodeType": "Block", + "src": "18120:87:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8457, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8447, + "src": "18171:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8456, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "18156:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18156:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8459, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8449, + "src": "18185:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 8455, + "name": "_setServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12225, + "src": "18130:25:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$", + "typeString": "function (bytes32,bool)" + } + }, + "id": 8460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18130:70:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8461, + "nodeType": "ExpressionStatement", + "src": "18130:70:40" + } + ] + }, + "documentation": { + "id": 8445, + "nodeType": "StructuredDocumentation", + "src": "17904:71:40", + "text": " @notice Set the restricted rate of a service by name" + }, + "functionSelector": "a7d022f8", + "id": 8463, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8452, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "18100:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8453, + "kind": "modifierInvocation", + "modifierName": { + "id": 8451, + "name": "onlyRole", + "nameLocations": [ + "18091:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18091:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "18091:28:40" + } + ], + "name": "setServiceRestrictedRate", + "nameLocation": "17989:24:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8447, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18037:11:40", + "nodeType": "VariableDeclaration", + "scope": 8463, + "src": "18023:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8446, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18023:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8449, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "18063:14:40", + "nodeType": "VariableDeclaration", + "scope": 8463, + "src": "18058:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18058:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "18013:70:40" + }, + "returnParameters": { + "id": 8454, + "nodeType": "ParameterList", + "parameters": [], + "src": "18120:0:40" + }, + "scope": 8982, + "src": "17980:227:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8482, + "nodeType": "Block", + "src": "18459:83:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8477, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8466, + "src": "18508:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8476, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "18493:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18493:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8479, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8469, + "src": "18522:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + ], + "id": 8475, + "name": "_setServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12259, + "src": "18469:23:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory[] memory)" + } + }, + "id": 8480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18469:66:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8481, + "nodeType": "ExpressionStatement", + "src": "18469:66:40" + } + ] + }, + "documentation": { + "id": 8464, + "nodeType": "StructuredDocumentation", + "src": "18238:69:40", + "text": " @notice Set all capabilities for a service by name" + }, + "functionSelector": "ebc20d20", + "id": 8483, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8472, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "18439:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8473, + "kind": "modifierInvocation", + "modifierName": { + "id": 8471, + "name": "onlyRole", + "nameLocations": [ + "18430:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18430:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "18430:28:40" + } + ], + "name": "setServiceCapabilities", + "nameLocation": "18321:22:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8466, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18367:11:40", + "nodeType": "VariableDeclaration", + "scope": 8483, + "src": "18353:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8465, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18353:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8469, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "18404:12:40", + "nodeType": "VariableDeclaration", + "scope": 8483, + "src": "18388:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8467, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18388:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8468, + "nodeType": "ArrayTypeName", + "src": "18388:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "18343:79:40" + }, + "returnParameters": { + "id": 8474, + "nodeType": "ParameterList", + "parameters": [], + "src": "18459:0:40" + }, + "scope": 8982, + "src": "18312:230:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8501, + "nodeType": "Block", + "src": "18793:79:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8496, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8486, + "src": "18840:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8495, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "18825:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18825:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8498, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8488, + "src": "18854:10:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8494, + "name": "_addServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "18803:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 8499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18803:62:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8500, + "nodeType": "ExpressionStatement", + "src": "18803:62:40" + } + ] + }, + "documentation": { + "id": 8484, + "nodeType": "StructuredDocumentation", + "src": "18574:73:40", + "text": " @notice Add a single capability to the service by name" + }, + "functionSelector": "7512e55b", + "id": 8502, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8491, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "18773:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8492, + "kind": "modifierInvocation", + "modifierName": { + "id": 8490, + "name": "onlyRole", + "nameLocations": [ + "18764:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18764:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "18764:28:40" + } + ], + "name": "addServiceCapability", + "nameLocation": "18661:20:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8486, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18705:11:40", + "nodeType": "VariableDeclaration", + "scope": 8502, + "src": "18691:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8485, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18691:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8488, + "mutability": "mutable", + "name": "capability", + "nameLocation": "18740:10:40", + "nodeType": "VariableDeclaration", + "scope": 8502, + "src": "18726:24:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8487, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18726:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18681:75:40" + }, + "returnParameters": { + "id": 8493, + "nodeType": "ParameterList", + "parameters": [], + "src": "18793:0:40" + }, + "scope": 8982, + "src": "18652:220:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8520, + "nodeType": "Block", + "src": "19105:82:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8515, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8505, + "src": "19155:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8514, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "19140:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19140:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8517, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8507, + "src": "19169:10:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8513, + "name": "_removeServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12377, + "src": "19115:24:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 8518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19115:65:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8519, + "nodeType": "ExpressionStatement", + "src": "19115:65:40" + } + ] + }, + "documentation": { + "id": 8503, + "nodeType": "StructuredDocumentation", + "src": "18878:78:40", + "text": " @notice Remove a single capability from the service by name" + }, + "functionSelector": "8c20f574", + "id": 8521, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8510, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "19085:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8511, + "kind": "modifierInvocation", + "modifierName": { + "id": 8509, + "name": "onlyRole", + "nameLocations": [ + "19076:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19076:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "19076:28:40" + } + ], + "name": "removeServiceCapability", + "nameLocation": "18970:23:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8505, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19017:11:40", + "nodeType": "VariableDeclaration", + "scope": 8521, + "src": "19003:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8504, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19003:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8507, + "mutability": "mutable", + "name": "capability", + "nameLocation": "19052:10:40", + "nodeType": "VariableDeclaration", + "scope": 8521, + "src": "19038:24:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8506, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19038:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18993:75:40" + }, + "returnParameters": { + "id": 8512, + "nodeType": "ParameterList", + "parameters": [], + "src": "19105:0:40" + }, + "scope": 8982, + "src": "18961:226:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8537, + "nodeType": "Block", + "src": "19423:106:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8534, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8524, + "src": "19510:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8530, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8067 + ], + "referencedDeclaration": 8067, + "src": "19458:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19458:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8529, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "19440:17:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 8532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19440:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 8533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19479:30:40", + "memberName": "getRegisteredServiceHashByName", + "nodeType": "MemberAccess", + "referencedDeclaration": 11864, + "src": "19440:69:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view external returns (bytes32)" + } + }, + "id": 8535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19440:82:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8528, + "id": 8536, + "nodeType": "Return", + "src": "19433:89:40" + } + ] + }, + "documentation": { + "id": 8522, + "nodeType": "StructuredDocumentation", + "src": "19193:131:40", + "text": " @notice Get service hash by name. Returns the keccak256 hash of the service name\n from the account manager" + }, + "id": 8538, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceHash", + "nameLocation": "19338:14:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8524, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19367:11:40", + "nodeType": "VariableDeclaration", + "scope": 8538, + "src": "19353:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8523, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19353:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19352:27:40" + }, + "returnParameters": { + "id": 8528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8527, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "19410:11:40", + "nodeType": "VariableDeclaration", + "scope": 8538, + "src": "19402:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8526, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19402:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "19401:21:40" + }, + "scope": 8982, + "src": "19329:200:40", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 8623, + "nodeType": "Block", + "src": "19939:635:40", + "statements": [ + { + "assignments": [ + 8553 + ], + "declarations": [ + { + "constant": false, + "id": 8553, + "mutability": "mutable", + "name": "_serviceHashes", + "nameLocation": "20033:14:40", + "nodeType": "VariableDeclaration", + "scope": 8623, + "src": "20016:31:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 8551, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20016:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8552, + "nodeType": "ArrayTypeName", + "src": "20016:9:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 8556, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8554, + "name": "getAllServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12396, + "src": "20050:19:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 8555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20050:21:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20016:55:40" + }, + { + "assignments": [ + 8561 + ], + "declarations": [ + { + "constant": false, + "id": 8561, + "mutability": "mutable", + "name": "_serviceNames", + "nameLocation": "20097:13:40", + "nodeType": "VariableDeclaration", + "scope": 8623, + "src": "20081:29:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8559, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20081:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8560, + "nodeType": "ArrayTypeName", + "src": "20081:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 8568, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8565, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8553, + "src": "20126:14:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20141:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20126:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "20113:12:40", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 8562, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20117:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8563, + "nodeType": "ArrayTypeName", + "src": "20117:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 8567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20113:35:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20081:67:40" + }, + { + "assignments": [ + 8573 + ], + "declarations": [ + { + "constant": false, + "id": 8573, + "mutability": "mutable", + "name": "_allSupportedServicesList", + "nameLocation": "20175:25:40", + "nodeType": "VariableDeclaration", + "scope": 8623, + "src": "20158:42:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 8571, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8570, + "name": "Service", + "nameLocations": [ + "20158:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11914, + "src": "20158:7:40" + }, + "referencedDeclaration": 11914, + "src": "20158:7:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 8572, + "nodeType": "ArrayTypeName", + "src": "20158:9:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "id": 8581, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8578, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8553, + "src": "20217:14:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20232:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20217:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "20203:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct PartnerConfiguration.Service memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 8575, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8574, + "name": "Service", + "nameLocations": [ + "20207:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11914, + "src": "20207:7:40" + }, + "referencedDeclaration": 11914, + "src": "20207:7:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 8576, + "nodeType": "ArrayTypeName", + "src": "20207:9:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + } + }, + "id": 8580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20203:36:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20158:81:40" + }, + { + "body": { + "id": 8617, + "nodeType": "Block", + "src": "20302:206:40", + "statements": [ + { + "expression": { + "id": 8605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8593, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8561, + "src": "20316:13:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8595, + "indexExpression": { + "id": 8594, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20330:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20316:16:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 8601, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8553, + "src": "20405:14:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8603, + "indexExpression": { + "id": 8602, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20420:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20405:17:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8597, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8067 + ], + "referencedDeclaration": 8067, + "src": "20353:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20353:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8596, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "20335:17:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 8599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20335:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 8600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20374:30:40", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 11871, + "src": "20335:69:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 8604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20335:88:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "20316:107:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8606, + "nodeType": "ExpressionStatement", + "src": "20316:107:40" + }, + { + "expression": { + "id": 8615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8607, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8573, + "src": "20437:25:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "id": 8609, + "indexExpression": { + "id": 8608, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20463:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20437:28:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 8611, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8553, + "src": "20479:14:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8613, + "indexExpression": { + "id": 8612, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20494:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20479:17:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8610, + "name": "getService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12422, + "src": "20468:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_Service_$11914_memory_ptr_$", + "typeString": "function (bytes32) view returns (struct PartnerConfiguration.Service memory)" + } + }, + "id": 8614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20468:29:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "20437:60:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "id": 8616, + "nodeType": "ExpressionStatement", + "src": "20437:60:40" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8586, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20270:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 8587, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8553, + "src": "20274:14:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20289:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20274:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20270:25:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8618, + "initializationExpression": { + "assignments": [ + 8583 + ], + "declarations": [ + { + "constant": false, + "id": 8583, + "mutability": "mutable", + "name": "i", + "nameLocation": "20263:1:40", + "nodeType": "VariableDeclaration", + "scope": 8618, + "src": "20255:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20255:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8585, + "initialValue": { + "hexValue": "30", + "id": 8584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20267:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20255:13:40" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 8591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "20297:3:40", + "subExpression": { + "id": 8590, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8583, + "src": "20297:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8592, + "nodeType": "ExpressionStatement", + "src": "20297:3:40" + }, + "nodeType": "ForStatement", + "src": "20250:258:40" + }, + { + "expression": { + "components": [ + { + "id": 8619, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8561, + "src": "20526:13:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 8620, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8573, + "src": "20541:25:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + } + ], + "id": 8621, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20525:42:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr_$", + "typeString": "tuple(string memory[] memory,struct PartnerConfiguration.Service memory[] memory)" + } + }, + "functionReturnParameters": 8548, + "id": 8622, + "nodeType": "Return", + "src": "20518:49:40" + } + ] + }, + "documentation": { + "id": 8539, + "nodeType": "StructuredDocumentation", + "src": "19708:116:40", + "text": " @notice Get all supported services. Return a list of service names and a list of service objects." + }, + "functionSelector": "7eec56c7", + "id": 8624, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedServices", + "nameLocation": "19838:20:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8540, + "nodeType": "ParameterList", + "parameters": [], + "src": "19858:2:40" + }, + "returnParameters": { + "id": 8548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8543, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "19898:12:40", + "nodeType": "VariableDeclaration", + "scope": 8624, + "src": "19882:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8541, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19882:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8542, + "nodeType": "ArrayTypeName", + "src": "19882:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8547, + "mutability": "mutable", + "name": "services", + "nameLocation": "19929:8:40", + "nodeType": "VariableDeclaration", + "scope": 8624, + "src": "19912:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 8545, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8544, + "name": "Service", + "nameLocations": [ + "19912:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11914, + "src": "19912:7:40" + }, + "referencedDeclaration": 11914, + "src": "19912:7:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 8546, + "nodeType": "ArrayTypeName", + "src": "19912:9:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$11914_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "src": "19881:57:40" + }, + "scope": 8982, + "src": "19829:745:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8638, + "nodeType": "Block", + "src": "20760:66:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8634, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8627, + "src": "20806:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8633, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "20791:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20791:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8632, + "name": "getServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8639, + 12448 + ], + "referencedDeclaration": 12448, + "src": "20777:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 8636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20777:42:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8631, + "id": 8637, + "nodeType": "Return", + "src": "20770:49:40" + } + ] + }, + "documentation": { + "id": 8625, + "nodeType": "StructuredDocumentation", + "src": "20580:91:40", + "text": " @notice Get service fee by name. Overloading the getServiceFee function." + }, + "functionSelector": "18274da4", + "id": 8639, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "20685:13:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8627, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20713:11:40", + "nodeType": "VariableDeclaration", + "scope": 8639, + "src": "20699:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8626, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20699:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20698:27:40" + }, + "returnParameters": { + "id": 8631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8630, + "mutability": "mutable", + "name": "fee", + "nameLocation": "20755:3:40", + "nodeType": "VariableDeclaration", + "scope": 8639, + "src": "20747:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20747:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20746:13:40" + }, + "scope": 8982, + "src": "20676:150:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8653, + "nodeType": "Block", + "src": "21054:77:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8649, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8642, + "src": "21111:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8648, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "21096:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21096:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8647, + "name": "getServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8654, + 12474 + ], + "referencedDeclaration": 12474, + "src": "21071:24:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 8651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21071:53:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8646, + "id": 8652, + "nodeType": "Return", + "src": "21064:60:40" + } + ] + }, + "documentation": { + "id": 8640, + "nodeType": "StructuredDocumentation", + "src": "20832:114:40", + "text": " @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function." + }, + "functionSelector": "b5124635", + "id": 8654, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "20960:24:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8642, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20999:11:40", + "nodeType": "VariableDeclaration", + "scope": 8654, + "src": "20985:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8641, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20985:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20984:27:40" + }, + "returnParameters": { + "id": 8646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8645, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "21038:14:40", + "nodeType": "VariableDeclaration", + "scope": 8654, + "src": "21033:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8644, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21033:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21032:21:40" + }, + "scope": 8982, + "src": "20951:180:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8669, + "nodeType": "Block", + "src": "21361:75:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8665, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8657, + "src": "21416:11:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8664, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "21401:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21401:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8663, + "name": "getServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8670, + 12501 + ], + "referencedDeclaration": 12501, + "src": "21378:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32) view returns (string memory[] memory)" + } + }, + "id": 8667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21378:51:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 8662, + "id": 8668, + "nodeType": "Return", + "src": "21371:58:40" + } + ] + }, + "documentation": { + "id": 8655, + "nodeType": "StructuredDocumentation", + "src": "21137:109:40", + "text": " @notice Get service capabilities by name. Overloading the getServiceCapabilities function." + }, + "functionSelector": "319d13f3", + "id": 8670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "21260:22:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8657, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "21297:11:40", + "nodeType": "VariableDeclaration", + "scope": 8670, + "src": "21283:25:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8656, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21283:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21282:27:40" + }, + "returnParameters": { + "id": 8662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8661, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "21347:12:40", + "nodeType": "VariableDeclaration", + "scope": 8670, + "src": "21331:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8659, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21331:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8660, + "nodeType": "ArrayTypeName", + "src": "21331:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "21330:30:40" + }, + "scope": 8982, + "src": "21251:185:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8705, + "nodeType": "Block", + "src": "21817:188:40", + "statements": [ + { + "body": { + "id": 8703, + "nodeType": "Block", + "src": "21877:122:40", + "statements": [ + { + "assignments": [ + 8692 + ], + "declarations": [ + { + "constant": false, + "id": 8692, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "21899:11:40", + "nodeType": "VariableDeclaration", + "scope": 8703, + "src": "21891:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8691, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21891:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8698, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 8694, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8674, + "src": "21928:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8696, + "indexExpression": { + "id": 8695, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8681, + "src": "21941:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21928:15:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8693, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "21913:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21913:31:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21891:53:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8700, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8692, + "src": "21976:11:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8699, + "name": "_addWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12556, + "src": "21958:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 8701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21958:30:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8702, + "nodeType": "ExpressionStatement", + "src": "21958:30:40" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8684, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8681, + "src": "21847:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 8685, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8674, + "src": "21851:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21864:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21851:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21847:23:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8704, + "initializationExpression": { + "assignments": [ + 8681 + ], + "declarations": [ + { + "constant": false, + "id": 8681, + "mutability": "mutable", + "name": "i", + "nameLocation": "21840:1:40", + "nodeType": "VariableDeclaration", + "scope": 8704, + "src": "21832:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21832:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8683, + "initialValue": { + "hexValue": "30", + "id": 8682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21844:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "21832:13:40" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 8689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "21872:3:40", + "subExpression": { + "id": 8688, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8681, + "src": "21872:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8690, + "nodeType": "ExpressionStatement", + "src": "21872:3:40" + }, + "nodeType": "ForStatement", + "src": "21827:172:40" + } + ] + }, + "documentation": { + "id": 8671, + "nodeType": "StructuredDocumentation", + "src": "21615:104:40", + "text": " @notice Adds wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "1c5db99e", + "id": 8706, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8677, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "21797:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8678, + "kind": "modifierInvocation", + "modifierName": { + "id": 8676, + "name": "onlyRole", + "nameLocations": [ + "21788:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "21788:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "21788:28:40" + } + ], + "name": "addWantedServices", + "nameLocation": "21733:17:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8674, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "21767:12:40", + "nodeType": "VariableDeclaration", + "scope": 8706, + "src": "21751:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8672, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21751:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8673, + "nodeType": "ArrayTypeName", + "src": "21751:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "21750:30:40" + }, + "returnParameters": { + "id": 8679, + "nodeType": "ParameterList", + "parameters": [], + "src": "21817:0:40" + }, + "scope": 8982, + "src": "21724:281:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8741, + "nodeType": "Block", + "src": "22219:191:40", + "statements": [ + { + "body": { + "id": 8739, + "nodeType": "Block", + "src": "22279:125:40", + "statements": [ + { + "assignments": [ + 8728 + ], + "declarations": [ + { + "constant": false, + "id": 8728, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "22301:11:40", + "nodeType": "VariableDeclaration", + "scope": 8739, + "src": "22293:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8727, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22293:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8734, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 8730, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8710, + "src": "22330:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8732, + "indexExpression": { + "id": 8731, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8717, + "src": "22343:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22330:15:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8729, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8538, + "src": "22315:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 8733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22315:31:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22293:53:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8736, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8728, + "src": "22381:11:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8735, + "name": "_removeWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12589, + "src": "22360:20:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 8737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22360:33:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8738, + "nodeType": "ExpressionStatement", + "src": "22360:33:40" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8720, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8717, + "src": "22249:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 8721, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8710, + "src": "22253:12:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22266:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22253:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22249:23:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8740, + "initializationExpression": { + "assignments": [ + 8717 + ], + "declarations": [ + { + "constant": false, + "id": 8717, + "mutability": "mutable", + "name": "i", + "nameLocation": "22242:1:40", + "nodeType": "VariableDeclaration", + "scope": 8740, + "src": "22234:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8716, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22234:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8719, + "initialValue": { + "hexValue": "30", + "id": 8718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22246:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22234:13:40" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 8725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22274:3:40", + "subExpression": { + "id": 8724, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8717, + "src": "22274:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8726, + "nodeType": "ExpressionStatement", + "src": "22274:3:40" + }, + "nodeType": "ForStatement", + "src": "22229:175:40" + } + ] + }, + "documentation": { + "id": 8707, + "nodeType": "StructuredDocumentation", + "src": "22011:107:40", + "text": " @notice Removes wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "39e4c705", + "id": 8742, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8713, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "22199:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8714, + "kind": "modifierInvocation", + "modifierName": { + "id": 8712, + "name": "onlyRole", + "nameLocations": [ + "22190:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "22190:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "22190:28:40" + } + ], + "name": "removeWantedServices", + "nameLocation": "22132:20:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8710, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "22169:12:40", + "nodeType": "VariableDeclaration", + "scope": 8742, + "src": "22153:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8708, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22153:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8709, + "nodeType": "ArrayTypeName", + "src": "22153:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "22152:30:40" + }, + "returnParameters": { + "id": 8715, + "nodeType": "ParameterList", + "parameters": [], + "src": "22219:0:40" + }, + "scope": 8982, + "src": "22123:287:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8798, + "nodeType": "Block", + "src": "22609:450:40", + "statements": [ + { + "assignments": [ + 8753 + ], + "declarations": [ + { + "constant": false, + "id": 8753, + "mutability": "mutable", + "name": "_wantedServiceHashes", + "nameLocation": "22636:20:40", + "nodeType": "VariableDeclaration", + "scope": 8798, + "src": "22619:37:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 8751, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22619:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8752, + "nodeType": "ArrayTypeName", + "src": "22619:9:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 8756, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8754, + "name": "getWantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12608, + "src": "22659:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 8755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22659:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22619:64:40" + }, + { + "assignments": [ + 8761 + ], + "declarations": [ + { + "constant": false, + "id": 8761, + "mutability": "mutable", + "name": "_wantedServiceNames", + "nameLocation": "22710:19:40", + "nodeType": "VariableDeclaration", + "scope": 8798, + "src": "22694:35:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8759, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22694:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8760, + "nodeType": "ArrayTypeName", + "src": "22694:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 8768, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8765, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "22745:20:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22766:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22745:27:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "22732:12:40", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 8762, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22736:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8763, + "nodeType": "ArrayTypeName", + "src": "22736:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 8767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22732:41:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22694:79:40" + }, + { + "body": { + "id": 8794, + "nodeType": "Block", + "src": "22842:174:40", + "statements": [ + { + "expression": { + "id": 8792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 8780, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8761, + "src": "22856:19:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 8782, + "indexExpression": { + "id": 8781, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8770, + "src": "22876:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22856:22:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 8788, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "22968:20:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8790, + "indexExpression": { + "id": 8789, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8770, + "src": "22989:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22968:23:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8784, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8067 + ], + "referencedDeclaration": 8067, + "src": "22899:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 8785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22899:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8783, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "22881:17:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 8786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22881:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 8787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22920:30:40", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 11871, + "src": "22881:69:40", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 8791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22881:124:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "22856:149:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8793, + "nodeType": "ExpressionStatement", + "src": "22856:149:40" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8773, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8770, + "src": "22804:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 8774, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "22808:20:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 8775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22829:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22808:27:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22804:31:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8795, + "initializationExpression": { + "assignments": [ + 8770 + ], + "declarations": [ + { + "constant": false, + "id": 8770, + "mutability": "mutable", + "name": "i", + "nameLocation": "22797:1:40", + "nodeType": "VariableDeclaration", + "scope": 8795, + "src": "22789:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22789:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8772, + "initialValue": { + "hexValue": "30", + "id": 8771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22801:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22789:13:40" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 8778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22837:3:40", + "subExpression": { + "id": 8777, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8770, + "src": "22837:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8779, + "nodeType": "ExpressionStatement", + "src": "22837:3:40" + }, + "nodeType": "ForStatement", + "src": "22784:232:40" + }, + { + "expression": { + "id": 8796, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8761, + "src": "23033:19:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 8748, + "id": 8797, + "nodeType": "Return", + "src": "23026:26:40" + } + ] + }, + "documentation": { + "id": 8743, + "nodeType": "StructuredDocumentation", + "src": "22416:108:40", + "text": " @notice Get all wanted services.\n @return serviceNames List of service names" + }, + "functionSelector": "08564c19", + "id": 8799, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServices", + "nameLocation": "22538:17:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8744, + "nodeType": "ParameterList", + "parameters": [], + "src": "22555:2:40" + }, + "returnParameters": { + "id": 8748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8747, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "22595:12:40", + "nodeType": "VariableDeclaration", + "scope": 8799, + "src": "22579:28:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 8745, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22579:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 8746, + "nodeType": "ArrayTypeName", + "src": "22579:8:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "22578:30:40" + }, + "scope": 8982, + "src": "22529:530:40", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8812, + "nodeType": "Block", + "src": "23474:59:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8809, + "name": "_isSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8802, + "src": "23513:12:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 8808, + "name": "_setOffChainPaymentSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12721, + "src": "23484:28:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 8810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23484:42:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8811, + "nodeType": "ExpressionStatement", + "src": "23484:42:40" + } + ] + }, + "documentation": { + "id": 8800, + "nodeType": "StructuredDocumentation", + "src": "23238:139:40", + "text": " @notice Sets if off-chain payment is supported.\n @param _isSupported true if off-chain payment is supported" + }, + "functionSelector": "a31aa039", + "id": 8813, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8805, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "23454:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8806, + "kind": "modifierInvocation", + "modifierName": { + "id": 8804, + "name": "onlyRole", + "nameLocations": [ + "23445:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23445:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "23445:28:40" + } + ], + "name": "setOffChainPaymentSupported", + "nameLocation": "23391:27:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8803, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8802, + "mutability": "mutable", + "name": "_isSupported", + "nameLocation": "23424:12:40", + "nodeType": "VariableDeclaration", + "scope": 8813, + "src": "23419:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8801, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23419:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23418:19:40" + }, + "returnParameters": { + "id": 8807, + "nodeType": "ParameterList", + "parameters": [], + "src": "23474:0:40" + }, + "scope": 8982, + "src": "23382:151:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8826, + "nodeType": "Block", + "src": "23748:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8823, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8816, + "src": "23777:15:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8822, + "name": "_addSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12642, + "src": "23758:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23758:35:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8825, + "nodeType": "ExpressionStatement", + "src": "23758:35:40" + } + ] + }, + "documentation": { + "id": 8814, + "nodeType": "StructuredDocumentation", + "src": "23539:116:40", + "text": " @notice Adds a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "6d69fcaf", + "id": 8827, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8819, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "23728:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8820, + "kind": "modifierInvocation", + "modifierName": { + "id": 8818, + "name": "onlyRole", + "nameLocations": [ + "23719:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23719:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "23719:28:40" + } + ], + "name": "addSupportedToken", + "nameLocation": "23669:17:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8816, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "23695:15:40", + "nodeType": "VariableDeclaration", + "scope": 8827, + "src": "23687:23:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23687:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23686:25:40" + }, + "returnParameters": { + "id": 8821, + "nodeType": "ParameterList", + "parameters": [], + "src": "23748:0:40" + }, + "scope": 8982, + "src": "23660:140:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8840, + "nodeType": "Block", + "src": "24021:55:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8837, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8830, + "src": "24053:15:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8836, + "name": "_removeSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12676, + "src": "24031:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24031:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8839, + "nodeType": "ExpressionStatement", + "src": "24031:38:40" + } + ] + }, + "documentation": { + "id": 8828, + "nodeType": "StructuredDocumentation", + "src": "23806:119:40", + "text": " @notice Removes a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "76319190", + "id": 8841, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8833, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "24001:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8834, + "kind": "modifierInvocation", + "modifierName": { + "id": 8832, + "name": "onlyRole", + "nameLocations": [ + "23992:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23992:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "23992:28:40" + } + ], + "name": "removeSupportedToken", + "nameLocation": "23939:20:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8831, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8830, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "23968:15:40", + "nodeType": "VariableDeclaration", + "scope": 8841, + "src": "23960:23:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23960:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23959:25:40" + }, + "returnParameters": { + "id": 8835, + "nodeType": "ParameterList", + "parameters": [], + "src": "24021:0:40" + }, + "scope": 8982, + "src": "23930:146:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8857, + "nodeType": "Block", + "src": "24621:51:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8853, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8844, + "src": "24645:13:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8854, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8846, + "src": "24660:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8852, + "name": "_addPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12781, + "src": "24631:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 8855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24631:34:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8856, + "nodeType": "ExpressionStatement", + "src": "24631:34:40" + } + ] + }, + "documentation": { + "id": 8842, + "nodeType": "StructuredDocumentation", + "src": "24255:261:40", + "text": " @notice Add public key with address\n These public keys are intended to be used with for off-chain encryption of private booking data.\n @param pubKeyAddress address of the public key\n @param data public key data" + }, + "functionSelector": "ccde65dc", + "id": 8858, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8849, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "24601:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8850, + "kind": "modifierInvocation", + "modifierName": { + "id": 8848, + "name": "onlyRole", + "nameLocations": [ + "24592:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24592:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "24592:28:40" + } + ], + "name": "addPublicKey", + "nameLocation": "24530:12:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8847, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8844, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "24551:13:40", + "nodeType": "VariableDeclaration", + "scope": 8858, + "src": "24543:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24543:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8846, + "mutability": "mutable", + "name": "data", + "nameLocation": "24579:4:40", + "nodeType": "VariableDeclaration", + "scope": 8858, + "src": "24566:17:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8845, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24566:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24542:42:40" + }, + "returnParameters": { + "id": 8851, + "nodeType": "ParameterList", + "parameters": [], + "src": "24621:0:40" + }, + "scope": 8982, + "src": "24521:151:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8871, + "nodeType": "Block", + "src": "24822:48:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8868, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8861, + "src": "24849:13:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8867, + "name": "_removePublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12820, + "src": "24832:16:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24832:31:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8870, + "nodeType": "ExpressionStatement", + "src": "24832:31:40" + } + ] + }, + "documentation": { + "id": 8859, + "nodeType": "StructuredDocumentation", + "src": "24678:55:40", + "text": " @notice Remove public key by address" + }, + "functionSelector": "e7bfce9a", + "id": 8872, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8864, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "24802:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8865, + "kind": "modifierInvocation", + "modifierName": { + "id": 8863, + "name": "onlyRole", + "nameLocations": [ + "24793:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24793:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "24793:28:40" + } + ], + "name": "removePublicKey", + "nameLocation": "24747:15:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8861, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "24771:13:40", + "nodeType": "VariableDeclaration", + "scope": 8872, + "src": "24763:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24763:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24762:23:40" + }, + "returnParameters": { + "id": 8866, + "nodeType": "ParameterList", + "parameters": [], + "src": "24822:0:40" + }, + "scope": 8982, + "src": "24738:132:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8914, + "nodeType": "Block", + "src": "25211:398:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8884, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8877, + "src": "25308:8:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8883, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8214, + "src": "25289:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 8885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25289:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8886, + "nodeType": "ExpressionStatement", + "src": "25289:28:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8888, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7843, + "src": "25369:20:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8889, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8875, + "src": "25391:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8887, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25358:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25358:37:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8891, + "nodeType": "ExpressionStatement", + "src": "25358:37:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8893, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7861, + "src": "25416:21:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8894, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8875, + "src": "25439:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8892, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25405:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25405:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8896, + "nodeType": "ExpressionStatement", + "src": "25405:38:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8898, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "25464:19:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8899, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8875, + "src": "25485:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8897, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25453:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25453:36:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8901, + "nodeType": "ExpressionStatement", + "src": "25453:36:40" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8903, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8875, + "src": "25523:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8902, + "name": "MessengerBotAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7915, + "src": "25505:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25505:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8905, + "nodeType": "EmitStatement", + "src": "25500:27:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8911, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8877, + "src": "25593:8:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 8908, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8875, + "src": "25578:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25570:8:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 8906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25570:8:40", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 8909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25570:12:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 8910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25583:9:40", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "25570:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 8912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25570:32:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8913, + "nodeType": "ExpressionStatement", + "src": "25570:32:40" + } + ] + }, + "documentation": { + "id": 8873, + "nodeType": "StructuredDocumentation", + "src": "25049:69:40", + "text": " @notice Adds messenger bot with initial gas money." + }, + "functionSelector": "51889d6b", + "id": 8915, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8880, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7837, + "src": "25195:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8881, + "kind": "modifierInvocation", + "modifierName": { + "id": 8879, + "name": "onlyRole", + "nameLocations": [ + "25186:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25186:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "25186:24:40" + } + ], + "name": "addMessengerBot", + "nameLocation": "25132:15:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8875, + "mutability": "mutable", + "name": "bot", + "nameLocation": "25156:3:40", + "nodeType": "VariableDeclaration", + "scope": 8915, + "src": "25148:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8874, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25148:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8877, + "mutability": "mutable", + "name": "gasMoney", + "nameLocation": "25169:8:40", + "nodeType": "VariableDeclaration", + "scope": 8915, + "src": "25161:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25161:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25147:31:40" + }, + "returnParameters": { + "id": 8882, + "nodeType": "ParameterList", + "parameters": [], + "src": "25211:0:40" + }, + "scope": 8982, + "src": "25123:486:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8943, + "nodeType": "Block", + "src": "25764:191:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8925, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7843, + "src": "25786:20:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8926, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8918, + "src": "25808:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8924, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25774:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25774:38:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8928, + "nodeType": "ExpressionStatement", + "src": "25774:38:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8930, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7861, + "src": "25834:21:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8931, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8918, + "src": "25857:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8929, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25822:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25822:39:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8933, + "nodeType": "ExpressionStatement", + "src": "25822:39:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8935, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "25883:19:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8936, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8918, + "src": "25904:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8934, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25871:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 8937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25871:37:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8938, + "nodeType": "ExpressionStatement", + "src": "25871:37:40" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8940, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8918, + "src": "25944:3:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8939, + "name": "MessengerBotRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7920, + "src": "25924:19:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25924:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8942, + "nodeType": "EmitStatement", + "src": "25919:29:40" + } + ] + }, + "documentation": { + "id": 8916, + "nodeType": "StructuredDocumentation", + "src": "25615:71:40", + "text": " @notice Removes messenger bot by revoking the roles." + }, + "functionSelector": "c6640e68", + "id": 8944, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8921, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7837, + "src": "25748:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8922, + "kind": "modifierInvocation", + "modifierName": { + "id": 8920, + "name": "onlyRole", + "nameLocations": [ + "25739:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25739:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "25739:24:40" + } + ], + "name": "removeMessengerBot", + "nameLocation": "25700:18:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8918, + "mutability": "mutable", + "name": "bot", + "nameLocation": "25727:3:40", + "nodeType": "VariableDeclaration", + "scope": 8944, + "src": "25719:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25719:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25718:13:40" + }, + "returnParameters": { + "id": 8923, + "nodeType": "ParameterList", + "parameters": [], + "src": "25764:0:40" + }, + "scope": 8982, + "src": "25691:264:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8963, + "nodeType": "Block", + "src": "26378:78:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8956, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8947, + "src": "26407:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8955, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8214, + "src": "26388:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 8957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26388:26:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8958, + "nodeType": "ExpressionStatement", + "src": "26388:26:40" + }, + { + "expression": { + "arguments": [ + { + "id": 8960, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8947, + "src": "26442:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8959, + "name": "_withdrawGasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9849, + "src": "26424:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 8961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26424:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8962, + "nodeType": "ExpressionStatement", + "src": "26424:25:40" + } + ] + }, + "documentation": { + "id": 8945, + "nodeType": "StructuredDocumentation", + "src": "26134:147:40", + "text": " @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n @param amount The amount to withdraw in aCAM (wei)" + }, + "functionSelector": "5c988994", + "id": 8964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 8950, + "kind": "modifierInvocation", + "modifierName": { + "id": 8949, + "name": "nonReentrant", + "nameLocations": [ + "26335:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "26335:12:40" + }, + "nodeType": "ModifierInvocation", + "src": "26335:12:40" + }, + { + "arguments": [ + { + "id": 8952, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "26357:19:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8953, + "kind": "modifierInvocation", + "modifierName": { + "id": 8951, + "name": "onlyRole", + "nameLocations": [ + "26348:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26348:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "26348:29:40" + } + ], + "name": "withdrawGasMoney", + "nameLocation": "26295:16:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8947, + "mutability": "mutable", + "name": "amount", + "nameLocation": "26320:6:40", + "nodeType": "VariableDeclaration", + "scope": 8964, + "src": "26312:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26312:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26311:16:40" + }, + "returnParameters": { + "id": 8954, + "nodeType": "ParameterList", + "parameters": [], + "src": "26378:0:40" + }, + "scope": 8982, + "src": "26286:170:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8980, + "nodeType": "Block", + "src": "26798:54:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8976, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8967, + "src": "26831:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8977, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8969, + "src": "26838:6:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8975, + "name": "_setGasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9881, + "src": "26808:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 8978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26808:37:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8979, + "nodeType": "ExpressionStatement", + "src": "26808:37:40" + } + ] + }, + "documentation": { + "id": 8965, + "nodeType": "StructuredDocumentation", + "src": "26462:237:40", + "text": " @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n @param limit Amount of gas money to withdraw in wei per period\n @param period Duration of the withdrawal period in seconds" + }, + "functionSelector": "6fc22cd1", + "id": 8981, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8972, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7837, + "src": "26782:14:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8973, + "kind": "modifierInvocation", + "modifierName": { + "id": 8971, + "name": "onlyRole", + "nameLocations": [ + "26773:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26773:8:40" + }, + "nodeType": "ModifierInvocation", + "src": "26773:24:40" + } + ], + "name": "setGasMoneyWithdrawal", + "nameLocation": "26713:21:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8967, + "mutability": "mutable", + "name": "limit", + "nameLocation": "26743:5:40", + "nodeType": "VariableDeclaration", + "scope": 8981, + "src": "26735:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26735:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8969, + "mutability": "mutable", + "name": "period", + "nameLocation": "26758:6:40", + "nodeType": "VariableDeclaration", + "scope": 8981, + "src": "26750:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26750:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26734:31:40" + }, + "returnParameters": { + "id": 8974, + "nodeType": "ParameterList", + "parameters": [], + "src": "26798:0:40" + }, + "scope": 8982, + "src": "26704:148:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 8983, + "src": "2613:24241:40", + "usedErrors": [ + 580, + 583, + 844, + 849, + 3039, + 3187, + 3190, + 3538, + 3551, + 4524, + 5000, + 5005, + 5008, + 5651, + 5656, + 5661, + 7927, + 7934, + 7939, + 7944, + 7953, + 7956, + 9101, + 9106, + 9111, + 9118, + 9125, + 9130, + 9713, + 9719, + 11958, + 11962, + 11966, + 11970, + 11974, + 11978, + 11982, + 11986, + 11990 + ], + "usedEvents": [ + 588, + 3199, + 3208, + 3217, + 3517, + 7896, + 7903, + 7910, + 7915, + 7920, + 9083, + 9096, + 9700, + 9707, + 11994, + 11998, + 12002, + 12006, + 12012, + 12018, + 12022, + 12028, + 12034, + 12038, + 12042, + 12046, + 12050, + 12054 + ] + } + ], + "src": "86:26769:40" + }, + "id": 40 + }, + "contracts/account/ChequeManager.sol": { + "ast": { + "absolutePath": "contracts/account/ChequeManager.sol", + "exportedSymbols": { + "Address": [ + 5245 + ], + "ChequeManager": [ + 9656 + ], + "ECDSA": [ + 5988 + ], + "ICMAccountManager": [ + 11872 + ], + "Initializable": [ + 817 + ], + "ReentrancyGuardUpgradeable": [ + 3137 + ] + }, + "id": 9657, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8984, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "78:23:41" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 8986, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9657, + "sourceUnit": 818, + "src": "103:98:41", + "symbolAliases": [ + { + "foreign": { + "id": 8985, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "112:13:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "id": 8988, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9657, + "sourceUnit": 5989, + "src": "202:77:41", + "symbolAliases": [ + { + "foreign": { + "id": 8987, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5988, + "src": "211:5:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 8990, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9657, + "sourceUnit": 5246, + "src": "280:68:41", + "symbolAliases": [ + { + "foreign": { + "id": 8989, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "289:7:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 8992, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9657, + "sourceUnit": 3138, + "src": "349:118:41", + "symbolAliases": [ + { + "foreign": { + "id": 8991, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3137, + "src": "358:26:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 8994, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9657, + "sourceUnit": 11873, + "src": "490:69:41", + "symbolAliases": [ + { + "foreign": { + "id": 8993, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "499:17:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 8996, + "name": "Initializable", + "nameLocations": [ + "783:13:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "783:13:41" + }, + "id": 8997, + "nodeType": "InheritanceSpecifier", + "src": "783:13:41" + }, + { + "baseName": { + "id": 8998, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "798:26:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3137, + "src": "798:26:41" + }, + "id": 8999, + "nodeType": "InheritanceSpecifier", + "src": "798:26:41" + } + ], + "canonicalName": "ChequeManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 8995, + "nodeType": "StructuredDocumentation", + "src": "561:186:41", + "text": " @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n EIP712 Domain name & version:\n DOMAIN_NAME = \"CaminoMessenger\"\n DOMAIN_VERSION= \"1\"" + }, + "fullyImplemented": false, + "id": 9656, + "linearizedBaseContracts": [ + 9656, + 3137, + 817 + ], + "name": "ChequeManager", + "nameLocation": "766:13:41", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9002, + "libraryName": { + "id": 9000, + "name": "ECDSA", + "nameLocations": [ + "837:5:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5988, + "src": "837:5:41" + }, + "nodeType": "UsingForDirective", + "src": "831:24:41", + "typeName": { + "id": 9001, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "847:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 9005, + "libraryName": { + "id": 9003, + "name": "Address", + "nameLocations": [ + "866:7:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "866:7:41" + }, + "nodeType": "UsingForDirective", + "src": "860:34:41", + "typeName": { + "id": 9004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:15:41", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "constant": true, + "documentation": { + "id": 9006, + "nodeType": "StructuredDocumentation", + "src": "1073:282:41", + "text": " @notice Pre-computed hash of the MessengerCheque type\n ```\n keccak256(\n \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n );\n ```" + }, + "functionSelector": "0ede80d6", + "id": 9009, + "mutability": "constant", + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nameLocation": "1384:25:41", + "nodeType": "VariableDeclaration", + "scope": 9656, + "src": "1360:126:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1360:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307838376233386631333133333431363561633262333631663038393636633966636666336139353366613764396439633238363162376630623530343435626362", + "id": 9008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1420:66:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_61379487647325231975175870851730257698711870354100583579540121922932849269707_by_1", + "typeString": "int_const 6137...(69 digits omitted)...9707" + }, + "value": "0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb" + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 9010, + "nodeType": "StructuredDocumentation", + "src": "1493:176:41", + "text": " @notice Pre-computed hash of the EIP712Domain type\n ```\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n ```" + }, + "functionSelector": "20606b70", + "id": 9013, + "mutability": "constant", + "name": "DOMAIN_TYPEHASH", + "nameLocation": "1698:15:41", + "nodeType": "VariableDeclaration", + "scope": 9656, + "src": "1674:108:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9011, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1674:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863326638373837313736623861633662663732313562346164636331653036396266346162383264396162316466303561353761393164343235393335623665", + "id": 9012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1716:66:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_88187701965757127611417972872261012484978315436463057238817294743962586930030_by_1", + "typeString": "int_const 8818...(69 digits omitted)...0030" + }, + "value": "0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e" + }, + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.MessengerCheque", + "documentation": { + "id": 9014, + "nodeType": "StructuredDocumentation", + "src": "1962:66:41", + "text": " @notice Struct representing a Messenger Cheque." + }, + "id": 9029, + "members": [ + { + "constant": false, + "id": 9016, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "2074:13:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2066:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2066:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9018, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "2144:11:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2136:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2136:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9020, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "2216:5:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2208:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9019, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2208:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9022, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2290:7:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2282:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2282:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9024, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2361:6:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2353:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9026, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2417:9:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2409:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2409:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9028, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2480:9:41", + "nodeType": "VariableDeclaration", + "scope": 9029, + "src": "2472:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2472:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MessengerCheque", + "nameLocation": "2040:15:41", + "nodeType": "StructDefinition", + "scope": 9656, + "src": "2033:501:41", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.LastCashIn", + "documentation": { + "id": 9030, + "nodeType": "StructuredDocumentation", + "src": "2540:125:41", + "text": " @notice Struct for tracking the counter, amount and timestamps used for the last\n cash-in operation." + }, + "id": 9039, + "members": [ + { + "constant": false, + "id": 9032, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2706:7:41", + "nodeType": "VariableDeclaration", + "scope": 9039, + "src": "2698:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2698:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9034, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2731:6:41", + "nodeType": "VariableDeclaration", + "scope": 9039, + "src": "2723:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9033, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2723:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9036, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2755:9:41", + "nodeType": "VariableDeclaration", + "scope": 9039, + "src": "2747:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2747:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9038, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2782:9:41", + "nodeType": "VariableDeclaration", + "scope": 9039, + "src": "2774:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9037, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2774:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "LastCashIn", + "nameLocation": "2677:10:41", + "nodeType": "StructDefinition", + "scope": 9656, + "src": "2670:128:41", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.ChequeManagerStorage", + "documentation": { + "id": 9040, + "nodeType": "StructuredDocumentation", + "src": "2977:75:41", + "text": "@custom:storage-location erc7201:camino.messenger.storage.ChequeManager" + }, + "id": 9055, + "members": [ + { + "constant": false, + "id": 9048, + "mutability": "mutable", + "name": "_lastCashIns", + "nameLocation": "3286:12:41", + "nodeType": "VariableDeclaration", + "scope": 9055, + "src": "3221:77:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "typeName": { + "id": 9047, + "keyName": "fromBot", + "keyNameLocation": "3237:7:41", + "keyType": { + "id": 9042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3229:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3221:64:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 9046, + "keyName": "toBot", + "keyNameLocation": "3264:5:41", + "keyType": { + "id": 9043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3256:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3248:36:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 9045, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9044, + "name": "LastCashIn", + "nameLocations": [ + "3273:10:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9039, + "src": "3273:10:41" + }, + "referencedDeclaration": 9039, + "src": "3273:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9051, + "mutability": "mutable", + "name": "_totalChequePayments", + "nameLocation": "3409:20:41", + "nodeType": "VariableDeclaration", + "scope": 9055, + "src": "3401:28:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3401:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9054, + "mutability": "mutable", + "name": "_domainSeparator", + "nameLocation": "3627:16:41", + "nodeType": "VariableDeclaration", + "scope": 9055, + "src": "3619:24:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3619:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "ChequeManagerStorage", + "nameLocation": "3064:20:41", + "nodeType": "StructDefinition", + "scope": 9656, + "src": "3057:593:41", + "visibility": "public" + }, + { + "constant": true, + "id": 9058, + "mutability": "constant", + "name": "ChequeManagerStorageLocation", + "nameLocation": "3803:28:41", + "nodeType": "VariableDeclaration", + "scope": 9656, + "src": "3778:130:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9056, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3778:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307831373566376534303064343261663434643965626432346539656665653861326334656437386464663436613833653531613439336165333832633837363030", + "id": 9057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3842:66:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_10571917335441848015806150972609186766746024588459916864546385697503913211392_by_1", + "typeString": "int_const 1057...(69 digits omitted)...1392" + }, + "value": "0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600" + }, + "visibility": "private" + }, + { + "body": { + "id": 9065, + "nodeType": "Block", + "src": "4005:87:41", + "statements": [ + { + "AST": { + "nativeSrc": "4024:62:41", + "nodeType": "YulBlock", + "src": "4024:62:41", + "statements": [ + { + "nativeSrc": "4038:38:41", + "nodeType": "YulAssignment", + "src": "4038:38:41", + "value": { + "name": "ChequeManagerStorageLocation", + "nativeSrc": "4048:28:41", + "nodeType": "YulIdentifier", + "src": "4048:28:41" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "4038:6:41", + "nodeType": "YulIdentifier", + "src": "4038:6:41" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 9062, + "isOffset": false, + "isSlot": true, + "src": "4038:6:41", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 9058, + "isOffset": false, + "isSlot": false, + "src": "4048:28:41", + "valueSize": 1 + } + ], + "id": 9064, + "nodeType": "InlineAssembly", + "src": "4015:71:41" + } + ] + }, + "id": 9066, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getChequeManagerStorage", + "nameLocation": "3924:24:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9059, + "nodeType": "ParameterList", + "parameters": [], + "src": "3948:2:41" + }, + "returnParameters": { + "id": 9063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9062, + "mutability": "mutable", + "name": "$", + "nameLocation": "4002:1:41", + "nodeType": "VariableDeclaration", + "scope": 9066, + "src": "3973:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9061, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9060, + "name": "ChequeManagerStorage", + "nameLocations": [ + "3973:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "3973:20:41" + }, + "referencedDeclaration": 9055, + "src": "3973:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3972:32:41" + }, + "scope": 9656, + "src": "3915:177:41", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 9067, + "nodeType": "StructuredDocumentation", + "src": "4271:84:41", + "text": " @notice Cheque verified event. Emitted when a cheque is verified." + }, + "eventSelector": "b2a9b85887fc8b5583c36b8abdbcee05214634356efab6bd2a49a3e9ed4ba1a5", + "id": 9083, + "name": "ChequeVerified", + "nameLocation": "4366:14:41", + "nodeType": "EventDefinition", + "parameters": { + "id": 9082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9069, + "indexed": true, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "4406:13:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4390:29:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4390:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9071, + "indexed": true, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "4445:11:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4429:27:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4429:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9073, + "indexed": false, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "4474:7:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4466:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4466:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9075, + "indexed": false, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "4499:5:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4491:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4491:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9077, + "indexed": false, + "mutability": "mutable", + "name": "counter", + "nameLocation": "4522:7:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4514:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4514:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9079, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4547:6:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4539:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4539:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9081, + "indexed": false, + "mutability": "mutable", + "name": "payment", + "nameLocation": "4571:7:41", + "nodeType": "VariableDeclaration", + "scope": 9083, + "src": "4563:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4563:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4380:204:41" + }, + "src": "4360:225:41" + }, + { + "anonymous": false, + "documentation": { + "id": 9084, + "nodeType": "StructuredDocumentation", + "src": "4591:77:41", + "text": " @notice Cash-in event. Emitted when a cheque is cashed in." + }, + "eventSelector": "7518bccc58ad7b6eb0ba4b9e696d83bfc6252df80a4e9cf24e64b10be21ecde4", + "id": 9096, + "name": "ChequeCashedIn", + "nameLocation": "4679:14:41", + "nodeType": "EventDefinition", + "parameters": { + "id": 9095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9086, + "indexed": true, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "4719:7:41", + "nodeType": "VariableDeclaration", + "scope": 9096, + "src": "4703:23:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4703:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9088, + "indexed": true, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "4752:5:41", + "nodeType": "VariableDeclaration", + "scope": 9096, + "src": "4736:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4736:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9090, + "indexed": false, + "mutability": "mutable", + "name": "counter", + "nameLocation": "4775:7:41", + "nodeType": "VariableDeclaration", + "scope": 9096, + "src": "4767:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9089, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4767:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9092, + "indexed": false, + "mutability": "mutable", + "name": "paid", + "nameLocation": "4800:4:41", + "nodeType": "VariableDeclaration", + "scope": 9096, + "src": "4792:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4792:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9094, + "indexed": false, + "mutability": "mutable", + "name": "developerFee", + "nameLocation": "4822:12:41", + "nodeType": "VariableDeclaration", + "scope": 9096, + "src": "4814:20:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4814:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4693:147:41" + }, + "src": "4673:168:41" + }, + { + "documentation": { + "id": 9097, + "nodeType": "StructuredDocumentation", + "src": "5020:102:41", + "text": " @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`." + }, + "errorSelector": "7b7d696f", + "id": 9101, + "name": "InvalidFromCMAccount", + "nameLocation": "5133:20:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9099, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "5162:13:41", + "nodeType": "VariableDeclaration", + "scope": 9101, + "src": "5154:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5154:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5153:23:41" + }, + "src": "5127:50:41" + }, + { + "documentation": { + "id": 9102, + "nodeType": "StructuredDocumentation", + "src": "5183:94:41", + "text": " @notice `toCMAccount` address is not a registered CMAccount on the manager." + }, + "errorSelector": "3f2c64af", + "id": 9106, + "name": "InvalidToCMAccount", + "nameLocation": "5288:18:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9104, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "5315:11:41", + "nodeType": "VariableDeclaration", + "scope": 9106, + "src": "5307:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5307:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5306:21:41" + }, + "src": "5282:46:41" + }, + { + "documentation": { + "id": 9107, + "nodeType": "StructuredDocumentation", + "src": "5334:68:41", + "text": " @notice The signer is not allowed to sign cheques" + }, + "errorSelector": "491a203a", + "id": 9111, + "name": "NotAllowedToSignCheques", + "nameLocation": "5413:23:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9109, + "mutability": "mutable", + "name": "signer", + "nameLocation": "5445:6:41", + "nodeType": "VariableDeclaration", + "scope": 9111, + "src": "5437:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5437:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5436:16:41" + }, + "src": "5407:46:41" + }, + { + "documentation": { + "id": 9112, + "nodeType": "StructuredDocumentation", + "src": "5459:138:41", + "text": " @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n recorded counter." + }, + "errorSelector": "44ac9202", + "id": 9118, + "name": "InvalidCounter", + "nameLocation": "5608:14:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9114, + "mutability": "mutable", + "name": "chequeCounter", + "nameLocation": "5631:13:41", + "nodeType": "VariableDeclaration", + "scope": 9118, + "src": "5623:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5623:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9116, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "5654:11:41", + "nodeType": "VariableDeclaration", + "scope": 9118, + "src": "5646:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5646:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5622:44:41" + }, + "src": "5602:65:41" + }, + { + "documentation": { + "id": 9119, + "nodeType": "StructuredDocumentation", + "src": "5673:82:41", + "text": " @notice Last recorded amount is lower than the cheque's amount." + }, + "errorSelector": "7c83fcf0", + "id": 9125, + "name": "InvalidAmount", + "nameLocation": "5766:13:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9121, + "mutability": "mutable", + "name": "chequeAmount", + "nameLocation": "5788:12:41", + "nodeType": "VariableDeclaration", + "scope": 9125, + "src": "5780:20:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5780:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9123, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "5810:10:41", + "nodeType": "VariableDeclaration", + "scope": 9125, + "src": "5802:18:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5802:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5779:42:41" + }, + "src": "5760:62:41" + }, + { + "documentation": { + "id": 9126, + "nodeType": "StructuredDocumentation", + "src": "5828:72:41", + "text": " @notice The cheque is expired at the given timestamp." + }, + "errorSelector": "6453b2e5", + "id": 9130, + "name": "ChequeExpired", + "nameLocation": "5911:13:41", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9128, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "5933:9:41", + "nodeType": "VariableDeclaration", + "scope": 9130, + "src": "5925:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5925:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5924:19:41" + }, + "src": "5905:39:41" + }, + { + "body": { + "id": 9161, + "nodeType": "Block", + "src": "6430:229:41", + "statements": [ + { + "assignments": [ + 9138 + ], + "declarations": [ + { + "constant": false, + "id": 9138, + "mutability": "mutable", + "name": "$", + "nameLocation": "6469:1:41", + "nodeType": "VariableDeclaration", + "scope": 9161, + "src": "6440:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9137, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9136, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6440:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "6440:20:41" + }, + "referencedDeclaration": 9055, + "src": "6440:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9141, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9139, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "6473:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6473:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6440:59:41" + }, + { + "expression": { + "id": 9159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9142, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9138, + "src": "6510:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9144, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6512:16:41", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 9054, + "src": "6510:18:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 9148, + "name": "DOMAIN_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9013, + "src": "6565:15:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "43616d696e6f4d657373656e676572", + "id": 9150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6592:17:41", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + }, + "value": "CaminoMessenger" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + } + ], + "id": 9149, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6582:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6582:28:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 9153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6622:3:41", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 9152, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6612:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6612:14:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 9155, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6628:5:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 9156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6634:7:41", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "6628:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9146, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6554:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6558:6:41", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6554:10:41", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6554:88:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9145, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6531:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6531:121:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6510:142:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9160, + "nodeType": "ExpressionStatement", + "src": "6510:142:41" + } + ] + }, + "documentation": { + "id": 9131, + "nodeType": "StructuredDocumentation", + "src": "6123:244:41", + "text": " @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n the domain.\n EIP712Domain {\n string name;\n string version;\n uint256 chainid;\n }" + }, + "id": 9162, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 9134, + "kind": "modifierInvocation", + "modifierName": { + "id": 9133, + "name": "onlyInitializing", + "nameLocations": [ + "6413:16:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "6413:16:41" + }, + "nodeType": "ModifierInvocation", + "src": "6413:16:41" + } + ], + "name": "__ChequeManager_init", + "nameLocation": "6381:20:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9132, + "nodeType": "ParameterList", + "parameters": [], + "src": "6401:2:41" + }, + "returnParameters": { + "id": 9135, + "nodeType": "ParameterList", + "parameters": [], + "src": "6430:0:41" + }, + "scope": 9656, + "src": "6372:287:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9177, + "nodeType": "Block", + "src": "6786:111:41", + "statements": [ + { + "assignments": [ + 9170 + ], + "declarations": [ + { + "constant": false, + "id": 9170, + "mutability": "mutable", + "name": "$", + "nameLocation": "6825:1:41", + "nodeType": "VariableDeclaration", + "scope": 9177, + "src": "6796:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9169, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9168, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6796:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "6796:20:41" + }, + "referencedDeclaration": 9055, + "src": "6796:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9173, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9171, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "6829:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6829:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6796:59:41" + }, + { + "expression": { + "expression": { + "id": 9174, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9170, + "src": "6872:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9175, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6874:16:41", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 9054, + "src": "6872:18:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9167, + "id": 9176, + "nodeType": "Return", + "src": "6865:25:41" + } + ] + }, + "documentation": { + "id": 9163, + "nodeType": "StructuredDocumentation", + "src": "6665:56:41", + "text": " @notice Returns the domain separator." + }, + "functionSelector": "ed24911d", + "id": 9178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDomainSeparator", + "nameLocation": "6735:18:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9164, + "nodeType": "ParameterList", + "parameters": [], + "src": "6753:2:41" + }, + "returnParameters": { + "id": 9167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9166, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9178, + "src": "6777:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9165, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6777:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6776:9:41" + }, + "scope": 9656, + "src": "6726:171:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9212, + "nodeType": "Block", + "src": "7276:366:41", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 9201, + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9009, + "src": "7364:25:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9202, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9181, + "src": "7411:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9203, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9183, + "src": "7446:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9204, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9185, + "src": "7479:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9205, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9187, + "src": "7506:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9206, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9189, + "src": "7535:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9207, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9191, + "src": "7563:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9208, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9193, + "src": "7594:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9199, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7332:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7336:6:41", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "7332:10:41", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7332:289:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9198, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7305:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7305:330:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9197, + "id": 9211, + "nodeType": "Return", + "src": "7286:349:41" + } + ] + }, + "documentation": { + "id": 9179, + "nodeType": "StructuredDocumentation", + "src": "6903:117:41", + "text": " @notice Returns the hash of the `MessengerCheque` encoded with\n `MESSENGER_CHEQUE_TYPEHASH`." + }, + "functionSelector": "4781ae53", + "id": 9213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashMessengerCheque", + "nameLocation": "7034:19:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9181, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "7071:13:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7063:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7063:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9183, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "7102:11:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7094:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7094:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9185, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "7131:5:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7123:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7123:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9187, + "mutability": "mutable", + "name": "counter", + "nameLocation": "7154:7:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7146:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7146:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9189, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7179:6:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7171:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7171:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9191, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "7203:9:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7195:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7195:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9193, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7230:9:41", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7222:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7222:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7053:192:41" + }, + "returnParameters": { + "id": 9197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9196, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "7267:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9195, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7267:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7266:9:41" + }, + "scope": 9656, + "src": "7025:617:41", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9251, + "nodeType": "Block", + "src": "8011:300:41", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 9236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8105:10:41", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9237, + "name": "getDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9178, + "src": "8137:18:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 9238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8137:20:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 9240, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9216, + "src": "8199:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9241, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9218, + "src": "8214:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9242, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9220, + "src": "8227:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9243, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9222, + "src": "8234:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9244, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9224, + "src": "8243:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9245, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9226, + "src": "8251:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9246, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9228, + "src": "8262:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9239, + "name": "hashMessengerCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9213, + "src": "8179:19:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8179:93:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 9234, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8067:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8071:12:41", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "8067:16:41", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 9248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8067:223:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9233, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8040:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8040:264:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9232, + "id": 9250, + "nodeType": "Return", + "src": "8021:283:41" + } + ] + }, + "documentation": { + "id": 9214, + "nodeType": "StructuredDocumentation", + "src": "7648:111:41", + "text": " @notice Returns the hash of the typed data (cheque) with prefix and domain\n separator." + }, + "functionSelector": "c7b5914f", + "id": 9252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashTypedDataV4", + "nameLocation": "7773:15:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9216, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "7806:13:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7798:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7798:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9218, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "7837:11:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7829:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7829:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9220, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "7866:5:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7858:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7858:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9222, + "mutability": "mutable", + "name": "counter", + "nameLocation": "7889:7:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7881:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7881:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9224, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7914:6:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7906:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7906:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9226, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "7938:9:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7930:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7930:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9228, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7965:9:41", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "7957:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7957:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7788:192:41" + }, + "returnParameters": { + "id": 9232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9231, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9252, + "src": "8002:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8002:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8001:9:41" + }, + "scope": 9656, + "src": "7764:547:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9295, + "nodeType": "Block", + "src": "8740:190:41", + "statements": [ + { + "assignments": [ + 9275 + ], + "declarations": [ + { + "constant": false, + "id": 9275, + "mutability": "mutable", + "name": "digest", + "nameLocation": "8758:6:41", + "nodeType": "VariableDeclaration", + "scope": 9295, + "src": "8750:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8750:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 9285, + "initialValue": { + "arguments": [ + { + "id": 9277, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9255, + "src": "8783:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9278, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9257, + "src": "8798:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9279, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9259, + "src": "8811:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9280, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9261, + "src": "8818:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9281, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9263, + "src": "8827:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9282, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9265, + "src": "8835:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9283, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9267, + "src": "8846:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9276, + "name": "hashTypedDataV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9252, + "src": "8767:15:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 9284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8767:89:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8750:106:41" + }, + { + "expression": { + "id": 9291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9286, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9272, + "src": "8866:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9289, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9269, + "src": "8890:9:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 9287, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9275, + "src": "8875:6:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8882:7:41", + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 5744, + "src": "8875:14:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 9290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8875:25:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8866:34:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9292, + "nodeType": "ExpressionStatement", + "src": "8866:34:41" + }, + { + "expression": { + "id": 9293, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9272, + "src": "8917:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 9273, + "id": 9294, + "nodeType": "Return", + "src": "8910:13:41" + } + ] + }, + "documentation": { + "id": 9253, + "nodeType": "StructuredDocumentation", + "src": "8317:132:41", + "text": " @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n recover the signer." + }, + "id": 9296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recoverSigner", + "nameLocation": "8463:13:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9255, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "8494:13:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8486:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8486:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9257, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "8525:11:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8517:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8517:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9259, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "8554:5:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8546:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8546:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9261, + "mutability": "mutable", + "name": "counter", + "nameLocation": "8577:7:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8569:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9260, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8569:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9263, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8602:6:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8594:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8594:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9265, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "8626:9:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8618:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8618:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9267, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "8653:9:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8645:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8645:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9269, + "mutability": "mutable", + "name": "signature", + "nameLocation": "8685:9:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8672:22:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9268, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8672:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8476:224:41" + }, + "returnParameters": { + "id": 9273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9272, + "mutability": "mutable", + "name": "signer", + "nameLocation": "8732:6:41", + "nodeType": "VariableDeclaration", + "scope": 9296, + "src": "8724:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8724:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8723:16:41" + }, + "scope": 9656, + "src": "8454:476:41", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9430, + "nodeType": "Block", + "src": "9708:1496:41", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9320, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9299, + "src": "9775:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 9323, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9800:4:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ChequeManager_$9656", + "typeString": "contract ChequeManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ChequeManager_$9656", + "typeString": "contract ChequeManager" + } + ], + "id": 9322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9792:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9792:7:41", + "typeDescriptions": {} + } + }, + "id": 9324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9792:13:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9775:30:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9331, + "nodeType": "IfStatement", + "src": "9771:103:41", + "trueBody": { + "id": 9330, + "nodeType": "Block", + "src": "9807:67:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9327, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9299, + "src": "9849:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9326, + "name": "InvalidFromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9101, + "src": "9828:20:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 9328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9828:35:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9329, + "nodeType": "RevertStatement", + "src": "9821:42:41" + } + ] + } + }, + { + "condition": { + "id": 9339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9942:64:41", + "subExpression": { + "arguments": [ + { + "id": 9337, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9301, + "src": "9994:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9333, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9655, + "src": "9961:17:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 9334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9961:19:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9332, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "9943:17:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 9335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9943:38:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 9336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9982:11:41", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11857, + "src": "9943:50:41", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 9338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9943:63:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9345, + "nodeType": "IfStatement", + "src": "9938:133:41", + "trueBody": { + "id": 9344, + "nodeType": "Block", + "src": "10008:63:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9341, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9301, + "src": "10048:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9340, + "name": "InvalidToCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9106, + "src": "10029:18:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 9342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10029:31:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9343, + "nodeType": "RevertStatement", + "src": "10022:38:41" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 9346, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "10128:5:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 9347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10134:9:41", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "10128:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 9348, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9311, + "src": "10147:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10128:28:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9355, + "nodeType": "IfStatement", + "src": "10124:90:41", + "trueBody": { + "id": 9354, + "nodeType": "Block", + "src": "10158:56:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9351, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9311, + "src": "10193:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9350, + "name": "ChequeExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9130, + "src": "10179:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 9352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10179:24:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9353, + "nodeType": "RevertStatement", + "src": "10172:31:41" + } + ] + } + }, + { + "expression": { + "id": 9367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9356, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9316, + "src": "10250:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9358, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9299, + "src": "10273:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9359, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9301, + "src": "10288:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9360, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9303, + "src": "10301:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9361, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9305, + "src": "10308:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9362, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9307, + "src": "10317:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9363, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9309, + "src": "10325:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9364, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9311, + "src": "10336:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9365, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9313, + "src": "10347:9:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9357, + "name": "recoverSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9296, + "src": "10259:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address)" + } + }, + "id": 9366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10259:98:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10250:107:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9368, + "nodeType": "ExpressionStatement", + "src": "10250:107:41" + }, + { + "condition": { + "id": 9372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10422:21:41", + "subExpression": { + "arguments": [ + { + "id": 9370, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9316, + "src": "10436:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9369, + "name": "isBotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9649, + "src": "10423:12:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 9371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10423:20:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9378, + "nodeType": "IfStatement", + "src": "10418:90:41", + "trueBody": { + "id": 9377, + "nodeType": "Block", + "src": "10445:63:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9374, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9316, + "src": "10490:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9373, + "name": "NotAllowedToSignCheques", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9111, + "src": "10466:23:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 9375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10466:31:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9376, + "nodeType": "RevertStatement", + "src": "10459:38:41" + } + ] + } + }, + { + "assignments": [ + 9381 + ], + "declarations": [ + { + "constant": false, + "id": 9381, + "mutability": "mutable", + "name": "$", + "nameLocation": "10547:1:41", + "nodeType": "VariableDeclaration", + "scope": 9430, + "src": "10518:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9380, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9379, + "name": "ChequeManagerStorage", + "nameLocations": [ + "10518:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "10518:20:41" + }, + "referencedDeclaration": 9055, + "src": "10518:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9384, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9382, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "10551:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10551:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10518:59:41" + }, + { + "assignments": [ + 9387 + ], + "declarations": [ + { + "constant": false, + "id": 9387, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "10606:10:41", + "nodeType": "VariableDeclaration", + "scope": 9430, + "src": "10587:29:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 9386, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9385, + "name": "LastCashIn", + "nameLocations": [ + "10587:10:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9039, + "src": "10587:10:41" + }, + "referencedDeclaration": 9039, + "src": "10587:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 9394, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 9388, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9381, + "src": "10619:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9389, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10621:12:41", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 9048, + "src": "10619:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 9391, + "indexExpression": { + "id": 9390, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9316, + "src": "10634:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10619:22:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 9393, + "indexExpression": { + "id": 9392, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9303, + "src": "10642:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10619:29:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10587:61:41" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9395, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9307, + "src": "10741:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 9396, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "10750:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9397, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10761:6:41", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "10750:17:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10741:26:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9406, + "nodeType": "IfStatement", + "src": "10737:104:41", + "trueBody": { + "id": 9405, + "nodeType": "Block", + "src": "10769:72:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9400, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9307, + "src": "10804:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9401, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "10812:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10823:6:41", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "10812:17:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9399, + "name": "InvalidAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9125, + "src": "10790:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 9403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10790:40:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9404, + "nodeType": "RevertStatement", + "src": "10783:47:41" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9407, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9305, + "src": "10940:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 9408, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "10951:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10962:7:41", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 9032, + "src": "10951:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10940:29:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9418, + "nodeType": "IfStatement", + "src": "10936:110:41", + "trueBody": { + "id": 9417, + "nodeType": "Block", + "src": "10971:75:41", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9412, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9305, + "src": "11007:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9413, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "11016:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11027:7:41", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 9032, + "src": "11016:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9411, + "name": "InvalidCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9118, + "src": "10992:14:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 9415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10992:43:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9416, + "nodeType": "RevertStatement", + "src": "10985:50:41" + } + ] + } + }, + { + "expression": { + "id": 9424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9419, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9318, + "src": "11114:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9420, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9307, + "src": "11130:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 9421, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "11139:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11150:6:41", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "11139:17:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11130:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11114:42:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9425, + "nodeType": "ExpressionStatement", + "src": "11114:42:41" + }, + { + "expression": { + "components": [ + { + "id": 9426, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9316, + "src": "11175:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9427, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9318, + "src": "11183:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9428, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11174:23:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 9319, + "id": 9429, + "nodeType": "Return", + "src": "11167:30:41" + } + ] + }, + "documentation": { + "id": 9297, + "nodeType": "StructuredDocumentation", + "src": "8936:461:41", + "text": " @notice Returns signer and payment amount if the signature is valid for the\n given cheque, the signer is an allowed bot, cheque counter and amounts are\n valid according to last cash ins.\n Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n long as the last amount is lower than the cheque amount. Only the difference\n between the cheque amount and the last recorded amount is paid." + }, + "functionSelector": "21b9b929", + "id": 9431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCheque", + "nameLocation": "9411:12:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9299, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "9441:13:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9433:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9433:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9301, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "9472:11:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9464:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9464:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9303, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "9501:5:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9493:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9302, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9493:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9305, + "mutability": "mutable", + "name": "counter", + "nameLocation": "9524:7:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9516:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9516:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9307, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9549:6:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9541:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9541:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9309, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "9573:9:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9565:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9565:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9311, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "9600:9:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9592:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9592:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9313, + "mutability": "mutable", + "name": "signature", + "nameLocation": "9632:9:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9619:22:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9312, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9619:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9423:224:41" + }, + "returnParameters": { + "id": 9319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9316, + "mutability": "mutable", + "name": "signer", + "nameLocation": "9677:6:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9669:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9669:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9318, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "9693:13:41", + "nodeType": "VariableDeclaration", + "scope": 9431, + "src": "9685:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9685:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9668:39:41" + }, + "scope": 9656, + "src": "9402:1802:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9543, + "nodeType": "Block", + "src": "12357:1542:41", + "statements": [ + { + "assignments": [ + 9454, + 9456 + ], + "declarations": [ + { + "constant": false, + "id": 9454, + "mutability": "mutable", + "name": "signer", + "nameLocation": "12443:6:41", + "nodeType": "VariableDeclaration", + "scope": 9543, + "src": "12435:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12435:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9456, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "12459:13:41", + "nodeType": "VariableDeclaration", + "scope": 9543, + "src": "12451:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12451:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9467, + "initialValue": { + "arguments": [ + { + "id": 9458, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9434, + "src": "12502:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9459, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "12529:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9460, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9438, + "src": "12554:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9461, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9440, + "src": "12573:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9462, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9442, + "src": "12594:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9463, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9444, + "src": "12614:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9464, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9446, + "src": "12637:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9465, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9448, + "src": "12660:9:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9457, + "name": "verifyCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9431, + "src": "12476:12:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address,uint256)" + } + }, + "id": 9466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12476:203:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12434:245:41" + }, + { + "expression": { + "arguments": [ + { + "id": 9469, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9454, + "src": "12820:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9470, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9438, + "src": "12828:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9471, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9440, + "src": "12835:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9472, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9442, + "src": "12844:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9473, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9444, + "src": "12852:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9474, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9446, + "src": "12863:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9468, + "name": "setLastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9625, + "src": "12806:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 9475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12806:67:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9476, + "nodeType": "ExpressionStatement", + "src": "12806:67:41" + }, + { + "assignments": [ + 9478 + ], + "declarations": [ + { + "constant": false, + "id": 9478, + "mutability": "mutable", + "name": "developerFee", + "nameLocation": "13002:12:41", + "nodeType": "VariableDeclaration", + "scope": 9543, + "src": "12994:20:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12994:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9490, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9479, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9456, + "src": "13018:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9481, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9655, + "src": "13052:17:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 9482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13052:19:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9480, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "13034:17:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 9483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13034:38:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 9484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13073:17:41", + "memberName": "getDeveloperFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 11845, + "src": "13034:56:41", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 9485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13034:58:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13018:74:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9487, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13017:76:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130303030", + "id": 9488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13096:5:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "13017:84:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12994:107:41" + }, + { + "assignments": [ + 9492 + ], + "declarations": [ + { + "constant": false, + "id": 9492, + "mutability": "mutable", + "name": "chequePaymentAmount", + "nameLocation": "13174:19:41", + "nodeType": "VariableDeclaration", + "scope": 9543, + "src": "13166:27:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13166:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9496, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9493, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9456, + "src": "13196:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9494, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9478, + "src": "13212:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13196:28:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13166:58:41" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9497, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9434, + "src": "13317:13:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9498, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "13334:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13317:28:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9513, + "nodeType": "IfStatement", + "src": "13313:171:41", + "trueBody": { + "id": 9512, + "nodeType": "Block", + "src": "13347:137:41", + "statements": [ + { + "assignments": [ + 9502 + ], + "declarations": [ + { + "constant": false, + "id": 9502, + "mutability": "mutable", + "name": "$", + "nameLocation": "13390:1:41", + "nodeType": "VariableDeclaration", + "scope": 9512, + "src": "13361:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9501, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9500, + "name": "ChequeManagerStorage", + "nameLocations": [ + "13361:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "13361:20:41" + }, + "referencedDeclaration": 9055, + "src": "13361:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9505, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9503, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "13394:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13394:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13361:59:41" + }, + { + "expression": { + "id": 9510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9506, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9502, + "src": "13434:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9508, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13436:20:41", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 9051, + "src": "13434:22:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 9509, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9456, + "src": "13460:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13434:39:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9511, + "nodeType": "ExpressionStatement", + "src": "13434:39:41" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 9524, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9478, + "src": "13631:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9517, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9655, + "src": "13578:17:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 9518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13578:19:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9516, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "13560:17:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 9519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13560:38:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 9520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13599:18:41", + "memberName": "getDeveloperWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11850, + "src": "13560:57:41", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 9521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13560:59:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13552:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 9514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13552:8:41", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 9522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13552:68:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 9523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13621:9:41", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "13552:78:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 9525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13552:92:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9526, + "nodeType": "ExpressionStatement", + "src": "13552:92:41" + }, + { + "expression": { + "arguments": [ + { + "id": 9532, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9492, + "src": "13753:19:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 9529, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "13730:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13722:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 9527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13722:8:41", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 9530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13722:20:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 9531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13743:9:41", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "13722:30:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 9533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13722:51:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9534, + "nodeType": "ExpressionStatement", + "src": "13722:51:41" + }, + { + "eventCall": { + "arguments": [ + { + "id": 9536, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9454, + "src": "13834:6:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9537, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9438, + "src": "13842:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9538, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9440, + "src": "13849:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9539, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9492, + "src": "13858:19:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9540, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9478, + "src": "13879:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9535, + "name": "ChequeCashedIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9096, + "src": "13819:14:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256)" + } + }, + "id": 9541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13819:73:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9542, + "nodeType": "EmitStatement", + "src": "13814:78:41" + } + ] + }, + "documentation": { + "id": 9432, + "nodeType": "StructuredDocumentation", + "src": "11210:876:41", + "text": " @notice Cash in a cheque by verifying it and paying the difference between the\n cheque amount and the last recorded amount for the signer and `toBot` pair.\n A percentage of the amount is also paid to the developer wallet.\n @param fromCMAccount The CM Account that will pay the amount. This contract.\n @param toCMAccount The CM Account that will receive the amount.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque. Should be increased with every\n cheque.\n @param amount The amount on the cheque. Should be greater then or equal the\n last recorded amount.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque.\n @param signature The signature of the cheque." + }, + "functionSelector": "647d8f6d", + "id": 9544, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 9451, + "kind": "modifierInvocation", + "modifierName": { + "id": 9450, + "name": "nonReentrant", + "nameLocations": [ + "12344:12:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "12344:12:41" + }, + "nodeType": "ModifierInvocation", + "src": "12344:12:41" + } + ], + "name": "cashInCheque", + "nameLocation": "12100:12:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9434, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "12130:13:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12122:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12122:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9436, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "12161:11:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12153:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9435, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12153:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9438, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "12190:5:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12182:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12182:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9440, + "mutability": "mutable", + "name": "counter", + "nameLocation": "12213:7:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12205:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12205:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9442, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12238:6:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12230:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12230:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9444, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "12262:9:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12254:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12254:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9446, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "12289:9:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12281:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12281:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9448, + "mutability": "mutable", + "name": "signature", + "nameLocation": "12321:9:41", + "nodeType": "VariableDeclaration", + "scope": 9544, + "src": "12308:22:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9447, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12308:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "12112:224:41" + }, + "returnParameters": { + "id": 9452, + "nodeType": "ParameterList", + "parameters": [], + "src": "12357:0:41" + }, + "scope": 9656, + "src": "12091:1808:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9586, + "nodeType": "Block", + "src": "14676:248:41", + "statements": [ + { + "assignments": [ + 9562 + ], + "declarations": [ + { + "constant": false, + "id": 9562, + "mutability": "mutable", + "name": "$", + "nameLocation": "14715:1:41", + "nodeType": "VariableDeclaration", + "scope": 9586, + "src": "14686:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9561, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9560, + "name": "ChequeManagerStorage", + "nameLocations": [ + "14686:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "14686:20:41" + }, + "referencedDeclaration": 9055, + "src": "14686:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9565, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9563, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "14719:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14719:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14686:59:41" + }, + { + "assignments": [ + 9568 + ], + "declarations": [ + { + "constant": false, + "id": 9568, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "14774:10:41", + "nodeType": "VariableDeclaration", + "scope": 9586, + "src": "14755:29:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 9567, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9566, + "name": "LastCashIn", + "nameLocations": [ + "14755:10:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9039, + "src": "14755:10:41" + }, + "referencedDeclaration": 9039, + "src": "14755:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 9575, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 9569, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9562, + "src": "14787:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9570, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14789:12:41", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 9048, + "src": "14787:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 9572, + "indexExpression": { + "id": 9571, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9547, + "src": "14802:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14787:23:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 9574, + "indexExpression": { + "id": 9573, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9549, + "src": "14811:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14787:30:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14755:62:41" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 9576, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9568, + "src": "14835:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14846:7:41", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 9032, + "src": "14835:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9578, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9568, + "src": "14855:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9579, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14866:6:41", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9034, + "src": "14855:17:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9580, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9568, + "src": "14874:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9581, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14885:9:41", + "memberName": "createdAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 9036, + "src": "14874:20:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9582, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9568, + "src": "14896:10:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 9583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14907:9:41", + "memberName": "expiresAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 9038, + "src": "14896:20:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9584, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14834:83:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 9559, + "id": 9585, + "nodeType": "Return", + "src": "14827:90:41" + } + ] + }, + "documentation": { + "id": 9545, + "nodeType": "StructuredDocumentation", + "src": "13905:581:41", + "text": " @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n @return lastCounter The last counter of the cheque.\n @return lastAmount The last amount of the cheque.\n @return lastCreatedAt The last creation timestamp of the cheque.\n @return lastExpiresAt The last expiration timestamp of the cheque." + }, + "functionSelector": "930659eb", + "id": 9587, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLastCashIn", + "nameLocation": "14500:13:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9547, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "14531:7:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14523:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14523:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9549, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "14556:5:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14548:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14548:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14513:54:41" + }, + "returnParameters": { + "id": 9559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9552, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "14597:11:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14589:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14589:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9554, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "14618:10:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14610:18:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14610:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9556, + "mutability": "mutable", + "name": "lastCreatedAt", + "nameLocation": "14638:13:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14630:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14630:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9558, + "mutability": "mutable", + "name": "lastExpiresAt", + "nameLocation": "14661:13:41", + "nodeType": "VariableDeclaration", + "scope": 9587, + "src": "14653:21:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14653:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14588:87:41" + }, + "scope": 9656, + "src": "14491:433:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9624, + "nodeType": "Block", + "src": "15568:168:41", + "statements": [ + { + "assignments": [ + 9605 + ], + "declarations": [ + { + "constant": false, + "id": 9605, + "mutability": "mutable", + "name": "$", + "nameLocation": "15607:1:41", + "nodeType": "VariableDeclaration", + "scope": 9624, + "src": "15578:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9604, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9603, + "name": "ChequeManagerStorage", + "nameLocations": [ + "15578:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "15578:20:41" + }, + "referencedDeclaration": 9055, + "src": "15578:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9608, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9606, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "15611:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15611:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15578:59:41" + }, + { + "expression": { + "id": 9622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 9609, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9605, + "src": "15647:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9613, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15649:12:41", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 9048, + "src": "15647:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 9614, + "indexExpression": { + "id": 9611, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9590, + "src": "15662:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15647:23:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$9039_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 9615, + "indexExpression": { + "id": 9612, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9592, + "src": "15671:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15647:30:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9617, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9594, + "src": "15691:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9618, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9596, + "src": "15700:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9619, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9598, + "src": "15708:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9620, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9600, + "src": "15719:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9616, + "name": "LastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9039, + "src": "15680:10:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_LastCashIn_$9039_storage_ptr_$", + "typeString": "type(struct ChequeManager.LastCashIn storage pointer)" + } + }, + "id": 9621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15680:49:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_memory_ptr", + "typeString": "struct ChequeManager.LastCashIn memory" + } + }, + "src": "15647:82:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$9039_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "id": 9623, + "nodeType": "ExpressionStatement", + "src": "15647:82:41" + } + ] + }, + "documentation": { + "id": 9588, + "nodeType": "StructuredDocumentation", + "src": "14930:444:41", + "text": " @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque.\n @param amount The amount of the cheque.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque." + }, + "id": 9625, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setLastCashIn", + "nameLocation": "15388:13:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9590, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "15419:7:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15411:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15411:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9592, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "15444:5:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15436:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15436:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9594, + "mutability": "mutable", + "name": "counter", + "nameLocation": "15467:7:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15459:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15459:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9596, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15492:6:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15484:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15484:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9598, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "15516:9:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15508:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15508:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9600, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "15543:9:41", + "nodeType": "VariableDeclaration", + "scope": 9625, + "src": "15535:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15535:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15401:157:41" + }, + "returnParameters": { + "id": 9602, + "nodeType": "ParameterList", + "parameters": [], + "src": "15568:0:41" + }, + "scope": 9656, + "src": "15379:357:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9640, + "nodeType": "Block", + "src": "15984:115:41", + "statements": [ + { + "assignments": [ + 9633 + ], + "declarations": [ + { + "constant": false, + "id": 9633, + "mutability": "mutable", + "name": "$", + "nameLocation": "16023:1:41", + "nodeType": "VariableDeclaration", + "scope": 9640, + "src": "15994:30:41", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 9632, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9631, + "name": "ChequeManagerStorage", + "nameLocations": [ + "15994:20:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9055, + "src": "15994:20:41" + }, + "referencedDeclaration": 9055, + "src": "15994:20:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9636, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9634, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9066, + "src": "16027:24:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$9055_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 9635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16027:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15994:59:41" + }, + { + "expression": { + "expression": { + "id": 9637, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "16070:1:41", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$9055_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 9638, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16072:20:41", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 9051, + "src": "16070:22:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9630, + "id": 9639, + "nodeType": "Return", + "src": "16063:29:41" + } + ] + }, + "documentation": { + "id": 9626, + "nodeType": "StructuredDocumentation", + "src": "15742:173:41", + "text": " @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n @return totalChequePayments The total cheque payments made." + }, + "functionSelector": "e96cf7ad", + "id": 9641, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTotalChequePayments", + "nameLocation": "15929:22:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9627, + "nodeType": "ParameterList", + "parameters": [], + "src": "15951:2:41" + }, + "returnParameters": { + "id": 9630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9629, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9641, + "src": "15975:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15975:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15974:9:41" + }, + "scope": 9656, + "src": "15920:179:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "documentation": { + "id": 9642, + "nodeType": "StructuredDocumentation", + "src": "16278:150:41", + "text": " @notice Abstract function to check if a bot is allowed to sign cheques. This\n must be implemented by the inheriting contract." + }, + "functionSelector": "e0b78add", + "id": 9649, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "16442:12:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9644, + "mutability": "mutable", + "name": "bot", + "nameLocation": "16463:3:41", + "nodeType": "VariableDeclaration", + "scope": 9649, + "src": "16455:11:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16455:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16454:13:41" + }, + "returnParameters": { + "id": 9648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9647, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9649, + "src": "16497:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9646, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16497:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16496:6:41" + }, + "scope": 9656, + "src": "16433:70:41", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "documentation": { + "id": 9650, + "nodeType": "StructuredDocumentation", + "src": "16509:132:41", + "text": " @notice Abstract function to get the manager address. This must be implemented\n by the inheriting contract." + }, + "functionSelector": "c162d7da", + "id": 9655, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "16655:17:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9651, + "nodeType": "ParameterList", + "parameters": [], + "src": "16672:2:41" + }, + "returnParameters": { + "id": 9654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9653, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9655, + "src": "16704:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16704:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16703:9:41" + }, + "scope": 9656, + "src": "16646:67:41", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 9657, + "src": "748:15967:41", + "usedErrors": [ + 580, + 583, + 3039, + 5000, + 5008, + 5651, + 5656, + 5661, + 9101, + 9106, + 9111, + 9118, + 9125, + 9130 + ], + "usedEvents": [ + 588, + 9083, + 9096 + ] + } + ], + "src": "78:16638:41" + }, + "id": 41 + }, + "contracts/account/GasMoneyManager.sol": { + "ast": { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "exportedSymbols": { + "Address": [ + 5245 + ], + "GasMoneyManager": [ + 9930 + ], + "Initializable": [ + 817 + ] + }, + "id": 9931, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9658, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "81:23:42" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 9660, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9931, + "sourceUnit": 818, + "src": "106:98:42", + "symbolAliases": [ + { + "foreign": { + "id": 9659, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "115:13:42", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 9662, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9931, + "sourceUnit": 5246, + "src": "205:68:42", + "symbolAliases": [ + { + "foreign": { + "id": 9661, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "214:7:42", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 9664, + "name": "Initializable", + "nameLocations": [ + "499:13:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "499:13:42" + }, + "id": 9665, + "nodeType": "InheritanceSpecifier", + "src": "499:13:42" + } + ], + "canonicalName": "GasMoneyManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 9663, + "nodeType": "StructuredDocumentation", + "src": "275:186:42", + "text": " @title GasMoneyManager\n @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n Gas money withdrawals are restricted to a withdrawal limit and period." + }, + "fullyImplemented": true, + "id": 9930, + "linearizedBaseContracts": [ + 9930, + 817 + ], + "name": "GasMoneyManager", + "nameLocation": "480:15:42", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9668, + "libraryName": { + "id": 9666, + "name": "Address", + "nameLocations": [ + "525:7:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "525:7:42" + }, + "nodeType": "UsingForDirective", + "src": "519:34:42", + "typeName": { + "id": 9667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "537:15:42", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "canonicalName": "GasMoneyManager.GasMoneyStorage", + "documentation": { + "id": 9669, + "nodeType": "StructuredDocumentation", + "src": "732:77:42", + "text": "@custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager" + }, + "id": 9682, + "members": [ + { + "constant": false, + "id": 9673, + "mutability": "mutable", + "name": "_withdrawalPeriodStart", + "nameLocation": "875:22:42", + "nodeType": "VariableDeclaration", + "scope": 9682, + "src": "847:50:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 9672, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 9670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "855:7:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "847:27:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 9671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9677, + "mutability": "mutable", + "name": "_withdrawnAmount", + "nameLocation": "935:16:42", + "nodeType": "VariableDeclaration", + "scope": 9682, + "src": "907:44:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 9676, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 9674, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "915:7:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "907:27:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 9675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9679, + "mutability": "mutable", + "name": "_withdrawalLimit", + "nameLocation": "969:16:42", + "nodeType": "VariableDeclaration", + "scope": 9682, + "src": "961:24:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "961:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9681, + "mutability": "mutable", + "name": "_withdrawalPeriod", + "nameLocation": "1003:17:42", + "nodeType": "VariableDeclaration", + "scope": 9682, + "src": "995:25:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "995:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "GasMoneyStorage", + "nameLocation": "821:15:42", + "nodeType": "StructDefinition", + "scope": 9930, + "src": "814:213:42", + "visibility": "public" + }, + { + "constant": true, + "id": 9685, + "mutability": "constant", + "name": "GasMoneyStorageLocation", + "nameLocation": "1182:23:42", + "nodeType": "VariableDeclaration", + "scope": 9930, + "src": "1157:125:42", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839396136353230363330383862366261646165623063376636383036373662616637323036353462346638366635303136373934343438396166363337643030", + "id": 9684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1216:66:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_69497728556064316839636333848025164220971012307620695743052787837524116733184_by_1", + "typeString": "int_const 6949...(69 digits omitted)...3184" + }, + "value": "0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00" + }, + "visibility": "private" + }, + { + "body": { + "id": 9692, + "nodeType": "Block", + "src": "1369:82:42", + "statements": [ + { + "AST": { + "nativeSrc": "1388:57:42", + "nodeType": "YulBlock", + "src": "1388:57:42", + "statements": [ + { + "nativeSrc": "1402:33:42", + "nodeType": "YulAssignment", + "src": "1402:33:42", + "value": { + "name": "GasMoneyStorageLocation", + "nativeSrc": "1412:23:42", + "nodeType": "YulIdentifier", + "src": "1412:23:42" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1402:6:42", + "nodeType": "YulIdentifier", + "src": "1402:6:42" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 9689, + "isOffset": false, + "isSlot": true, + "src": "1402:6:42", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 9685, + "isOffset": false, + "isSlot": false, + "src": "1412:23:42", + "valueSize": 1 + } + ], + "id": 9691, + "nodeType": "InlineAssembly", + "src": "1379:66:42" + } + ] + }, + "id": 9693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getGasMoneyStorage", + "nameLocation": "1298:19:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9686, + "nodeType": "ParameterList", + "parameters": [], + "src": "1317:2:42" + }, + "returnParameters": { + "id": 9690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9689, + "mutability": "mutable", + "name": "$", + "nameLocation": "1366:1:42", + "nodeType": "VariableDeclaration", + "scope": 9693, + "src": "1342:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9687, + "name": "GasMoneyStorage", + "nameLocations": [ + "1342:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "1342:15:42" + }, + "referencedDeclaration": 9682, + "src": "1342:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1341:27:42" + }, + "scope": 9930, + "src": "1289:162:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 9694, + "nodeType": "StructuredDocumentation", + "src": "1630:157:42", + "text": " @notice Gas money withdrawal event\n @param withdrawer the address of the withdrawer\n @param amount the amount withdrawn" + }, + "eventSelector": "b9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c2", + "id": 9700, + "name": "GasMoneyWithdrawal", + "nameLocation": "1798:18:42", + "nodeType": "EventDefinition", + "parameters": { + "id": 9699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9696, + "indexed": true, + "mutability": "mutable", + "name": "withdrawer", + "nameLocation": "1833:10:42", + "nodeType": "VariableDeclaration", + "scope": 9700, + "src": "1817:26:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1817:7:42", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9698, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1853:6:42", + "nodeType": "VariableDeclaration", + "scope": 9700, + "src": "1845:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1845:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1816:44:42" + }, + "src": "1792:69:42" + }, + { + "anonymous": false, + "documentation": { + "id": 9701, + "nodeType": "StructuredDocumentation", + "src": "1867:195:42", + "text": " @notice Gas money withdrawal limit and period updated event\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "eventSelector": "8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e", + "id": 9707, + "name": "GasMoneyWithdrawalUpdated", + "nameLocation": "2073:25:42", + "nodeType": "EventDefinition", + "parameters": { + "id": 9706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9703, + "indexed": false, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2107:5:42", + "nodeType": "VariableDeclaration", + "scope": 9707, + "src": "2099:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9702, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2099:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9705, + "indexed": false, + "mutability": "mutable", + "name": "period", + "nameLocation": "2122:6:42", + "nodeType": "VariableDeclaration", + "scope": 9707, + "src": "2114:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2114:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2098:31:42" + }, + "src": "2067:63:42" + }, + { + "errorSelector": "b945e2d8", + "id": 9713, + "name": "WithdrawalLimitExceeded", + "nameLocation": "2315:23:42", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9709, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2347:5:42", + "nodeType": "VariableDeclaration", + "scope": 9713, + "src": "2339:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9708, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2339:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9711, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2362:6:42", + "nodeType": "VariableDeclaration", + "scope": 9713, + "src": "2354:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2354:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2338:31:42" + }, + "src": "2309:61:42" + }, + { + "errorSelector": "d54b1887", + "id": 9719, + "name": "WithdrawalLimitExceededForPeriod", + "nameLocation": "2381:32:42", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9715, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2422:5:42", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "2414:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9714, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9717, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2437:6:42", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "2429:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9716, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2429:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2413:31:42" + }, + "src": "2375:70:42" + }, + { + "body": { + "id": 9746, + "nodeType": "Block", + "src": "2733:160:42", + "statements": [ + { + "assignments": [ + 9730 + ], + "declarations": [ + { + "constant": false, + "id": 9730, + "mutability": "mutable", + "name": "$", + "nameLocation": "2767:1:42", + "nodeType": "VariableDeclaration", + "scope": 9746, + "src": "2743:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9729, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9728, + "name": "GasMoneyStorage", + "nameLocations": [ + "2743:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "2743:15:42" + }, + "referencedDeclaration": 9682, + "src": "2743:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9733, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9731, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "2771:19:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$9682_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 9732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2771:21:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2743:49:42" + }, + { + "expression": { + "id": 9738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9734, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9730, + "src": "2802:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2804:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "2802:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9737, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9721, + "src": "2823:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2802:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9739, + "nodeType": "ExpressionStatement", + "src": "2802:36:42" + }, + { + "expression": { + "id": 9744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9740, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9730, + "src": "2848:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2850:17:42", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9681, + "src": "2848:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9743, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9723, + "src": "2870:16:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2848:38:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9745, + "nodeType": "ExpressionStatement", + "src": "2848:38:42" + } + ] + }, + "id": 9747, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 9726, + "kind": "modifierInvocation", + "modifierName": { + "id": 9725, + "name": "onlyInitializing", + "nameLocations": [ + "2716:16:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2716:16:42" + }, + "nodeType": "ModifierInvocation", + "src": "2716:16:42" + } + ], + "name": "__GasMoneyManager_init", + "nameLocation": "2633:22:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9721, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "2664:15:42", + "nodeType": "VariableDeclaration", + "scope": 9747, + "src": "2656:23:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2656:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9723, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "2689:16:42", + "nodeType": "VariableDeclaration", + "scope": 9747, + "src": "2681:24:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2681:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2655:51:42" + }, + "returnParameters": { + "id": 9727, + "nodeType": "ParameterList", + "parameters": [], + "src": "2733:0:42" + }, + "scope": 9930, + "src": "2624:269:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9848, + "nodeType": "Block", + "src": "3355:1262:42", + "statements": [ + { + "assignments": [ + 9755 + ], + "declarations": [ + { + "constant": false, + "id": 9755, + "mutability": "mutable", + "name": "$", + "nameLocation": "3389:1:42", + "nodeType": "VariableDeclaration", + "scope": 9848, + "src": "3365:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9754, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9753, + "name": "GasMoneyStorage", + "nameLocations": [ + "3365:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "3365:15:42" + }, + "referencedDeclaration": 9682, + "src": "3365:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9758, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9756, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "3393:19:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$9682_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 9757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:21:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3365:49:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9759, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "3496:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9760, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "3505:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3507:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "3505:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3496:27:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9770, + "nodeType": "IfStatement", + "src": "3492:116:42", + "trueBody": { + "id": 9769, + "nodeType": "Block", + "src": "3525:83:42", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 9764, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "3570:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9765, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3572:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "3570:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9766, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "3590:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9763, + "name": "WithdrawalLimitExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9713, + "src": "3546:23:42", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 9767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3546:51:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9768, + "nodeType": "RevertStatement", + "src": "3539:58:42" + } + ] + } + }, + { + "assignments": [ + 9772 + ], + "declarations": [ + { + "constant": false, + "id": 9772, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "3652:11:42", + "nodeType": "VariableDeclaration", + "scope": 9848, + "src": "3644:19:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3644:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9775, + "initialValue": { + "expression": { + "id": 9773, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3666:5:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 9774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3672:9:42", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3666:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3644:37:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9776, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "3865:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 9777, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "3879:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9778, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3881:22:42", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 9673, + "src": "3879:24:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9781, + "indexExpression": { + "expression": { + "id": 9779, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3904:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3908:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3904:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3879:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 9782, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "3918:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3920:17:42", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9681, + "src": "3918:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3879:58:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3865:72:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9805, + "nodeType": "IfStatement", + "src": "3861:201:42", + "trueBody": { + "id": 9804, + "nodeType": "Block", + "src": "3939:123:42", + "statements": [ + { + "expression": { + "id": 9793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 9786, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "3953:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9790, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3955:16:42", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9677, + "src": "3953:18:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9791, + "indexExpression": { + "expression": { + "id": 9788, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3972:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3976:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3972:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3953:30:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 9792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3986:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3953:34:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9794, + "nodeType": "ExpressionStatement", + "src": "3953:34:42" + }, + { + "expression": { + "id": 9802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 9795, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "4001:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4003:22:42", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 9673, + "src": "4001:24:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9800, + "indexExpression": { + "expression": { + "id": 9797, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4026:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4030:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4026:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4001:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9801, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "4040:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4001:50:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9803, + "nodeType": "ExpressionStatement", + "src": "4001:50:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 9806, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "4158:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9807, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4160:16:42", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9677, + "src": "4158:18:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9810, + "indexExpression": { + "expression": { + "id": 9808, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4177:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4181:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4177:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4158:30:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 9811, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "4191:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:39:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9813, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "4200:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4202:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "4200:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:60:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9823, + "nodeType": "IfStatement", + "src": "4154:158:42", + "trueBody": { + "id": 9822, + "nodeType": "Block", + "src": "4220:92:42", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 9817, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "4274:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9818, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4276:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "4274:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9819, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "4294:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9816, + "name": "WithdrawalLimitExceededForPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9719, + "src": "4241:32:42", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 9820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4241:60:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9821, + "nodeType": "RevertStatement", + "src": "4234:67:42" + } + ] + } + }, + { + "expression": { + "id": 9831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 9824, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9755, + "src": "4434:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9828, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4436:16:42", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9677, + "src": "4434:18:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9829, + "indexExpression": { + "expression": { + "id": 9826, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4453:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4457:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4453:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4434:30:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 9830, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "4468:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4434:40:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9832, + "nodeType": "ExpressionStatement", + "src": "4434:40:42" + }, + { + "expression": { + "arguments": [ + { + "id": 9839, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "4549:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 9835, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4527:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4531:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4527:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4519:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 9833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4519:8:42", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 9837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4519:19:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 9838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4539:9:42", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "4519:29:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 9840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4519:37:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9841, + "nodeType": "ExpressionStatement", + "src": "4519:37:42" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 9843, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4591:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 9844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4595:6:42", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4591:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "4603:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9842, + "name": "GasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9700, + "src": "4572:18:42", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 9846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4572:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9847, + "nodeType": "EmitStatement", + "src": "4567:43:42" + } + ] + }, + "documentation": { + "id": 9748, + "nodeType": "StructuredDocumentation", + "src": "3071:227:42", + "text": " @notice Withdraws gas money.\n This functions is intended to be called by the bot to withdraw gas money.\n Inheriting contract should restrict who can call this with a public\n function." + }, + "id": 9849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_withdrawGasMoney", + "nameLocation": "3312:17:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9750, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3338:6:42", + "nodeType": "VariableDeclaration", + "scope": 9849, + "src": "3330:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3330:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3329:16:42" + }, + "returnParameters": { + "id": 9752, + "nodeType": "ParameterList", + "parameters": [], + "src": "3355:0:42" + }, + "scope": 9930, + "src": "3303:1314:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9880, + "nodeType": "Block", + "src": "4891:196:42", + "statements": [ + { + "assignments": [ + 9859 + ], + "declarations": [ + { + "constant": false, + "id": 9859, + "mutability": "mutable", + "name": "$", + "nameLocation": "4925:1:42", + "nodeType": "VariableDeclaration", + "scope": 9880, + "src": "4901:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9858, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9857, + "name": "GasMoneyStorage", + "nameLocations": [ + "4901:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "4901:15:42" + }, + "referencedDeclaration": 9682, + "src": "4901:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9862, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9860, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "4929:19:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$9682_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 9861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4929:21:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4901:49:42" + }, + { + "expression": { + "id": 9867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9863, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9859, + "src": "4960:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9865, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4962:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "4960:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9866, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9852, + "src": "4981:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4960:26:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9868, + "nodeType": "ExpressionStatement", + "src": "4960:26:42" + }, + { + "expression": { + "id": 9873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 9869, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9859, + "src": "4996:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9871, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4998:17:42", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9681, + "src": "4996:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 9872, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9854, + "src": "5018:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4996:28:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9874, + "nodeType": "ExpressionStatement", + "src": "4996:28:42" + }, + { + "eventCall": { + "arguments": [ + { + "id": 9876, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9852, + "src": "5066:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9877, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9854, + "src": "5073:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9875, + "name": "GasMoneyWithdrawalUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9707, + "src": "5040:25:42", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 9878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5040:40:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9879, + "nodeType": "EmitStatement", + "src": "5035:45:42" + } + ] + }, + "documentation": { + "id": 9850, + "nodeType": "StructuredDocumentation", + "src": "4623:191:42", + "text": " @notice Sets the gas money withdrawal limit and period.\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "id": 9881, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setGasMoneyWithdrawal", + "nameLocation": "4828:22:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9852, + "mutability": "mutable", + "name": "limit", + "nameLocation": "4859:5:42", + "nodeType": "VariableDeclaration", + "scope": 9881, + "src": "4851:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9854, + "mutability": "mutable", + "name": "period", + "nameLocation": "4874:6:42", + "nodeType": "VariableDeclaration", + "scope": 9881, + "src": "4866:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4866:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4850:31:42" + }, + "returnParameters": { + "id": 9856, + "nodeType": "ParameterList", + "parameters": [], + "src": "4891:0:42" + }, + "scope": 9930, + "src": "4819:268:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9901, + "nodeType": "Block", + "src": "5346:124:42", + "statements": [ + { + "assignments": [ + 9891 + ], + "declarations": [ + { + "constant": false, + "id": 9891, + "mutability": "mutable", + "name": "$", + "nameLocation": "5380:1:42", + "nodeType": "VariableDeclaration", + "scope": 9901, + "src": "5356:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9890, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9889, + "name": "GasMoneyStorage", + "nameLocations": [ + "5356:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "5356:15:42" + }, + "referencedDeclaration": 9682, + "src": "5356:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9894, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9892, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "5384:19:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$9682_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 9893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5384:21:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5356:49:42" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 9895, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "5423:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9896, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5425:16:42", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9679, + "src": "5423:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 9897, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9891, + "src": "5443:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9898, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5445:17:42", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9681, + "src": "5443:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9899, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5422:41:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 9888, + "id": 9900, + "nodeType": "Return", + "src": "5415:48:42" + } + ] + }, + "documentation": { + "id": 9882, + "nodeType": "StructuredDocumentation", + "src": "5093:143:42", + "text": " @notice Returns the gas money withdrawal restrictions.\n @return withdrawalLimit\n @return withdrawalPeriod" + }, + "functionSelector": "658db0af", + "id": 9902, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawal", + "nameLocation": "5250:21:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9883, + "nodeType": "ParameterList", + "parameters": [], + "src": "5271:2:42" + }, + "returnParameters": { + "id": 9888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9885, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "5303:15:42", + "nodeType": "VariableDeclaration", + "scope": 9902, + "src": "5295:23:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5295:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9887, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "5328:16:42", + "nodeType": "VariableDeclaration", + "scope": 9902, + "src": "5320:24:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9886, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5320:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5294:51:42" + }, + "scope": 9930, + "src": "5241:229:42", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9928, + "nodeType": "Block", + "src": "5889:147:42", + "statements": [ + { + "assignments": [ + 9914 + ], + "declarations": [ + { + "constant": false, + "id": 9914, + "mutability": "mutable", + "name": "$", + "nameLocation": "5923:1:42", + "nodeType": "VariableDeclaration", + "scope": 9928, + "src": "5899:25:42", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 9913, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9912, + "name": "GasMoneyStorage", + "nameLocations": [ + "5899:15:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9682, + "src": "5899:15:42" + }, + "referencedDeclaration": 9682, + "src": "5899:15:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 9917, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9915, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9693, + "src": "5927:19:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$9682_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 9916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5927:21:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5899:49:42" + }, + { + "expression": { + "components": [ + { + "baseExpression": { + "expression": { + "id": 9918, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9914, + "src": "5966:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9919, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5968:22:42", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 9673, + "src": "5966:24:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9921, + "indexExpression": { + "id": 9920, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9905, + "src": "5991:7:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5966:33:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 9922, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9914, + "src": "6001:1:42", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$9682_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 9923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6003:16:42", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 9677, + "src": "6001:18:42", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9925, + "indexExpression": { + "id": 9924, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9905, + "src": "6020:7:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6001:27:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9926, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5965:64:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 9911, + "id": 9927, + "nodeType": "Return", + "src": "5958:71:42" + } + ] + }, + "documentation": { + "id": 9903, + "nodeType": "StructuredDocumentation", + "src": "5476:269:42", + "text": " @notice Returns the gas money withdrawal details for an account.\n @param account address of the account\n @return periodStart timestamp of the withdrawal period start\n @return withdrawnAmount amount withdrawn within the period" + }, + "functionSelector": "ee3b641f", + "id": 9929, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawalForAccount", + "nameLocation": "5759:31:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9905, + "mutability": "mutable", + "name": "account", + "nameLocation": "5808:7:42", + "nodeType": "VariableDeclaration", + "scope": 9929, + "src": "5800:15:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9904, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5800:7:42", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5790:31:42" + }, + "returnParameters": { + "id": 9911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9908, + "mutability": "mutable", + "name": "periodStart", + "nameLocation": "5851:11:42", + "nodeType": "VariableDeclaration", + "scope": 9929, + "src": "5843:19:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5843:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9910, + "mutability": "mutable", + "name": "withdrawnAmount", + "nameLocation": "5872:15:42", + "nodeType": "VariableDeclaration", + "scope": 9929, + "src": "5864:23:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5864:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5842:46:42" + }, + "scope": 9930, + "src": "5750:286:42", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 9931, + "src": "462:5576:42", + "usedErrors": [ + 580, + 583, + 9713, + 9719 + ], + "usedEvents": [ + 588, + 9700, + 9707 + ] + } + ], + "src": "81:5958:42" + }, + "id": 42 + }, + "contracts/account/ICMAccount.sol": { + "ast": { + "absolutePath": "contracts/account/ICMAccount.sol", + "exportedSymbols": { + "ICMAccount": [ + 9946 + ] + }, + "id": 9947, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9932, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "40:24:43" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICMAccount", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 9946, + "linearizedBaseContracts": [ + 9946 + ], + "name": "ICMAccount", + "nameLocation": "76:10:43", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "33e1a223", + "id": 9945, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "102:10:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9934, + "mutability": "mutable", + "name": "manager", + "nameLocation": "130:7:43", + "nodeType": "VariableDeclaration", + "scope": 9945, + "src": "122:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "122:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9936, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "155:12:43", + "nodeType": "VariableDeclaration", + "scope": 9945, + "src": "147:20:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "147:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9938, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "185:13:43", + "nodeType": "VariableDeclaration", + "scope": 9945, + "src": "177:21:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "177:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9940, + "mutability": "mutable", + "name": "owner", + "nameLocation": "216:5:43", + "nodeType": "VariableDeclaration", + "scope": 9945, + "src": "208:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "208:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9942, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "239:8:43", + "nodeType": "VariableDeclaration", + "scope": 9945, + "src": "231:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "112:141:43" + }, + "returnParameters": { + "id": 9944, + "nodeType": "ParameterList", + "parameters": [], + "src": "262:0:43" + }, + "scope": 9946, + "src": "93:170:43", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 9947, + "src": "66:199:43", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "40:226:43" + }, + "id": 43 + }, + "contracts/booking-token/BookingToken.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingToken.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "Address": [ + 5245 + ], + "BookingToken": [ + 10822 + ], + "ERC721EnumerableUpgradeable": [ + 2616 + ], + "ERC721URIStorageUpgradeable": [ + 2786 + ], + "ERC721Upgradeable": [ + 2131 + ], + "ICMAccountManager": [ + 11872 + ], + "IERC20": [ + 4445 + ], + "IERC721": [ + 4914 + ], + "Initializable": [ + 817 + ], + "ReentrancyGuardUpgradeable": [ + 3137 + ], + "SafeERC20": [ + 4797 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 10823, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9948, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "32:24:44" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 9950, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 818, + "src": "72:98:44", + "symbolAliases": [ + { + "foreign": { + "id": 9949, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "81:13:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 9952, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 1000, + "src": "171:102:44", + "symbolAliases": [ + { + "foreign": { + "id": 9951, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "180:15:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "id": 9955, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 2132, + "src": "285:116:44", + "symbolAliases": [ + { + "foreign": { + "id": 9953, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "294:17:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 9954, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4914, + "src": "313:7:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "id": 9957, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 2787, + "src": "402:138:44", + "symbolAliases": [ + { + "foreign": { + "id": 9956, + "name": "ERC721URIStorageUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2786, + "src": "411:27:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "id": 9959, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 2617, + "src": "541:138:44", + "symbolAliases": [ + { + "foreign": { + "id": 9958, + "name": "ERC721EnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2616, + "src": "550:27:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "id": 9961, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 363, + "src": "691:115:44", + "symbolAliases": [ + { + "foreign": { + "id": 9960, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "700:24:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 9963, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 11873, + "src": "829:69:44", + "symbolAliases": [ + { + "foreign": { + "id": 9962, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "838:17:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 9965, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 5246, + "src": "909:68:44", + "symbolAliases": [ + { + "foreign": { + "id": 9964, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "918:7:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 9968, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 4798, + "src": "978:92:44", + "symbolAliases": [ + { + "foreign": { + "id": 9966, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4797, + "src": "987:9:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 9967, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "998:6:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 9970, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10823, + "sourceUnit": 3138, + "src": "1072:118:44", + "symbolAliases": [ + { + "foreign": { + "id": 9969, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3137, + "src": "1081:26:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 9972, + "name": "Initializable", + "nameLocations": [ + "1666:13:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "1666:13:44" + }, + "id": 9973, + "nodeType": "InheritanceSpecifier", + "src": "1666:13:44" + }, + { + "baseName": { + "id": 9974, + "name": "ERC721Upgradeable", + "nameLocations": [ + "1685:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "1685:17:44" + }, + "id": 9975, + "nodeType": "InheritanceSpecifier", + "src": "1685:17:44" + }, + { + "baseName": { + "id": 9976, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "1708:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2616, + "src": "1708:27:44" + }, + "id": 9977, + "nodeType": "InheritanceSpecifier", + "src": "1708:27:44" + }, + { + "baseName": { + "id": 9978, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "1741:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2786, + "src": "1741:27:44" + }, + "id": 9979, + "nodeType": "InheritanceSpecifier", + "src": "1741:27:44" + }, + { + "baseName": { + "id": 9980, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "1774:24:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "1774:24:44" + }, + "id": 9981, + "nodeType": "InheritanceSpecifier", + "src": "1774:24:44" + }, + { + "baseName": { + "id": 9982, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "1804:26:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3137, + "src": "1804:26:44" + }, + "id": 9983, + "nodeType": "InheritanceSpecifier", + "src": "1804:26:44" + }, + { + "baseName": { + "id": 9984, + "name": "UUPSUpgradeable", + "nameLocations": [ + "1836:15:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 999, + "src": "1836:15:44" + }, + "id": 9985, + "nodeType": "InheritanceSpecifier", + "src": "1836:15:44" + } + ], + "canonicalName": "BookingToken", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 9971, + "nodeType": "StructuredDocumentation", + "src": "1192:444:44", + "text": " @title BookingToken\n @notice Booking Token contract represents a booking done on the Camino Messenger.\n Suppliers can mint Booking Tokens and reserve them for a distributor address to\n buy.\n Booking Tokens can have zero price, meaning that the payment will be done\n off-chain.\n When a token is minted with a reservation, it can not transferred until the\n expiration timestamp is reached or the token is bought." + }, + "fullyImplemented": true, + "id": 10822, + "linearizedBaseContracts": [ + 10822, + 999, + 3328, + 3137, + 362, + 2786, + 2616, + 4964, + 2131, + 3418, + 4992, + 3314, + 4914, + 3177, + 6000, + 3260, + 2832, + 817 + ], + "name": "BookingToken", + "nameLocation": "1646:12:44", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9988, + "libraryName": { + "id": 9986, + "name": "Address", + "nameLocations": [ + "1864:7:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "1864:7:44" + }, + "nodeType": "UsingForDirective", + "src": "1858:34:44", + "typeName": { + "id": 9987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1876:15:44", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "global": false, + "id": 9992, + "libraryName": { + "id": 9989, + "name": "SafeERC20", + "nameLocations": [ + "1903:9:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4797, + "src": "1903:9:44" + }, + "nodeType": "UsingForDirective", + "src": "1897:27:44", + "typeName": { + "id": 9991, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9990, + "name": "IERC20", + "nameLocations": [ + "1917:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "1917:6:44" + }, + "referencedDeclaration": 4445, + "src": "1917:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "documentation": { + "id": 9993, + "nodeType": "StructuredDocumentation", + "src": "2103:90:44", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 9998, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "2222:13:44", + "nodeType": "VariableDeclaration", + "scope": 10822, + "src": "2198:66:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9994, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2198:7:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 9996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2248:15:44", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 9995, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2238:9:44", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 9997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2238:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 9999, + "nodeType": "StructuredDocumentation", + "src": "2271:97:44", + "text": " @notice This role can set the mininum allowed expiration timestamp difference." + }, + "functionSelector": "2edf5e2c", + "id": 10004, + "mutability": "constant", + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "nameLocation": "2397:25:44", + "nodeType": "VariableDeclaration", + "scope": 10822, + "src": "2373:90:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10000, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2373:7:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4d494e5f45585049524154494f4e5f41444d494e5f524f4c45", + "id": 10002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2435:27:44", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4", + "typeString": "literal_string \"MIN_EXPIRATION_ADMIN_ROLE\"" + }, + "value": "MIN_EXPIRATION_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4", + "typeString": "literal_string \"MIN_EXPIRATION_ADMIN_ROLE\"" + } + ], + "id": 10001, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2425:9:44", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2425:38:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "BookingToken.TokenReservation", + "id": 10016, + "members": [ + { + "constant": false, + "id": 10006, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "2712:11:44", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "2704:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10005, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2704:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10008, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "2786:8:44", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "2778:16:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2778:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10010, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "2884:19:44", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "2876:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10009, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2876:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10012, + "mutability": "mutable", + "name": "price", + "nameLocation": "2963:5:44", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "2955:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2955:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10015, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "3028:12:44", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "3021:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10014, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10013, + "name": "IERC20", + "nameLocations": [ + "3021:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "3021:6:44" + }, + "referencedDeclaration": 4445, + "src": "3021:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "name": "TokenReservation", + "nameLocation": "2677:16:44", + "nodeType": "StructDefinition", + "scope": 10822, + "src": "2670:421:44", + "visibility": "public" + }, + { + "canonicalName": "BookingToken.BookingTokenStorage", + "documentation": { + "id": 10017, + "nodeType": "StructuredDocumentation", + "src": "3097:74:44", + "text": "@custom:storage-location erc7201:camino.messenger.storage.BookingToken" + }, + "id": 10029, + "members": [ + { + "constant": false, + "id": 10019, + "mutability": "mutable", + "name": "_manager", + "nameLocation": "3257:8:44", + "nodeType": "VariableDeclaration", + "scope": 10029, + "src": "3249:16:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3249:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10021, + "mutability": "mutable", + "name": "_nextTokenId", + "nameLocation": "3334:12:44", + "nodeType": "VariableDeclaration", + "scope": 10029, + "src": "3326:20:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3326:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10023, + "mutability": "mutable", + "name": "_minExpirationTimestampDiff", + "nameLocation": "3423:27:44", + "nodeType": "VariableDeclaration", + "scope": 10029, + "src": "3415:35:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10028, + "mutability": "mutable", + "name": "_reservations", + "nameLocation": "3568:13:44", + "nodeType": "VariableDeclaration", + "scope": 10029, + "src": "3506:75:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation)" + }, + "typeName": { + "id": 10027, + "keyName": "tokenId", + "keyNameLocation": "3522:7:44", + "keyType": { + "id": 10024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3514:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "3506:61:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation)" + }, + "valueName": "tokenReservation", + "valueNameLocation": "3550:16:44", + "valueType": { + "id": 10026, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10025, + "name": "TokenReservation", + "nameLocations": [ + "3533:16:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10016, + "src": "3533:16:44" + }, + "referencedDeclaration": 10016, + "src": "3533:16:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + } + }, + "visibility": "internal" + } + ], + "name": "BookingTokenStorage", + "nameLocation": "3183:19:44", + "nodeType": "StructDefinition", + "scope": 10822, + "src": "3176:412:44", + "visibility": "public" + }, + { + "constant": true, + "id": 10032, + "mutability": "constant", + "name": "BookingTokenStorageLocation", + "nameLocation": "3740:27:44", + "nodeType": "VariableDeclaration", + "scope": 10822, + "src": "3715:129:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10030, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3715:7:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839646239643430356266313536383363653833353630376231663062343233646331343834643434626239643561663634613438336661346166643832393030", + "id": 10031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3778:66:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_71341447259705531122357740315267326075613245902197256147529333680381172918528_by_1", + "typeString": "int_const 7134...(69 digits omitted)...8528" + }, + "value": "0x9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd82900" + }, + "visibility": "private" + }, + { + "body": { + "id": 10039, + "nodeType": "Block", + "src": "3939:86:44", + "statements": [ + { + "AST": { + "nativeSrc": "3958:61:44", + "nodeType": "YulBlock", + "src": "3958:61:44", + "statements": [ + { + "nativeSrc": "3972:37:44", + "nodeType": "YulAssignment", + "src": "3972:37:44", + "value": { + "name": "BookingTokenStorageLocation", + "nativeSrc": "3982:27:44", + "nodeType": "YulIdentifier", + "src": "3982:27:44" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "3972:6:44", + "nodeType": "YulIdentifier", + "src": "3972:6:44" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 10036, + "isOffset": false, + "isSlot": true, + "src": "3972:6:44", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 10032, + "isOffset": false, + "isSlot": false, + "src": "3982:27:44", + "valueSize": 1 + } + ], + "id": 10038, + "nodeType": "InlineAssembly", + "src": "3949:70:44" + } + ] + }, + "id": 10040, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getBookingTokenStorage", + "nameLocation": "3860:23:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10033, + "nodeType": "ParameterList", + "parameters": [], + "src": "3883:2:44" + }, + "returnParameters": { + "id": 10037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10036, + "mutability": "mutable", + "name": "$", + "nameLocation": "3936:1:44", + "nodeType": "VariableDeclaration", + "scope": 10040, + "src": "3908:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10035, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10034, + "name": "BookingTokenStorage", + "nameLocations": [ + "3908:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "3908:19:44" + }, + "referencedDeclaration": 10029, + "src": "3908:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3907:31:44" + }, + "scope": 10822, + "src": "3851:174:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 10041, + "nodeType": "StructuredDocumentation", + "src": "4204:334:44", + "text": " @notice Event emitted when a token is reserved.\n @param tokenId token id\n @param reservedFor reserved for address\n @param supplier supplier address\n @param expirationTimestamp expiration timestamp\n @param price price of the token\n @param paymentToken payment token address" + }, + "eventSelector": "80336fa715077c3eac32c02d3302e437dabf25774b2068d72d0d2a928643c471", + "id": 10056, + "name": "TokenReserved", + "nameLocation": "4549:13:44", + "nodeType": "EventDefinition", + "parameters": { + "id": 10055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10043, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4588:7:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4572:23:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4572:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10045, + "indexed": true, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "4621:11:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4605:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10044, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4605:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10047, + "indexed": true, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "4658:8:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4642:24:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4642:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10049, + "indexed": false, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "4684:19:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4676:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4676:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10051, + "indexed": false, + "mutability": "mutable", + "name": "price", + "nameLocation": "4721:5:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4713:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4713:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10054, + "indexed": false, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "4743:12:44", + "nodeType": "VariableDeclaration", + "scope": 10056, + "src": "4736:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10053, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10052, + "name": "IERC20", + "nameLocations": [ + "4736:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "4736:6:44" + }, + "referencedDeclaration": 4445, + "src": "4736:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4562:199:44" + }, + "src": "4543:219:44" + }, + { + "anonymous": false, + "documentation": { + "id": 10057, + "nodeType": "StructuredDocumentation", + "src": "4768:136:44", + "text": " @notice Event emitted when a token is bought.\n @param tokenId token id\n @param buyer buyer address" + }, + "eventSelector": "a751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb95040", + "id": 10063, + "name": "TokenBought", + "nameLocation": "4915:11:44", + "nodeType": "EventDefinition", + "parameters": { + "id": 10062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10059, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4943:7:44", + "nodeType": "VariableDeclaration", + "scope": 10063, + "src": "4927:23:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4927:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10061, + "indexed": true, + "mutability": "mutable", + "name": "buyer", + "nameLocation": "4968:5:44", + "nodeType": "VariableDeclaration", + "scope": 10063, + "src": "4952:21:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4952:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4926:48:44" + }, + "src": "4909:66:44" + }, + { + "documentation": { + "id": 10064, + "nodeType": "StructuredDocumentation", + "src": "5154:147:44", + "text": " @notice Error for expiration timestamp too soon. It must be at least\n `_minExpirationTimestampDiff` seconds in the future." + }, + "errorSelector": "999f7d70", + "id": 10070, + "name": "ExpirationTimestampTooSoon", + "nameLocation": "5312:26:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10066, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "5347:19:44", + "nodeType": "VariableDeclaration", + "scope": 10070, + "src": "5339:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5339:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10068, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "5376:26:44", + "nodeType": "VariableDeclaration", + "scope": 10070, + "src": "5368:34:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5368:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5338:65:44" + }, + "src": "5306:98:44" + }, + { + "documentation": { + "id": 10071, + "nodeType": "StructuredDocumentation", + "src": "5410:100:44", + "text": " @notice Address is not a CM Account.\n @param account account address" + }, + "errorSelector": "80145753", + "id": 10075, + "name": "NotCMAccount", + "nameLocation": "5521:12:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10073, + "mutability": "mutable", + "name": "account", + "nameLocation": "5542:7:44", + "nodeType": "VariableDeclaration", + "scope": 10075, + "src": "5534:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5534:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5533:17:44" + }, + "src": "5515:36:44" + }, + { + "documentation": { + "id": 10076, + "nodeType": "StructuredDocumentation", + "src": "5557:146:44", + "text": " @notice ReservedFor and buyer mismatch.\n @param reservedFor reserved for address\n @param buyer buyer address" + }, + "errorSelector": "4cc7538a", + "id": 10082, + "name": "ReservationMismatch", + "nameLocation": "5714:19:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10078, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "5742:11:44", + "nodeType": "VariableDeclaration", + "scope": 10082, + "src": "5734:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5734:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10080, + "mutability": "mutable", + "name": "buyer", + "nameLocation": "5763:5:44", + "nodeType": "VariableDeclaration", + "scope": 10082, + "src": "5755:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5755:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5733:36:44" + }, + "src": "5708:62:44" + }, + { + "documentation": { + "id": 10083, + "nodeType": "StructuredDocumentation", + "src": "5776:140:44", + "text": " @notice Reservation expired.\n @param tokenId token id\n @param expirationTimestamp expiration timestamp" + }, + "errorSelector": "527ae76e", + "id": 10089, + "name": "ReservationExpired", + "nameLocation": "5927:18:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10085, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5954:7:44", + "nodeType": "VariableDeclaration", + "scope": 10089, + "src": "5946:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5946:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10087, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "5971:19:44", + "nodeType": "VariableDeclaration", + "scope": 10089, + "src": "5963:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5963:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5945:46:44" + }, + "src": "5921:71:44" + }, + { + "documentation": { + "id": 10090, + "nodeType": "StructuredDocumentation", + "src": "5998:138:44", + "text": " @notice Incorrect price.\n @param price price of the token\n @param reservationPrice reservation price" + }, + "errorSelector": "05158454", + "id": 10096, + "name": "IncorrectPrice", + "nameLocation": "6147:14:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10092, + "mutability": "mutable", + "name": "price", + "nameLocation": "6170:5:44", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "6162:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6162:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10094, + "mutability": "mutable", + "name": "reservationPrice", + "nameLocation": "6185:16:44", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "6177:24:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6177:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6161:41:44" + }, + "src": "6141:62:44" + }, + { + "documentation": { + "id": 10097, + "nodeType": "StructuredDocumentation", + "src": "6209:131:44", + "text": " @notice Supplier is not the owner.\n @param tokenId token id\n @param supplier supplier address" + }, + "errorSelector": "81e8a2c8", + "id": 10103, + "name": "SupplierIsNotOwner", + "nameLocation": "6351:18:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10099, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6378:7:44", + "nodeType": "VariableDeclaration", + "scope": 10103, + "src": "6370:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6370:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10101, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "6395:8:44", + "nodeType": "VariableDeclaration", + "scope": 10103, + "src": "6387:16:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6387:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6369:35:44" + }, + "src": "6345:60:44" + }, + { + "documentation": { + "id": 10104, + "nodeType": "StructuredDocumentation", + "src": "6411:157:44", + "text": " @notice Token is reserved and can not be transferred.\n @param tokenId token id\n @param reservedFor reserved for address" + }, + "errorSelector": "d4cde2af", + "id": 10110, + "name": "TokenIsReserved", + "nameLocation": "6579:15:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10106, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6603:7:44", + "nodeType": "VariableDeclaration", + "scope": 10110, + "src": "6595:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6595:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10108, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "6620:11:44", + "nodeType": "VariableDeclaration", + "scope": 10110, + "src": "6612:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6612:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6594:38:44" + }, + "src": "6573:60:44" + }, + { + "documentation": { + "id": 10111, + "nodeType": "StructuredDocumentation", + "src": "6639:262:44", + "text": " @notice Insufficient allowance to transfer the ERC20 token to the supplier.\n @param sender msg.sender\n @param paymentToken payment token address\n @param price price of the token\n @param allowance allowance amount" + }, + "errorSelector": "91beda24", + "id": 10122, + "name": "InsufficientAllowance", + "nameLocation": "6912:21:44", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10113, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6942:6:44", + "nodeType": "VariableDeclaration", + "scope": 10122, + "src": "6934:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6934:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10116, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "6957:12:44", + "nodeType": "VariableDeclaration", + "scope": 10122, + "src": "6950:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10115, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10114, + "name": "IERC20", + "nameLocations": [ + "6950:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "6950:6:44" + }, + "referencedDeclaration": 4445, + "src": "6950:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10118, + "mutability": "mutable", + "name": "price", + "nameLocation": "6979:5:44", + "nodeType": "VariableDeclaration", + "scope": 10122, + "src": "6971:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6971:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10120, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "6994:9:44", + "nodeType": "VariableDeclaration", + "scope": 10122, + "src": "6986:17:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6986:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6933:71:44" + }, + "src": "6906:99:44" + }, + { + "body": { + "id": 10132, + "nodeType": "Block", + "src": "7280:53:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10128, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10125, + "src": "7307:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10127, + "name": "requireCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10586, + "src": "7290:16:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 10129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7290:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10130, + "nodeType": "ExpressionStatement", + "src": "7290:25:44" + }, + { + "id": 10131, + "nodeType": "PlaceholderStatement", + "src": "7325:1:44" + } + ] + }, + "documentation": { + "id": 10123, + "nodeType": "StructuredDocumentation", + "src": "7184:51:44", + "text": " @notice Only CMAccount modifier." + }, + "id": 10133, + "name": "onlyCMAccount", + "nameLocation": "7249:13:44", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 10126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10125, + "mutability": "mutable", + "name": "account", + "nameLocation": "7271:7:44", + "nodeType": "VariableDeclaration", + "scope": 10133, + "src": "7263:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7263:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7262:17:44" + }, + "src": "7240:93:44", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10189, + "nodeType": "Block", + "src": "7608:433:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "426f6f6b696e67546f6b656e", + "id": 10145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7632:14:44", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c82f203b9a6936c0927df3e5d1e1d79cc03993f5b9d036531645e367a8731e54", + "typeString": "literal_string \"BookingToken\"" + }, + "value": "BookingToken" + }, + { + "hexValue": "54524950", + "id": 10146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7648:6:44", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a4c10d022e772c8807f91f4997696f912c6a7b9dd3379bfe54427774ef808e9f", + "typeString": "literal_string \"TRIP\"" + }, + "value": "TRIP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c82f203b9a6936c0927df3e5d1e1d79cc03993f5b9d036531645e367a8731e54", + "typeString": "literal_string \"BookingToken\"" + }, + { + "typeIdentifier": "t_stringliteral_a4c10d022e772c8807f91f4997696f912c6a7b9dd3379bfe54427774ef808e9f", + "typeString": "literal_string \"TRIP\"" + } + ], + "id": 10144, + "name": "__ERC721_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1086, + "src": "7618:13:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 10147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7618:37:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10148, + "nodeType": "ExpressionStatement", + "src": "7618:37:44" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10149, + "name": "__ERC721Enumerable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "7665:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7665:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10151, + "nodeType": "ExpressionStatement", + "src": "7665:25:44" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10152, + "name": "__ERC721URIStorage_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "7700:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7700:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10154, + "nodeType": "ExpressionStatement", + "src": "7700:25:44" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10155, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "7735:20:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7735:22:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10157, + "nodeType": "ExpressionStatement", + "src": "7735:22:44" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10158, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "7767:22:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7767:24:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10160, + "nodeType": "ExpressionStatement", + "src": "7767:24:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10162, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "7813:18:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10163, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10137, + "src": "7833:12:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10161, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "7802:10:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7802:44:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10165, + "nodeType": "ExpressionStatement", + "src": "7802:44:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10167, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9998, + "src": "7867:13:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10168, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10139, + "src": "7882:8:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10166, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "7856:10:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7856:35:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10170, + "nodeType": "ExpressionStatement", + "src": "7856:35:44" + }, + { + "assignments": [ + 10173 + ], + "declarations": [ + { + "constant": false, + "id": 10173, + "mutability": "mutable", + "name": "$", + "nameLocation": "7930:1:44", + "nodeType": "VariableDeclaration", + "scope": 10189, + "src": "7902:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10172, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10171, + "name": "BookingTokenStorage", + "nameLocations": [ + "7902:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "7902:19:44" + }, + "referencedDeclaration": 10029, + "src": "7902:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10176, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10174, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "7934:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7934:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7902:57:44" + }, + { + "expression": { + "id": 10181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10177, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10173, + "src": "7970:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7972:8:44", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 10019, + "src": "7970:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10180, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10135, + "src": "7983:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7970:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10182, + "nodeType": "ExpressionStatement", + "src": "7970:20:44" + }, + { + "expression": { + "id": 10187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10183, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10173, + "src": "8000:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10185, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8002:27:44", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 10023, + "src": "8000:29:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3630", + "id": 10186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8032:2:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_60_by_1", + "typeString": "int_const 60" + }, + "value": "60" + }, + "src": "8000:34:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10188, + "nodeType": "ExpressionStatement", + "src": "8000:34:44" + } + ] + }, + "functionSelector": "c0c53b8b", + "id": 10190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10142, + "kind": "modifierInvocation", + "modifierName": { + "id": 10141, + "name": "initializer", + "nameLocations": [ + "7596:11:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 671, + "src": "7596:11:44" + }, + "nodeType": "ModifierInvocation", + "src": "7596:11:44" + } + ], + "name": "initialize", + "nameLocation": "7521:10:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10135, + "mutability": "mutable", + "name": "manager", + "nameLocation": "7540:7:44", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "7532:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7532:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10137, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "7557:12:44", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "7549:20:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7549:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10139, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "7579:8:44", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "7571:16:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7571:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7531:57:44" + }, + "returnParameters": { + "id": 10143, + "nodeType": "ParameterList", + "parameters": [], + "src": "7608:0:44" + }, + "scope": 10822, + "src": "7512:529:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 953 + ], + "body": { + "id": 10200, + "nodeType": "Block", + "src": "8224:2:44", + "statements": [] + }, + "documentation": { + "id": 10191, + "nodeType": "StructuredDocumentation", + "src": "8047:75:44", + "text": " @notice Function to authorize an upgrade for UUPS proxy." + }, + "id": 10201, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 10197, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9998, + "src": "8209:13:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 10198, + "kind": "modifierInvocation", + "modifierName": { + "id": 10196, + "name": "onlyRole", + "nameLocations": [ + "8200:8:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "8200:8:44" + }, + "nodeType": "ModifierInvocation", + "src": "8200:23:44" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "8137:17:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10195, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8191:8:44" + }, + "parameters": { + "id": 10194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10193, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "8163:17:44", + "nodeType": "VariableDeclaration", + "scope": 10201, + "src": "8155:25:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8155:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8154:27:44" + }, + "returnParameters": { + "id": 10199, + "nodeType": "ParameterList", + "parameters": [], + "src": "8224:0:44" + }, + "scope": 10822, + "src": "8128:98:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10288, + "nodeType": "Block", + "src": "9031:993:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10221, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10204, + "src": "9108:11:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10220, + "name": "requireCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10586, + "src": "9091:16:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 10222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9091:29:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10223, + "nodeType": "ExpressionStatement", + "src": "9091:29:44" + }, + { + "assignments": [ + 10226 + ], + "declarations": [ + { + "constant": false, + "id": 10226, + "mutability": "mutable", + "name": "$", + "nameLocation": "9159:1:44", + "nodeType": "VariableDeclaration", + "scope": 10288, + "src": "9131:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10225, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10224, + "name": "BookingTokenStorage", + "nameLocations": [ + "9131:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "9131:19:44" + }, + "referencedDeclaration": 10029, + "src": "9131:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10229, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10227, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "9163:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9163:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9131:57:44" + }, + { + "assignments": [ + 10231 + ], + "declarations": [ + { + "constant": false, + "id": 10231, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "9321:26:44", + "nodeType": "VariableDeclaration", + "scope": 10288, + "src": "9313:34:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9313:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10234, + "initialValue": { + "expression": { + "id": 10232, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10226, + "src": "9350:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10233, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9352:27:44", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 10023, + "src": "9350:29:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9313:66:44" + }, + { + "condition": { + "id": 10243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9393:71:44", + "subExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10235, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10208, + "src": "9395:19:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10236, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "9418:5:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9424:9:44", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "9418:15:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10238, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10231, + "src": "9436:26:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9418:44:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10240, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9417:46:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9395:68:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10242, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9394:70:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10250, + "nodeType": "IfStatement", + "src": "9389:184:44", + "trueBody": { + "id": 10249, + "nodeType": "Block", + "src": "9466:107:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10245, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10208, + "src": "9514:19:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10246, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10231, + "src": "9535:26:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10244, + "name": "ExpirationTimestampTooSoon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10070, + "src": "9487:26:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 10247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9487:75:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10248, + "nodeType": "RevertStatement", + "src": "9480:82:44" + } + ] + } + }, + { + "assignments": [ + 10252 + ], + "declarations": [ + { + "constant": false, + "id": 10252, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "9625:7:44", + "nodeType": "VariableDeclaration", + "scope": 10288, + "src": "9617:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9617:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10256, + "initialValue": { + "id": 10255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9635:16:44", + "subExpression": { + "expression": { + "id": 10253, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10226, + "src": "9635:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "9637:12:44", + "memberName": "_nextTokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 10021, + "src": "9635:14:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9617:34:44" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10258, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9728:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9732:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9728:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10260, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10252, + "src": "9740:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10257, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1737, + 1763 + ], + "referencedDeclaration": 1737, + "src": "9718:9:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9718:30:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10262, + "nodeType": "ExpressionStatement", + "src": "9718:30:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10264, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10252, + "src": "9771:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10265, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10206, + "src": "9780:3:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 10263, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "9758:12:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 10266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9758:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10267, + "nodeType": "ExpressionStatement", + "src": "9758:26:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10269, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10252, + "src": "9837:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10270, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10204, + "src": "9846:11:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10271, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9859:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9863:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9859:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10273, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10208, + "src": "9871:19:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10274, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10210, + "src": "9892:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10275, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10213, + "src": "9899:12:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10268, + "name": "_reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10503, + "src": "9828:8:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4445_$returns$__$", + "typeString": "function (uint256,address,address,uint256,uint256,contract IERC20)" + } + }, + "id": 10276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9828:84:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10277, + "nodeType": "ExpressionStatement", + "src": "9828:84:44" + }, + { + "eventCall": { + "arguments": [ + { + "id": 10279, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10252, + "src": "9942:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10280, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10204, + "src": "9951:11:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10281, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9964:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9968:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9964:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10283, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10208, + "src": "9976:19:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10284, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10210, + "src": "9997:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10285, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10213, + "src": "10004:12:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10278, + "name": "TokenReserved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10056, + "src": "9928:13:44", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4445_$returns$__$", + "typeString": "function (uint256,address,address,uint256,uint256,contract IERC20)" + } + }, + "id": 10286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9928:89:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10287, + "nodeType": "EmitStatement", + "src": "9923:94:44" + } + ] + }, + "documentation": { + "id": 10202, + "nodeType": "StructuredDocumentation", + "src": "8405:404:44", + "text": " @notice Mints a new token with a reservation for a specific address.\n @param reservedFor The CM Account address that can buy the token\n @param uri The URI of the token\n @param expirationTimestamp The expiration timestamp\n @param price The price of the token\n @param paymentToken The token used to pay for the reservation. If address(0) then native." + }, + "functionSelector": "5d4badb2", + "id": 10289, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 10216, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9019:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9023:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "9019:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 10218, + "kind": "modifierInvocation", + "modifierName": { + "id": 10215, + "name": "onlyCMAccount", + "nameLocations": [ + "9005:13:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10133, + "src": "9005:13:44" + }, + "nodeType": "ModifierInvocation", + "src": "9005:25:44" + } + ], + "name": "safeMintWithReservation", + "nameLocation": "8823:23:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10204, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "8864:11:44", + "nodeType": "VariableDeclaration", + "scope": 10289, + "src": "8856:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8856:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10206, + "mutability": "mutable", + "name": "uri", + "nameLocation": "8899:3:44", + "nodeType": "VariableDeclaration", + "scope": 10289, + "src": "8885:17:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10205, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8885:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10208, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "8920:19:44", + "nodeType": "VariableDeclaration", + "scope": 10289, + "src": "8912:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8912:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10210, + "mutability": "mutable", + "name": "price", + "nameLocation": "8957:5:44", + "nodeType": "VariableDeclaration", + "scope": 10289, + "src": "8949:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8949:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10213, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "8979:12:44", + "nodeType": "VariableDeclaration", + "scope": 10289, + "src": "8972:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10212, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10211, + "name": "IERC20", + "nameLocations": [ + "8972:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "8972:6:44" + }, + "referencedDeclaration": 4445, + "src": "8972:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "8846:151:44" + }, + "returnParameters": { + "id": 10219, + "nodeType": "ParameterList", + "parameters": [], + "src": "9031:0:44" + }, + "scope": 10822, + "src": "8814:1210:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10464, + "nodeType": "Block", + "src": "10571:2462:44", + "statements": [ + { + "assignments": [ + 10303 + ], + "declarations": [ + { + "constant": false, + "id": 10303, + "mutability": "mutable", + "name": "$", + "nameLocation": "10609:1:44", + "nodeType": "VariableDeclaration", + "scope": 10464, + "src": "10581:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10302, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10301, + "name": "BookingTokenStorage", + "nameLocations": [ + "10581:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "10581:19:44" + }, + "referencedDeclaration": 10029, + "src": "10581:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10306, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10304, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "10613:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10613:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10581:57:44" + }, + { + "assignments": [ + 10309 + ], + "declarations": [ + { + "constant": false, + "id": 10309, + "mutability": "mutable", + "name": "reservation", + "nameLocation": "10718:11:44", + "nodeType": "VariableDeclaration", + "scope": 10464, + "src": "10694:35:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation" + }, + "typeName": { + "id": 10308, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10307, + "name": "TokenReservation", + "nameLocations": [ + "10694:16:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10016, + "src": "10694:16:44" + }, + "referencedDeclaration": 10016, + "src": "10694:16:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + }, + "visibility": "internal" + } + ], + "id": 10314, + "initialValue": { + "baseExpression": { + "expression": { + "id": 10310, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10303, + "src": "10732:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10734:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "10732:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10313, + "indexExpression": { + "id": 10312, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "10748:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10732:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10694:62:44" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10315, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "10828:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10316, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10840:11:44", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 10006, + "src": "10828:23:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 10317, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10855:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10859:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10855:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10828:37:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10328, + "nodeType": "IfStatement", + "src": "10824:131:44", + "trueBody": { + "id": 10327, + "nodeType": "Block", + "src": "10867:88:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 10321, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "10908:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10322, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10920:11:44", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 10006, + "src": "10908:23:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10323, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10933:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10937:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10933:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10320, + "name": "ReservationMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10082, + "src": "10888:19:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 10325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10888:56:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10326, + "nodeType": "RevertStatement", + "src": "10881:63:44" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10329, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "11007:5:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11013:9:44", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "11007:15:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 10331, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11025:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10332, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11037:19:44", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 10010, + "src": "11025:31:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11007:49:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10341, + "nodeType": "IfStatement", + "src": "11003:147:44", + "trueBody": { + "id": 10340, + "nodeType": "Block", + "src": "11058:92:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10335, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "11098:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10336, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11107:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11119:19:44", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 10010, + "src": "11107:31:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10334, + "name": "ReservationExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10089, + "src": "11079:18:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 10338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11079:60:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10339, + "nodeType": "RevertStatement", + "src": "11072:67:44" + } + ] + } + }, + { + "assignments": [ + 10343 + ], + "declarations": [ + { + "constant": false, + "id": 10343, + "mutability": "mutable", + "name": "owner", + "nameLocation": "11216:5:44", + "nodeType": "VariableDeclaration", + "scope": 10464, + "src": "11208:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11208:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10347, + "initialValue": { + "arguments": [ + { + "id": 10345, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "11232:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10344, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "11224:7:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11224:16:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11208:32:44" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10348, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10343, + "src": "11254:5:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 10349, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11263:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10350, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11275:8:44", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 10008, + "src": "11263:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11254:29:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10359, + "nodeType": "IfStatement", + "src": "11250:116:44", + "trueBody": { + "id": 10358, + "nodeType": "Block", + "src": "11285:81:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10353, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "11325:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10354, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11334:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10355, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11346:8:44", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 10008, + "src": "11334:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10352, + "name": "SupplierIsNotOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10103, + "src": "11306:18:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) pure" + } + }, + "id": 10356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11306:49:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10357, + "nodeType": "RevertStatement", + "src": "11299:56:44" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10361, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11608:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10362, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11620:8:44", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 10008, + "src": "11608:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10363, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11630:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11634:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11630:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10365, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "11642:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10360, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "11598:9:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11598:52:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10367, + "nodeType": "ExpressionStatement", + "src": "11598:52:44" + }, + { + "expression": { + "id": 10372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "11695:31:44", + "subExpression": { + "baseExpression": { + "expression": { + "id": 10368, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10303, + "src": "11702:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10369, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11704:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "11702:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10371, + "indexExpression": { + "id": 10370, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "11718:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11702:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10373, + "nodeType": "ExpressionStatement", + "src": "11695:31:44" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 10376, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11786:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11798:12:44", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10015, + "src": "11786:24:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11778:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11778:7:44", + "typeDescriptions": {} + } + }, + "id": 10378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11778:33:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 10381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11823:1:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11815:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10379, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11815:7:44", + "typeDescriptions": {} + } + }, + "id": 10382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11815:10:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11778:47:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10384, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "11829:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10385, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11841:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "11829:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11849:1:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11829:21:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11778:72:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 10456, + "nodeType": "Block", + "src": "12604:353:44", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10432, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12718:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12722:5:44", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12718:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 10434, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12731:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10435, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12743:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "12731:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12718:30:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10445, + "nodeType": "IfStatement", + "src": "12714:120:44", + "trueBody": { + "id": 10444, + "nodeType": "Block", + "src": "12750:84:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 10438, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12790:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12794:5:44", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12790:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10440, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12801:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10441, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12813:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "12801:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10437, + "name": "IncorrectPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10096, + "src": "12775:14:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 10442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12775:44:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10443, + "nodeType": "RevertStatement", + "src": "12768:51:44" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10452, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12936:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12940:5:44", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12936:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 10448, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12904:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10449, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12916:8:44", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 10008, + "src": "12904:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12896:8:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 10446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12896:8:44", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 10450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12896:29:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 10451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12926:9:44", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "12896:39:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 10454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12896:50:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10455, + "nodeType": "ExpressionStatement", + "src": "12896:50:44" + } + ] + }, + "id": 10457, + "nodeType": "IfStatement", + "src": "11774:1183:44", + "trueBody": { + "id": 10431, + "nodeType": "Block", + "src": "11852:746:44", + "statements": [ + { + "assignments": [ + 10390 + ], + "declarations": [ + { + "constant": false, + "id": 10390, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "12164:9:44", + "nodeType": "VariableDeclaration", + "scope": 10431, + "src": "12156:17:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12156:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10401, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 10394, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12211:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12215:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12211:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 10398, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "12231:4:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BookingToken_$10822", + "typeString": "contract BookingToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BookingToken_$10822", + "typeString": "contract BookingToken" + } + ], + "id": 10397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12223:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12223:7:44", + "typeDescriptions": {} + } + }, + "id": 10399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12223:13:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 10391, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12176:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12188:12:44", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10015, + "src": "12176:24:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 10393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12201:9:44", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4422, + "src": "12176:34:44", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 10400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12176:61:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12156:81:44" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10402, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10390, + "src": "12255:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 10403, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12267:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10404, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12279:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "12267:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12255:29:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10417, + "nodeType": "IfStatement", + "src": "12251:164:44", + "trueBody": { + "id": 10416, + "nodeType": "Block", + "src": "12286:129:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 10407, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12333:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12337:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12333:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10409, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12345:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10410, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12357:12:44", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10015, + "src": "12345:24:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 10411, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12371:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10412, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12383:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "12371:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10413, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10390, + "src": "12390:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10406, + "name": "InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10122, + "src": "12311:21:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_contract$_IERC20_$4445_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,contract IERC20,uint256,uint256) pure" + } + }, + "id": 10414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12311:89:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10415, + "nodeType": "RevertStatement", + "src": "12304:96:44" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10423, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12535:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12539:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12535:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10425, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12547:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10426, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12559:8:44", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 10008, + "src": "12547:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 10427, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12569:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10428, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12581:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "12569:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 10418, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10309, + "src": "12493:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12505:12:44", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10015, + "src": "12493:24:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 10422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12518:16:44", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4584, + "src": "12493:41:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4445_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4445_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 10429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12493:94:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10430, + "nodeType": "ExpressionStatement", + "src": "12493:94:44" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 10459, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10292, + "src": "13006:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10460, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13015:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13019:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13015:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10458, + "name": "TokenBought", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10063, + "src": "12994:11:44", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 10462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12994:32:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10463, + "nodeType": "EmitStatement", + "src": "12989:37:44" + } + ] + }, + "documentation": { + "id": 10290, + "nodeType": "StructuredDocumentation", + "src": "10030:437:44", + "text": " @notice Buys a reserved token. The reservation must be for the message sender.\n Also the message sender should set allowance for the payment token to this\n contract to at least the reservation price. (only for ERC20 tokens)\n For native coin, the message sender should send the exact amount.\n Only CM Accounts can call this function\n @param tokenId The token id" + }, + "functionSelector": "96591edd", + "id": 10465, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10295, + "kind": "modifierInvocation", + "modifierName": { + "id": 10294, + "name": "nonReentrant", + "nameLocations": [ + "10532:12:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "10532:12:44" + }, + "nodeType": "ModifierInvocation", + "src": "10532:12:44" + }, + { + "arguments": [ + { + "expression": { + "id": 10297, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10559:3:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 10298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10563:6:44", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10559:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 10299, + "kind": "modifierInvocation", + "modifierName": { + "id": 10296, + "name": "onlyCMAccount", + "nameLocations": [ + "10545:13:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10133, + "src": "10545:13:44" + }, + "nodeType": "ModifierInvocation", + "src": "10545:25:44" + } + ], + "name": "buyReservedToken", + "nameLocation": "10481:16:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10292, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "10506:7:44", + "nodeType": "VariableDeclaration", + "scope": 10465, + "src": "10498:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10498:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10497:17:44" + }, + "returnParameters": { + "id": 10300, + "nodeType": "ParameterList", + "parameters": [], + "src": "10571:0:44" + }, + "scope": 10822, + "src": "10472:2561:44", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 10502, + "nodeType": "Block", + "src": "13340:192:44", + "statements": [ + { + "assignments": [ + 10484 + ], + "declarations": [ + { + "constant": false, + "id": 10484, + "mutability": "mutable", + "name": "$", + "nameLocation": "13378:1:44", + "nodeType": "VariableDeclaration", + "scope": 10502, + "src": "13350:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10483, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10482, + "name": "BookingTokenStorage", + "nameLocations": [ + "13350:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "13350:19:44" + }, + "referencedDeclaration": 10029, + "src": "13350:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10487, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10485, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "13382:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13382:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13350:57:44" + }, + { + "expression": { + "id": 10500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 10488, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10484, + "src": "13417:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10491, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13419:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "13417:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10492, + "indexExpression": { + "id": 10490, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10468, + "src": "13433:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13417:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10494, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10470, + "src": "13461:11:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10495, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10472, + "src": "13474:8:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10496, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10474, + "src": "13484:19:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10497, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10476, + "src": "13505:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10498, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10479, + "src": "13512:12:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10493, + "name": "TokenReservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10016, + "src": "13444:16:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_TokenReservation_$10016_storage_ptr_$", + "typeString": "type(struct BookingToken.TokenReservation storage pointer)" + } + }, + "id": 10499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13444:81:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "src": "13417:108:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 10501, + "nodeType": "ExpressionStatement", + "src": "13417:108:44" + } + ] + }, + "documentation": { + "id": 10466, + "nodeType": "StructuredDocumentation", + "src": "13039:94:44", + "text": " @notice Reserve a token for a specific address with an expiration timestamp" + }, + "id": 10503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reserve", + "nameLocation": "13147:8:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10468, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13173:7:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13165:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13165:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10470, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "13198:11:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13190:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13190:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10472, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "13227:8:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13219:16:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13219:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10474, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "13253:19:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13245:27:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13245:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10476, + "mutability": "mutable", + "name": "price", + "nameLocation": "13290:5:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13282:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13282:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10479, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "13312:12:44", + "nodeType": "VariableDeclaration", + "scope": 10503, + "src": "13305:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10478, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10477, + "name": "IERC20", + "nameLocations": [ + "13305:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "13305:6:44" + }, + "referencedDeclaration": 4445, + "src": "13305:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "13155:175:44" + }, + "returnParameters": { + "id": 10481, + "nodeType": "ParameterList", + "parameters": [], + "src": "13340:0:44" + }, + "scope": 10822, + "src": "13138:394:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10551, + "nodeType": "Block", + "src": "13657:838:44", + "statements": [ + { + "assignments": [ + 10511 + ], + "declarations": [ + { + "constant": false, + "id": 10511, + "mutability": "mutable", + "name": "$", + "nameLocation": "13695:1:44", + "nodeType": "VariableDeclaration", + "scope": 10551, + "src": "13667:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10510, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10509, + "name": "BookingTokenStorage", + "nameLocations": [ + "13667:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "13667:19:44" + }, + "referencedDeclaration": 10029, + "src": "13667:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10514, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10512, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "13699:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13699:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13667:57:44" + }, + { + "assignments": [ + 10517 + ], + "declarations": [ + { + "constant": false, + "id": 10517, + "mutability": "mutable", + "name": "reservation", + "nameLocation": "13758:11:44", + "nodeType": "VariableDeclaration", + "scope": 10551, + "src": "13734:35:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation" + }, + "typeName": { + "id": 10516, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10515, + "name": "TokenReservation", + "nameLocations": [ + "13734:16:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10016, + "src": "13734:16:44" + }, + "referencedDeclaration": 10016, + "src": "13734:16:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + }, + "visibility": "internal" + } + ], + "id": 10522, + "initialValue": { + "baseExpression": { + "expression": { + "id": 10518, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10511, + "src": "13772:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10519, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13774:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "13772:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10521, + "indexExpression": { + "id": 10520, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10506, + "src": "13788:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13772:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13734:62:44" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10523, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "14135:5:44", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14141:9:44", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "14135:15:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 10525, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "14154:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10526, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14166:19:44", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 10010, + "src": "14154:31:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14135:50:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10535, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "14319:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10536, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14331:11:44", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 10006, + "src": "14319:23:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 10539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14354:1:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14346:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14346:7:44", + "typeDescriptions": {} + } + }, + "id": 10540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14346:10:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14319:37:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10549, + "nodeType": "IfStatement", + "src": "14315:174:44", + "trueBody": { + "id": 10548, + "nodeType": "Block", + "src": "14358:131:44", + "statements": [ + { + "expression": { + "id": 10546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "14447:31:44", + "subExpression": { + "baseExpression": { + "expression": { + "id": 10542, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10511, + "src": "14454:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10543, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14456:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "14454:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10545, + "indexExpression": { + "id": 10544, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10506, + "src": "14470:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14454:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10547, + "nodeType": "ExpressionStatement", + "src": "14447:31:44" + } + ] + } + }, + "id": 10550, + "nodeType": "IfStatement", + "src": "14131:358:44", + "trueBody": { + "id": 10534, + "nodeType": "Block", + "src": "14187:122:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10529, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10506, + "src": "14265:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10530, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "14274:11:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 10531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14286:11:44", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 10006, + "src": "14274:23:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10528, + "name": "TokenIsReserved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10110, + "src": "14249:15:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) pure" + } + }, + "id": 10532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14249:49:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10533, + "nodeType": "RevertStatement", + "src": "14242:56:44" + } + ] + } + } + ] + }, + "documentation": { + "id": 10504, + "nodeType": "StructuredDocumentation", + "src": "13538:61:44", + "text": " @notice Check if the token is transferable" + }, + "id": 10552, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkTransferable", + "nameLocation": "13613:17:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10506, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13639:7:44", + "nodeType": "VariableDeclaration", + "scope": 10552, + "src": "13631:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13631:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13630:17:44" + }, + "returnParameters": { + "id": 10508, + "nodeType": "ParameterList", + "parameters": [], + "src": "13657:0:44" + }, + "scope": 10822, + "src": "13604:891:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10568, + "nodeType": "Block", + "src": "14736:83:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10565, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10555, + "src": "14804:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10561, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10624, + "src": "14771:17:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 10562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14771:19:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10560, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11872, + "src": "14753:17:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$11872_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 10563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14753:38:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$11872", + "typeString": "contract ICMAccountManager" + } + }, + "id": 10564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14792:11:44", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11857, + "src": "14753:50:44", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 10566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14753:59:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10559, + "id": 10567, + "nodeType": "Return", + "src": "14746:66:44" + } + ] + }, + "documentation": { + "id": 10553, + "nodeType": "StructuredDocumentation", + "src": "14501:165:44", + "text": " @notice Checks if an address is a CM Account.\n @param account The address to check\n @return true if the address is a CM Account" + }, + "functionSelector": "12b357b5", + "id": 10569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "14680:11:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10555, + "mutability": "mutable", + "name": "account", + "nameLocation": "14700:7:44", + "nodeType": "VariableDeclaration", + "scope": 10569, + "src": "14692:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14692:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14691:17:44" + }, + "returnParameters": { + "id": 10559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10558, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10569, + "src": "14730:4:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10557, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14730:4:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14729:6:44" + }, + "scope": 10822, + "src": "14671:148:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10585, + "nodeType": "Block", + "src": "15021:96:44", + "statements": [ + { + "condition": { + "id": 10578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15035:21:44", + "subExpression": { + "arguments": [ + { + "id": 10576, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10572, + "src": "15048:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10575, + "name": "isCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10569, + "src": "15036:11:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 10577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15036:20:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10584, + "nodeType": "IfStatement", + "src": "15031:80:44", + "trueBody": { + "id": 10583, + "nodeType": "Block", + "src": "15058:53:44", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10580, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10572, + "src": "15092:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10579, + "name": "NotCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10075, + "src": "15079:12:44", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 10581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15079:21:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10582, + "nodeType": "RevertStatement", + "src": "15072:28:44" + } + ] + } + } + ] + }, + "documentation": { + "id": 10570, + "nodeType": "StructuredDocumentation", + "src": "14825:134:44", + "text": " @notice Checks if the address is a CM Account and reverts if not.\n @param account The address to check" + }, + "id": 10586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireCMAccount", + "nameLocation": "14973:16:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10572, + "mutability": "mutable", + "name": "account", + "nameLocation": "14998:7:44", + "nodeType": "VariableDeclaration", + "scope": 10586, + "src": "14990:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14990:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14989:17:44" + }, + "returnParameters": { + "id": 10574, + "nodeType": "ParameterList", + "parameters": [], + "src": "15021:0:44" + }, + "scope": 10822, + "src": "14964:153:44", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10607, + "nodeType": "Block", + "src": "15320:104:44", + "statements": [ + { + "assignments": [ + 10597 + ], + "declarations": [ + { + "constant": false, + "id": 10597, + "mutability": "mutable", + "name": "$", + "nameLocation": "15358:1:44", + "nodeType": "VariableDeclaration", + "scope": 10607, + "src": "15330:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10596, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10595, + "name": "BookingTokenStorage", + "nameLocations": [ + "15330:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "15330:19:44" + }, + "referencedDeclaration": 10029, + "src": "15330:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10600, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10598, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "15362:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15362:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15330:57:44" + }, + { + "expression": { + "id": 10605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10601, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10597, + "src": "15397:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10603, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15399:8:44", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 10019, + "src": "15397:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10604, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10589, + "src": "15410:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15397:20:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10606, + "nodeType": "ExpressionStatement", + "src": "15397:20:44" + } + ] + }, + "documentation": { + "id": 10587, + "nodeType": "StructuredDocumentation", + "src": "15123:112:44", + "text": " @notice Sets for the manager address.\n @param manager The address of the manager" + }, + "functionSelector": "41431908", + "id": 10608, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 10592, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "15300:18:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 10593, + "kind": "modifierInvocation", + "modifierName": { + "id": 10591, + "name": "onlyRole", + "nameLocations": [ + "15291:8:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15291:8:44" + }, + "nodeType": "ModifierInvocation", + "src": "15291:28:44" + } + ], + "name": "setManagerAddress", + "nameLocation": "15249:17:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10589, + "mutability": "mutable", + "name": "manager", + "nameLocation": "15275:7:44", + "nodeType": "VariableDeclaration", + "scope": 10608, + "src": "15267:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15267:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15266:17:44" + }, + "returnParameters": { + "id": 10594, + "nodeType": "ParameterList", + "parameters": [], + "src": "15320:0:44" + }, + "scope": 10822, + "src": "15240:184:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10623, + "nodeType": "Block", + "src": "15553:101:44", + "statements": [ + { + "assignments": [ + 10616 + ], + "declarations": [ + { + "constant": false, + "id": 10616, + "mutability": "mutable", + "name": "$", + "nameLocation": "15591:1:44", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "15563:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10615, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10614, + "name": "BookingTokenStorage", + "nameLocations": [ + "15563:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "15563:19:44" + }, + "referencedDeclaration": 10029, + "src": "15563:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10619, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10617, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "15595:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15595:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15563:57:44" + }, + { + "expression": { + "expression": { + "id": 10620, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10616, + "src": "15637:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10621, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15639:8:44", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 10019, + "src": "15637:10:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10613, + "id": 10622, + "nodeType": "Return", + "src": "15630:17:44" + } + ] + }, + "documentation": { + "id": 10609, + "nodeType": "StructuredDocumentation", + "src": "15430:59:44", + "text": " @notice Returns for the manager address." + }, + "functionSelector": "c162d7da", + "id": 10624, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "15503:17:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10610, + "nodeType": "ParameterList", + "parameters": [], + "src": "15520:2:44" + }, + "returnParameters": { + "id": 10613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10612, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10624, + "src": "15544:7:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15544:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15543:9:44" + }, + "scope": 10822, + "src": "15494:160:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10645, + "nodeType": "Block", + "src": "15979:142:44", + "statements": [ + { + "assignments": [ + 10635 + ], + "declarations": [ + { + "constant": false, + "id": 10635, + "mutability": "mutable", + "name": "$", + "nameLocation": "16017:1:44", + "nodeType": "VariableDeclaration", + "scope": 10645, + "src": "15989:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10634, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10633, + "name": "BookingTokenStorage", + "nameLocations": [ + "15989:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "15989:19:44" + }, + "referencedDeclaration": 10029, + "src": "15989:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10638, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10636, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "16021:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16021:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15989:57:44" + }, + { + "expression": { + "id": 10643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10639, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10635, + "src": "16056:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10641, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16058:27:44", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 10023, + "src": "16056:29:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10642, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10627, + "src": "16088:26:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16056:58:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10644, + "nodeType": "ExpressionStatement", + "src": "16056:58:44" + } + ] + }, + "documentation": { + "id": 10625, + "nodeType": "StructuredDocumentation", + "src": "15660:182:44", + "text": " @notice Sets minimum expiration timestamp difference in seconds.\n @param minExpirationTimestampDiff Minimum expiration timestamp difference in seconds" + }, + "functionSelector": "516a82b8", + "id": 10646, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 10630, + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10004, + "src": "15952:25:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 10631, + "kind": "modifierInvocation", + "modifierName": { + "id": 10629, + "name": "onlyRole", + "nameLocations": [ + "15943:8:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15943:8:44" + }, + "nodeType": "ModifierInvocation", + "src": "15943:35:44" + } + ], + "name": "setMinExpirationTimestampDiff", + "nameLocation": "15856:29:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10627, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "15903:26:44", + "nodeType": "VariableDeclaration", + "scope": 10646, + "src": "15895:34:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15895:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15885:50:44" + }, + "returnParameters": { + "id": 10632, + "nodeType": "ParameterList", + "parameters": [], + "src": "15979:0:44" + }, + "scope": 10822, + "src": "15847:274:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10661, + "nodeType": "Block", + "src": "16289:120:44", + "statements": [ + { + "assignments": [ + 10654 + ], + "declarations": [ + { + "constant": false, + "id": 10654, + "mutability": "mutable", + "name": "$", + "nameLocation": "16327:1:44", + "nodeType": "VariableDeclaration", + "scope": 10661, + "src": "16299:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10653, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10652, + "name": "BookingTokenStorage", + "nameLocations": [ + "16299:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "16299:19:44" + }, + "referencedDeclaration": 10029, + "src": "16299:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10657, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10655, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "16331:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16331:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16299:57:44" + }, + { + "expression": { + "expression": { + "id": 10658, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10654, + "src": "16373:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16375:27:44", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 10023, + "src": "16373:29:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10651, + "id": 10660, + "nodeType": "Return", + "src": "16366:36:44" + } + ] + }, + "documentation": { + "id": 10647, + "nodeType": "StructuredDocumentation", + "src": "16127:86:44", + "text": " @notice Returns minimum expiration timestamp difference in seconds." + }, + "functionSelector": "0e75c1a8", + "id": 10662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMinExpirationTimestampDiff", + "nameLocation": "16227:29:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10648, + "nodeType": "ParameterList", + "parameters": [], + "src": "16256:2:44" + }, + "returnParameters": { + "id": 10651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10650, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10662, + "src": "16280:7:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16280:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16279:9:44" + }, + "scope": 10822, + "src": "16218:191:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10691, + "nodeType": "Block", + "src": "16649:162:44", + "statements": [ + { + "assignments": [ + 10675 + ], + "declarations": [ + { + "constant": false, + "id": 10675, + "mutability": "mutable", + "name": "$", + "nameLocation": "16687:1:44", + "nodeType": "VariableDeclaration", + "scope": 10691, + "src": "16659:29:44", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 10674, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10673, + "name": "BookingTokenStorage", + "nameLocations": [ + "16659:19:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10029, + "src": "16659:19:44" + }, + "referencedDeclaration": 10029, + "src": "16659:19:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10678, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10676, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10040, + "src": "16691:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$10029_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 10677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16691:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16659:57:44" + }, + { + "expression": { + "components": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 10679, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10675, + "src": "16734:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16736:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "16734:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10682, + "indexExpression": { + "id": 10681, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10665, + "src": "16750:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16734:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 10683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16759:5:44", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 10012, + "src": "16734:30:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 10684, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10675, + "src": "16766:1:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$10029_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 10685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16768:13:44", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 10028, + "src": "16766:15:44", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$10016_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 10687, + "indexExpression": { + "id": 10686, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10665, + "src": "16782:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16766:24:44", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$10016_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 10688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16791:12:44", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10015, + "src": "16766:37:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "id": 10689, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16733:71:44", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_contract$_IERC20_$4445_$", + "typeString": "tuple(uint256,contract IERC20)" + } + }, + "functionReturnParameters": 10672, + "id": 10690, + "nodeType": "Return", + "src": "16726:78:44" + } + ] + }, + "documentation": { + "id": 10663, + "nodeType": "StructuredDocumentation", + "src": "16415:126:44", + "text": " @notice Returns the token reservation price for a specific token.\n @param tokenId The token id" + }, + "functionSelector": "004fdd3c", + "id": 10692, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReservationPrice", + "nameLocation": "16555:19:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10665, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16583:7:44", + "nodeType": "VariableDeclaration", + "scope": 10692, + "src": "16575:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16575:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16574:17:44" + }, + "returnParameters": { + "id": 10672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10668, + "mutability": "mutable", + "name": "price", + "nameLocation": "16621:5:44", + "nodeType": "VariableDeclaration", + "scope": 10692, + "src": "16613:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16613:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10671, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "16635:12:44", + "nodeType": "VariableDeclaration", + "scope": 10692, + "src": "16628:19:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10670, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10669, + "name": "IERC20", + "nameLocations": [ + "16628:6:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "16628:6:44" + }, + "referencedDeclaration": 4445, + "src": "16628:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "16612:36:44" + }, + "scope": 10822, + "src": "16546:265:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1389, + 4879 + ], + "body": { + "id": 10717, + "nodeType": "Block", + "src": "17227:159:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10706, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10699, + "src": "17324:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10705, + "name": "checkTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10552, + "src": "17306:17:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 10707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17306:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10708, + "nodeType": "ExpressionStatement", + "src": "17306:26:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10712, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10695, + "src": "17361:4:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10713, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10697, + "src": "17367:2:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10714, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10699, + "src": "17371:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10709, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "17342:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17348:12:44", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1389, + "src": "17342:18:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17342:37:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10716, + "nodeType": "ExpressionStatement", + "src": "17342:37:44" + } + ] + }, + "documentation": { + "id": 10693, + "nodeType": "StructuredDocumentation", + "src": "16990:123:44", + "text": " @notice Override transferFrom to check if token is reserved. It reverts if\n the token is reserved." + }, + "functionSelector": "23b872dd", + "id": 10718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "17127:12:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10703, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10701, + "name": "ERC721Upgradeable", + "nameLocations": [ + "17199:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "17199:17:44" + }, + { + "id": 10702, + "name": "IERC721", + "nameLocations": [ + "17218:7:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "17218:7:44" + } + ], + "src": "17190:36:44" + }, + "parameters": { + "id": 10700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10695, + "mutability": "mutable", + "name": "from", + "nameLocation": "17148:4:44", + "nodeType": "VariableDeclaration", + "scope": 10718, + "src": "17140:12:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17140:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10697, + "mutability": "mutable", + "name": "to", + "nameLocation": "17162:2:44", + "nodeType": "VariableDeclaration", + "scope": 10718, + "src": "17154:10:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17154:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10699, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17174:7:44", + "nodeType": "VariableDeclaration", + "scope": 10718, + "src": "17166:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17166:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17139:43:44" + }, + "returnParameters": { + "id": 10704, + "nodeType": "ParameterList", + "parameters": [], + "src": "17227:0:44" + }, + "scope": 10822, + "src": "17118:268:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1433, + 4859 + ], + "body": { + "id": 10746, + "nodeType": "Block", + "src": "17694:169:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10734, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10725, + "src": "17791:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10733, + "name": "checkTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10552, + "src": "17773:17:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 10735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17773:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10736, + "nodeType": "ExpressionStatement", + "src": "17773:26:44" + }, + { + "expression": { + "arguments": [ + { + "id": 10740, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10721, + "src": "17832:4:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10741, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10723, + "src": "17838:2:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10742, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10725, + "src": "17842:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10743, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10727, + "src": "17851:4:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 10737, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "17809:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17815:16:44", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1433, + "src": "17809:22:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 10744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17809:47:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10745, + "nodeType": "ExpressionStatement", + "src": "17809:47:44" + } + ] + }, + "documentation": { + "id": 10719, + "nodeType": "StructuredDocumentation", + "src": "17392:127:44", + "text": " @notice Override safeTransferFrom to check if token is reserved. It reverts if\n the token is reserved." + }, + "functionSelector": "b88d4fde", + "id": 10747, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "17533:16:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10731, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10729, + "name": "ERC721Upgradeable", + "nameLocations": [ + "17666:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "17666:17:44" + }, + { + "id": 10730, + "name": "IERC721", + "nameLocations": [ + "17685:7:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4914, + "src": "17685:7:44" + } + ], + "src": "17657:36:44" + }, + "parameters": { + "id": 10728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10721, + "mutability": "mutable", + "name": "from", + "nameLocation": "17567:4:44", + "nodeType": "VariableDeclaration", + "scope": 10747, + "src": "17559:12:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17559:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10723, + "mutability": "mutable", + "name": "to", + "nameLocation": "17589:2:44", + "nodeType": "VariableDeclaration", + "scope": 10747, + "src": "17581:10:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17581:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10725, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17609:7:44", + "nodeType": "VariableDeclaration", + "scope": 10747, + "src": "17601:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17601:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10727, + "mutability": "mutable", + "name": "data", + "nameLocation": "17639:4:44", + "nodeType": "VariableDeclaration", + "scope": 10747, + "src": "17626:17:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17626:5:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "17549:100:44" + }, + "returnParameters": { + "id": 10732, + "nodeType": "ParameterList", + "parameters": [], + "src": "17694:0:44" + }, + "scope": 10822, + "src": "17524:339:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1672, + 2380 + ], + "body": { + "id": 10768, + "nodeType": "Block", + "src": "18256:56:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10763, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10749, + "src": "18287:2:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10764, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10751, + "src": "18291:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10765, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10753, + "src": "18300:4:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 10761, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "18273:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18279:7:44", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 2380, + "src": "18273:13:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 10766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18273:32:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10760, + "id": 10767, + "nodeType": "Return", + "src": "18266:39:44" + } + ] + }, + "id": 10769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "18091:7:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10757, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10755, + "name": "ERC721Upgradeable", + "nameLocations": [ + "18190:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "18190:17:44" + }, + { + "id": 10756, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "18209:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2616, + "src": "18209:27:44" + } + ], + "src": "18181:56:44" + }, + "parameters": { + "id": 10754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10749, + "mutability": "mutable", + "name": "to", + "nameLocation": "18116:2:44", + "nodeType": "VariableDeclaration", + "scope": 10769, + "src": "18108:10:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18108:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10751, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18136:7:44", + "nodeType": "VariableDeclaration", + "scope": 10769, + "src": "18128:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18128:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10753, + "mutability": "mutable", + "name": "auth", + "nameLocation": "18161:4:44", + "nodeType": "VariableDeclaration", + "scope": 10769, + "src": "18153:12:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18153:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18098:73:44" + }, + "returnParameters": { + "id": 10760, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10759, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10769, + "src": "18247:7:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18247:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18246:9:44" + }, + "scope": 10822, + "src": "18082:230:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1570, + 2615 + ], + "body": { + "id": 10786, + "nodeType": "Block", + "src": "18464:55:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10782, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10771, + "src": "18497:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10783, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10773, + "src": "18506:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 10779, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "18474:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18480:16:44", + "memberName": "_increaseBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2615, + "src": "18474:22:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$", + "typeString": "function (address,uint128)" + } + }, + "id": 10784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18474:38:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10785, + "nodeType": "ExpressionStatement", + "src": "18474:38:44" + } + ] + }, + "id": 10787, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "18327:16:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10777, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10775, + "name": "ERC721Upgradeable", + "nameLocations": [ + "18416:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "18416:17:44" + }, + { + "id": 10776, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "18435:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2616, + "src": "18435:27:44" + } + ], + "src": "18407:56:44" + }, + "parameters": { + "id": 10774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10771, + "mutability": "mutable", + "name": "account", + "nameLocation": "18361:7:44", + "nodeType": "VariableDeclaration", + "scope": 10787, + "src": "18353:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18353:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10773, + "mutability": "mutable", + "name": "value", + "nameLocation": "18386:5:44", + "nodeType": "VariableDeclaration", + "scope": 10787, + "src": "18378:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 10772, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "18378:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "18343:54:44" + }, + "returnParameters": { + "id": 10778, + "nodeType": "ParameterList", + "parameters": [], + "src": "18464:0:44" + }, + "scope": 10822, + "src": "18318:201:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1261, + 2758 + ], + "body": { + "id": 10802, + "nodeType": "Block", + "src": "18667:47:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10799, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10789, + "src": "18699:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10797, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "18684:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18690:8:44", + "memberName": "tokenURI", + "nodeType": "MemberAccess", + "referencedDeclaration": 2758, + "src": "18684:14:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) view returns (string memory)" + } + }, + "id": 10800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18684:23:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 10796, + "id": 10801, + "nodeType": "Return", + "src": "18677:30:44" + } + ] + }, + "functionSelector": "c87b56dd", + "id": 10803, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "18534:8:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10793, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10791, + "name": "ERC721Upgradeable", + "nameLocations": [ + "18595:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "18595:17:44" + }, + { + "id": 10792, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "18614:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2786, + "src": "18614:27:44" + } + ], + "src": "18586:56:44" + }, + "parameters": { + "id": 10790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10789, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18560:7:44", + "nodeType": "VariableDeclaration", + "scope": 10803, + "src": "18552:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18552:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18542:31:44" + }, + "returnParameters": { + "id": 10796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10795, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10803, + "src": "18652:13:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10794, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18652:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18651:15:44" + }, + "scope": 10822, + "src": "18525:189:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 91, + 1145, + 2224, + 2694 + ], + "body": { + "id": 10820, + "nodeType": "Block", + "src": "18956:60:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10817, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10805, + "src": "18997:11:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 10815, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "18973:5:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$10822_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 10816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18979:17:44", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "18973:23:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 10818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18973:36:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10814, + "id": 10819, + "nodeType": "Return", + "src": "18966:43:44" + } + ] + }, + "functionSelector": "01ffc9a7", + "id": 10821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "18729:17:44", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10811, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 10807, + "name": "ERC721Upgradeable", + "nameLocations": [ + "18826:17:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2131, + "src": "18826:17:44" + }, + { + "id": 10808, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "18845:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2616, + "src": "18845:27:44" + }, + { + "id": 10809, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "18874:27:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2786, + "src": "18874:27:44" + }, + { + "id": 10810, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "18903:24:44" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "18903:24:44" + } + ], + "src": "18817:111:44" + }, + "parameters": { + "id": 10806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10805, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "18763:11:44", + "nodeType": "VariableDeclaration", + "scope": 10821, + "src": "18756:18:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10804, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "18756:6:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "18746:34:44" + }, + "returnParameters": { + "id": 10814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10813, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10821, + "src": "18946:4:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10812, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18946:4:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "18945:6:44" + }, + "scope": 10822, + "src": "18720:296:44", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 10823, + "src": "1637:17381:44", + "usedErrors": [ + 580, + 583, + 844, + 849, + 2185, + 2188, + 3039, + 3187, + 3190, + 3376, + 3381, + 3390, + 3395, + 3400, + 3407, + 3412, + 3417, + 3538, + 3551, + 4524, + 5000, + 5005, + 5008, + 10070, + 10075, + 10082, + 10089, + 10096, + 10103, + 10110, + 10122 + ], + "usedEvents": [ + 588, + 3199, + 3208, + 3217, + 3306, + 3313, + 3517, + 4813, + 4822, + 4831, + 10056, + 10063 + ] + } + ], + "src": "32:18987:44" + }, + "id": 44 + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "exportedSymbols": { + "BookingTokenOperator": [ + 10945 + ], + "IBookingToken": [ + 10979 + ], + "IERC20": [ + 4445 + ], + "SafeERC20": [ + 4797 + ] + }, + "id": 10946, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10824, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "32:24:45" + }, + { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "file": "./IBookingToken.sol", + "id": 10825, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10946, + "sourceUnit": 10980, + "src": "58:29:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 10827, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10946, + "sourceUnit": 4798, + "src": "105:84:45", + "symbolAliases": [ + { + "foreign": { + "id": 10826, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4797, + "src": "114:9:45", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BookingTokenOperator", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10828, + "nodeType": "StructuredDocumentation", + "src": "191:279:45", + "text": " @title BookingTokenOperator\n @notice Booking token operator contract is used by the {CMAccount} contract to mint\n and buy booking tokens.\n We made this a library so that we can use it in the {CMAccount} contract without\n increasing the size of the contract." + }, + "fullyImplemented": true, + "id": 10945, + "linearizedBaseContracts": [ + 10945 + ], + "name": "BookingTokenOperator", + "nameLocation": "479:20:45", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 10832, + "libraryName": { + "id": 10829, + "name": "SafeERC20", + "nameLocations": [ + "512:9:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4797, + "src": "512:9:45" + }, + "nodeType": "UsingForDirective", + "src": "506:27:45", + "typeName": { + "id": 10831, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10830, + "name": "IERC20", + "nameLocations": [ + "526:6:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "526:6:45" + }, + "referencedDeclaration": 4445, + "src": "526:6:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + }, + { + "documentation": { + "id": 10833, + "nodeType": "StructuredDocumentation", + "src": "539:239:45", + "text": " @dev Token approval for the BookingToken address failed.\n @param token token address\n @param spender spender address (the BookingToken contract address)\n @param amount amount of tokens to approve" + }, + "errorSelector": "3337e731", + "id": 10841, + "name": "TokenApprovalFailed", + "nameLocation": "789:19:45", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10835, + "mutability": "mutable", + "name": "token", + "nameLocation": "817:5:45", + "nodeType": "VariableDeclaration", + "scope": 10841, + "src": "809:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10834, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "809:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10837, + "mutability": "mutable", + "name": "spender", + "nameLocation": "832:7:45", + "nodeType": "VariableDeclaration", + "scope": 10841, + "src": "824:15:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10836, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "824:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10839, + "mutability": "mutable", + "name": "amount", + "nameLocation": "849:6:45", + "nodeType": "VariableDeclaration", + "scope": 10841, + "src": "841:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "841:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "808:48:45" + }, + "src": "783:74:45" + }, + { + "body": { + "id": 10869, + "nodeType": "Block", + "src": "1505:128:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10862, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10846, + "src": "1567:11:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10863, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10848, + "src": "1580:3:45", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 10864, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10850, + "src": "1585:19:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10865, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10852, + "src": "1606:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10866, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10855, + "src": "1613:12:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "expression": { + "arguments": [ + { + "id": 10859, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10844, + "src": "1529:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10858, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "1515:13:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$10979_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 10860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1515:27:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$10979", + "typeString": "contract IBookingToken" + } + }, + "id": 10861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1543:23:45", + "memberName": "safeMintWithReservation", + "nodeType": "MemberAccess", + "referencedDeclaration": 10963, + "src": "1515:51:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4445_$returns$__$", + "typeString": "function (address,string memory,uint256,uint256,contract IERC20) external" + } + }, + "id": 10867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1515:111:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10868, + "nodeType": "ExpressionStatement", + "src": "1515:111:45" + } + ] + }, + "documentation": { + "id": 10842, + "nodeType": "StructuredDocumentation", + "src": "863:423:45", + "text": " @dev Mints a booking token.\n @param bookingToken booking token contract address\n @param reservedFor address of the CM Account that can buy the token\n (generally the distributor)\n @param uri URI of the token\n @param expirationTimestamp expiration timestamp of the token in seconds\n @param price price of the token\n @param paymentToken payment token address" + }, + "functionSelector": "53ea54c5", + "id": 10870, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintBookingToken", + "nameLocation": "1300:16:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10844, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "1334:12:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1326:20:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1326:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10846, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "1364:11:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1356:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1356:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10848, + "mutability": "mutable", + "name": "uri", + "nameLocation": "1399:3:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1385:17:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10847, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1385:6:45", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10850, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "1420:19:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1412:27:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1412:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10852, + "mutability": "mutable", + "name": "price", + "nameLocation": "1457:5:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1449:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1449:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10855, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "1479:12:45", + "nodeType": "VariableDeclaration", + "scope": 10870, + "src": "1472:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10854, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10853, + "name": "IERC20", + "nameLocations": [ + "1472:6:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "1472:6:45" + }, + "referencedDeclaration": 4445, + "src": "1472:6:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "1316:181:45" + }, + "returnParameters": { + "id": 10857, + "nodeType": "ParameterList", + "parameters": [], + "src": "1505:0:45" + }, + "scope": 10945, + "src": "1291:342:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10943, + "nodeType": "Block", + "src": "1925:1033:45", + "statements": [ + { + "assignments": [ + 10879, + 10882 + ], + "declarations": [ + { + "constant": false, + "id": 10879, + "mutability": "mutable", + "name": "price", + "nameLocation": "2001:5:45", + "nodeType": "VariableDeclaration", + "scope": 10943, + "src": "1993:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1993:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10882, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "2015:12:45", + "nodeType": "VariableDeclaration", + "scope": 10943, + "src": "2008:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10881, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10880, + "name": "IERC20", + "nameLocations": [ + "2008:6:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "2008:6:45" + }, + "referencedDeclaration": 4445, + "src": "2008:6:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 10889, + "initialValue": { + "arguments": [ + { + "id": 10887, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10875, + "src": "2079:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 10884, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10873, + "src": "2045:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10883, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "2031:13:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$10979_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 10885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2031:27:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$10979", + "typeString": "contract IBookingToken" + } + }, + "id": 10886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2059:19:45", + "memberName": "getReservationPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 10978, + "src": "2031:47:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$_t_contract$_IERC20_$4445_$", + "typeString": "function (uint256) view external returns (uint256,contract IERC20)" + } + }, + "id": 10888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2031:56:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_contract$_IERC20_$4445_$", + "typeString": "tuple(uint256,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1992:95:45" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10892, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10882, + "src": "2172:12:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2164:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2164:7:45", + "typeDescriptions": {} + } + }, + "id": 10893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2164:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 10896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2197:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2189:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2189:7:45", + "typeDescriptions": {} + } + }, + "id": 10897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2189:10:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2164:35:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10899, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10879, + "src": "2203:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 10900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2211:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2203:9:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2164:48:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 10941, + "nodeType": "Block", + "src": "2711:241:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10938, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10875, + "src": "2933:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 10933, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10873, + "src": "2886:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10932, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "2872:13:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$10979_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 10934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2872:27:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$10979", + "typeString": "contract IBookingToken" + } + }, + "id": 10935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2900:16:45", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10968, + "src": "2872:44:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 10937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 10936, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10879, + "src": "2925:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2872:60:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$value", + "typeString": "function (uint256) payable external" + } + }, + "id": 10939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2872:69:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10940, + "nodeType": "ExpressionStatement", + "src": "2872:69:45" + } + ] + }, + "id": 10942, + "nodeType": "IfStatement", + "src": "2160:792:45", + "trueBody": { + "id": 10931, + "nodeType": "Block", + "src": "2214:491:45", + "statements": [ + { + "assignments": [ + 10904 + ], + "declarations": [ + { + "constant": false, + "id": 10904, + "mutability": "mutable", + "name": "approval", + "nameLocation": "2413:8:45", + "nodeType": "VariableDeclaration", + "scope": 10931, + "src": "2408:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10903, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2408:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 10910, + "initialValue": { + "arguments": [ + { + "id": 10907, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10873, + "src": "2445:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10908, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10879, + "src": "2459:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10905, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10882, + "src": "2424:12:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "id": 10906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2437:7:45", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4432, + "src": "2424:20:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 10909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2424:41:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2408:57:45" + }, + { + "condition": { + "id": 10912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2484:9:45", + "subExpression": { + "id": 10911, + "name": "approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10904, + "src": "2485:8:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10923, + "nodeType": "IfStatement", + "src": "2480:118:45", + "trueBody": { + "id": 10922, + "nodeType": "Block", + "src": "2495:103:45", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10914, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10873, + "src": "2540:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 10917, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10882, + "src": "2562:12:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + ], + "id": 10916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2554:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2554:7:45", + "typeDescriptions": {} + } + }, + "id": 10918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2554:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10919, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10879, + "src": "2577:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10913, + "name": "TokenApprovalFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10841, + "src": "2520:19:45", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) pure" + } + }, + "id": 10920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2520:63:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10921, + "nodeType": "RevertStatement", + "src": "2513:70:45" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 10928, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10875, + "src": "2686:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 10925, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10873, + "src": "2655:12:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10924, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10979, + "src": "2641:13:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$10979_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 10926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2641:27:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$10979", + "typeString": "contract IBookingToken" + } + }, + "id": 10927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2669:16:45", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10968, + "src": "2641:44:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 10929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2641:53:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10930, + "nodeType": "ExpressionStatement", + "src": "2641:53:45" + } + ] + } + } + ] + }, + "documentation": { + "id": 10871, + "nodeType": "StructuredDocumentation", + "src": "1639:210:45", + "text": " @dev Buys a booking token with the specified price and payment token in the\n reservation.\n @param bookingToken booking token contract address\n @param tokenId token id" + }, + "functionSelector": "1b29e1ba", + "id": 10944, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "buyBookingToken", + "nameLocation": "1863:15:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10873, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "1887:12:45", + "nodeType": "VariableDeclaration", + "scope": 10944, + "src": "1879:20:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10872, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10875, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1909:7:45", + "nodeType": "VariableDeclaration", + "scope": 10944, + "src": "1901:15:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1901:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1878:39:45" + }, + "returnParameters": { + "id": 10877, + "nodeType": "ParameterList", + "parameters": [], + "src": "1925:0:45" + }, + "scope": 10945, + "src": "1854:1104:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 10946, + "src": "471:2489:45", + "usedErrors": [ + 10841 + ], + "usedEvents": [] + } + ], + "src": "32:2929:45" + }, + "id": 45 + }, + "contracts/booking-token/IBookingToken.sol": { + "ast": { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "exportedSymbols": { + "IBookingToken": [ + 10979 + ], + "IERC20": [ + 4445 + ] + }, + "id": 10980, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10947, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "32:24:46" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 10949, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10980, + "sourceUnit": 4446, + "src": "58:72:46", + "symbolAliases": [ + { + "foreign": { + "id": 10948, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "67:6:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBookingToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 10979, + "linearizedBaseContracts": [ + 10979 + ], + "name": "IBookingToken", + "nameLocation": "142:13:46", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "5d4badb2", + "id": 10963, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeMintWithReservation", + "nameLocation": "171:23:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10951, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "212:11:46", + "nodeType": "VariableDeclaration", + "scope": 10963, + "src": "204:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "204:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10953, + "mutability": "mutable", + "name": "uri", + "nameLocation": "247:3:46", + "nodeType": "VariableDeclaration", + "scope": 10963, + "src": "233:17:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10952, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "233:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10955, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "268:19:46", + "nodeType": "VariableDeclaration", + "scope": 10963, + "src": "260:27:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "260:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10957, + "mutability": "mutable", + "name": "price", + "nameLocation": "305:5:46", + "nodeType": "VariableDeclaration", + "scope": 10963, + "src": "297:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10956, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10960, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "327:12:46", + "nodeType": "VariableDeclaration", + "scope": 10963, + "src": "320:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10959, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10958, + "name": "IERC20", + "nameLocations": [ + "320:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "320:6:46" + }, + "referencedDeclaration": 4445, + "src": "320:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "194:151:46" + }, + "returnParameters": { + "id": 10962, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:46" + }, + "scope": 10979, + "src": "162:193:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "96591edd", + "id": 10968, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "buyReservedToken", + "nameLocation": "370:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10965, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "395:7:46", + "nodeType": "VariableDeclaration", + "scope": 10968, + "src": "387:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "387:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "386:17:46" + }, + "returnParameters": { + "id": 10967, + "nodeType": "ParameterList", + "parameters": [], + "src": "420:0:46" + }, + "scope": 10979, + "src": "361:60:46", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "004fdd3c", + "id": 10978, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReservationPrice", + "nameLocation": "436:19:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10970, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "464:7:46", + "nodeType": "VariableDeclaration", + "scope": 10978, + "src": "456:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "456:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "455:17:46" + }, + "returnParameters": { + "id": 10977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10973, + "mutability": "mutable", + "name": "price", + "nameLocation": "504:5:46", + "nodeType": "VariableDeclaration", + "scope": 10978, + "src": "496:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "496:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10976, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "518:12:46", + "nodeType": "VariableDeclaration", + "scope": 10978, + "src": "511:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10975, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10974, + "name": "IERC20", + "nameLocations": [ + "511:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4445, + "src": "511:6:46" + }, + "referencedDeclaration": 4445, + "src": "511:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4445", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "495:36:46" + }, + "scope": 10979, + "src": "427:105:46", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 10980, + "src": "132:402:46", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:503:46" + }, + "id": 46 + }, + "contracts/manager/CMAccountManager.sol": { + "ast": { + "absolutePath": "contracts/manager/CMAccountManager.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 563 + ], + "Address": [ + 5245 + ], + "CMAccountManager": [ + 11833 + ], + "ERC1967Proxy": [ + 3503 + ], + "ICMAccount": [ + 9946 + ], + "Initializable": [ + 817 + ], + "PausableUpgradeable": [ + 3008 + ], + "ReentrancyGuardUpgradeable": [ + 3137 + ], + "ServiceRegistry": [ + 13201 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 11834, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10981, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "79:24:47" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 10983, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 818, + "src": "119:98:47", + "symbolAliases": [ + { + "foreign": { + "id": 10982, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "128:13:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": 10985, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 3504, + "src": "218:86:47", + "symbolAliases": [ + { + "foreign": { + "id": 10984, + "name": "ERC1967Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "227:12:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 10987, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 1000, + "src": "305:102:47", + "symbolAliases": [ + { + "foreign": { + "id": 10986, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "314:15:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "id": 10989, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 3009, + "src": "419:104:47", + "symbolAliases": [ + { + "foreign": { + "id": 10988, + "name": "PausableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "428:19:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "id": 10991, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 564, + "src": "524:146:47", + "symbolAliases": [ + { + "foreign": { + "id": 10990, + "name": "AccessControlEnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "533:34:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 10993, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 3138, + "src": "671:118:47", + "symbolAliases": [ + { + "foreign": { + "id": 10992, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3137, + "src": "680:26:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/ICMAccount.sol", + "file": "../account/ICMAccount.sol", + "id": 10995, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 9947, + "src": "839:55:47", + "symbolAliases": [ + { + "foreign": { + "id": 10994, + "name": "ICMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9946, + "src": "848:10:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 10997, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 5246, + "src": "905:68:47", + "symbolAliases": [ + { + "foreign": { + "id": 10996, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "914:7:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/partner/ServiceRegistry.sol", + "file": "../partner/ServiceRegistry.sol", + "id": 10999, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11834, + "sourceUnit": 13202, + "src": "995:65:47", + "symbolAliases": [ + { + "foreign": { + "id": 10998, + "name": "ServiceRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13201, + "src": "1004:15:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 11001, + "name": "Initializable", + "nameLocations": [ + "2349:13:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "2349:13:47" + }, + "id": 11002, + "nodeType": "InheritanceSpecifier", + "src": "2349:13:47" + }, + { + "baseName": { + "id": 11003, + "name": "PausableUpgradeable", + "nameLocations": [ + "2368:19:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3008, + "src": "2368:19:47" + }, + "id": 11004, + "nodeType": "InheritanceSpecifier", + "src": "2368:19:47" + }, + { + "baseName": { + "id": 11005, + "name": "AccessControlEnumerableUpgradeable", + "nameLocations": [ + "2393:34:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 563, + "src": "2393:34:47" + }, + "id": 11006, + "nodeType": "InheritanceSpecifier", + "src": "2393:34:47" + }, + { + "baseName": { + "id": 11007, + "name": "UUPSUpgradeable", + "nameLocations": [ + "2433:15:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 999, + "src": "2433:15:47" + }, + "id": 11008, + "nodeType": "InheritanceSpecifier", + "src": "2433:15:47" + }, + { + "baseName": { + "id": 11009, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "2454:26:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3137, + "src": "2454:26:47" + }, + "id": 11010, + "nodeType": "InheritanceSpecifier", + "src": "2454:26:47" + }, + { + "baseName": { + "id": 11011, + "name": "ServiceRegistry", + "nameLocations": [ + "2486:15:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13201, + "src": "2486:15:47" + }, + "id": 11012, + "nodeType": "InheritanceSpecifier", + "src": "2486:15:47" + } + ], + "canonicalName": "CMAccountManager", + "contractDependencies": [ + 3503 + ], + "contractKind": "contract", + "documentation": { + "id": 11000, + "nodeType": "StructuredDocumentation", + "src": "1062:1253:47", + "text": " @title Camino Messenger Account Manager\n @notice This contract manages the creation of the Camino Messenger accounts by\n deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation\n address.\n Create CM Account: Users who want to create an account should call\n `createCMAccount(address admin, address upgrader)` function with addresses of\n the accounts admin and upgrader roles and also send the pre fund amount,\n which is currently set as 100 CAMs. When the manager contract is paused,\n account creation is stopped.\n Developer Fee: This contracts also keeps the info about the developer wallet\n and fee basis points. Which are used during the cheque cash in to pay for the\n developer fee.\n Service Registry: {CMAccountManager} also acts as a registry for the services\n that {CMAccount} contracts add as a supported or wanted service. Registry\n works by hashing (keccak256) the service name (string) and creating a mapping\n as keccak256(serviceName) => serviceName. And provides functions that\n {CMAccount} function uses to register services. The {CMAccount} only keeps\n the hashes (byte32) of the registered services.\n @custom:security-contact https://r.xyz/program/camino-network" + }, + "fullyImplemented": true, + "id": 11833, + "linearizedBaseContracts": [ + 11833, + 13201, + 3137, + 999, + 3328, + 563, + 362, + 3177, + 6000, + 3286, + 3260, + 3008, + 2832, + 817 + ], + "name": "CMAccountManager", + "nameLocation": "2325:16:47", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 11015, + "libraryName": { + "id": 11013, + "name": "Address", + "nameLocations": [ + "2514:7:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5245, + "src": "2514:7:47" + }, + "nodeType": "UsingForDirective", + "src": "2508:34:47", + "typeName": { + "id": 11014, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2526:15:47", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "constant": true, + "documentation": { + "id": 11016, + "nodeType": "StructuredDocumentation", + "src": "2548:168:47", + "text": " @notice Pauser role can pause the contract. Currently this only affects the\n creation of CM Accounts. When paused, account creation is stopped." + }, + "functionSelector": "e63ab1e9", + "id": 11021, + "mutability": "constant", + "name": "PAUSER_ROLE", + "nameLocation": "2745:11:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "2721:62:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11017, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2721:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5041555345525f524f4c45", + "id": 11019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2769:13:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 11018, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2759:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2759:24:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11022, + "nodeType": "StructuredDocumentation", + "src": "2790:90:47", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 11027, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "2909:13:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "2885:66:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11023, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2885:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 11025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2935:15:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 11024, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2925:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2925:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11028, + "nodeType": "StructuredDocumentation", + "src": "2958:390:47", + "text": " @notice Versioner role can set new {CMAccount} implementation address. When a\n new implementation address is set, it is used for the new {CMAccount}\n creations.\n The old {CMAccount} contracts are not affected by this. Owners of those\n should do the upgrade manually by calling the `upgradeToAndCall(address)`\n function on the account." + }, + "functionSelector": "b289819c", + "id": 11033, + "mutability": "constant", + "name": "VERSIONER_ROLE", + "nameLocation": "3377:14:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "3353:68:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11029, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3353:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "56455253494f4e45525f524f4c45", + "id": 11031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3404:16:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0", + "typeString": "literal_string \"VERSIONER_ROLE\"" + }, + "value": "VERSIONER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0", + "typeString": "literal_string \"VERSIONER_ROLE\"" + } + ], + "id": 11030, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3394:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3394:27:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11034, + "nodeType": "StructuredDocumentation", + "src": "3428:170:47", + "text": " @notice Fee admin role can set the developer fee basis points which used for\n calculating the developer fee that is cut from the cheque payments." + }, + "functionSelector": "4cba593a", + "id": 11039, + "mutability": "constant", + "name": "FEE_ADMIN_ROLE", + "nameLocation": "3627:14:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "3603:68:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11035, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3603:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4645455f41444d494e5f524f4c45", + "id": 11037, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3654:16:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec17", + "typeString": "literal_string \"FEE_ADMIN_ROLE\"" + }, + "value": "FEE_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec17", + "typeString": "literal_string \"FEE_ADMIN_ROLE\"" + } + ], + "id": 11036, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3644:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3644:27:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11040, + "nodeType": "StructuredDocumentation", + "src": "3678:142:47", + "text": " @notice Developer wallet admin role can set the developer wallet address\n which is used to receive the developer fee." + }, + "functionSelector": "40df8d84", + "id": 11045, + "mutability": "constant", + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "nameLocation": "3849:27:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "3825:94:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11041, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3825:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "444556454c4f5045525f57414c4c45545f41444d494e5f524f4c45", + "id": 11043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3889:29:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb676", + "typeString": "literal_string \"DEVELOPER_WALLET_ADMIN_ROLE\"" + }, + "value": "DEVELOPER_WALLET_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb676", + "typeString": "literal_string \"DEVELOPER_WALLET_ADMIN_ROLE\"" + } + ], + "id": 11042, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3879:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3879:40:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11046, + "nodeType": "StructuredDocumentation", + "src": "3926:116:47", + "text": " @notice Prefund admin role can set the mandatory prefund amount for {CMAccount}\n contracts." + }, + "functionSelector": "01601d2f", + "id": 11051, + "mutability": "constant", + "name": "PREFUND_ADMIN_ROLE", + "nameLocation": "4071:18:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "4047:76:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11047, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4047:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "50524546554e445f41444d494e5f524f4c45", + "id": 11049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4102:20:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83", + "typeString": "literal_string \"PREFUND_ADMIN_ROLE\"" + }, + "value": "PREFUND_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_30f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83", + "typeString": "literal_string \"PREFUND_ADMIN_ROLE\"" + } + ], + "id": 11048, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4092:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4092:31:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11052, + "nodeType": "StructuredDocumentation", + "src": "4130:165:47", + "text": " @notice Service registry admin role can add and remove services to the service\n registry mapping. Implemented by {ServiceRegistry} contract." + }, + "functionSelector": "92cf833f", + "id": 11057, + "mutability": "constant", + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nameLocation": "4324:27:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "4300:94:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4300:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "534552564943455f52454749535452595f41444d494e5f524f4c45", + "id": 11055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4364:29:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d", + "typeString": "literal_string \"SERVICE_REGISTRY_ADMIN_ROLE\"" + }, + "value": "SERVICE_REGISTRY_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d", + "typeString": "literal_string \"SERVICE_REGISTRY_ADMIN_ROLE\"" + } + ], + "id": 11054, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4354:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4354:40:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 11058, + "nodeType": "StructuredDocumentation", + "src": "4401:136:47", + "text": " @notice This role is granted to the created CM Accounts. It is used to keep\n an enumerable list of CM Accounts." + }, + "functionSelector": "7fa34657", + "id": 11063, + "mutability": "constant", + "name": "CMACCOUNT_ROLE", + "nameLocation": "4566:14:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "4542:68:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11059, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4542:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "434d4143434f554e545f524f4c45", + "id": 11061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4593:16:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3f", + "typeString": "literal_string \"CMACCOUNT_ROLE\"" + }, + "value": "CMACCOUNT_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3f", + "typeString": "literal_string \"CMACCOUNT_ROLE\"" + } + ], + "id": 11060, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4583:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4583:27:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "CMAccountManager.CMAccountInfo", + "documentation": { + "id": 11064, + "nodeType": "StructuredDocumentation", + "src": "4790:113:47", + "text": " @notice CMAccount info struct, to keep track of created CM Accounts and their\n creators." + }, + "id": 11069, + "members": [ + { + "constant": false, + "id": 11066, + "mutability": "mutable", + "name": "isCMAccount", + "nameLocation": "4944:11:47", + "nodeType": "VariableDeclaration", + "scope": 11069, + "src": "4939:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11065, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4939:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11068, + "mutability": "mutable", + "name": "creator", + "nameLocation": "4973:7:47", + "nodeType": "VariableDeclaration", + "scope": 11069, + "src": "4965:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11067, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4965:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountInfo", + "nameLocation": "4915:13:47", + "nodeType": "StructDefinition", + "scope": 11833, + "src": "4908:79:47", + "visibility": "public" + }, + { + "canonicalName": "CMAccountManager.CMAccountManagerStorage", + "documentation": { + "id": 11070, + "nodeType": "StructuredDocumentation", + "src": "4993:78:47", + "text": "@custom:storage-location erc7201:camino.messenger.storage.CMAccountManager" + }, + "id": 11092, + "members": [ + { + "constant": false, + "id": 11073, + "mutability": "mutable", + "name": "_latestAccountImplementation", + "nameLocation": "5308:28:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "5300:36:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5300:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11076, + "mutability": "mutable", + "name": "_prefundAmount", + "nameLocation": "5410:14:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "5402:22:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5402:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11079, + "mutability": "mutable", + "name": "_developerWallet", + "nameLocation": "5559:16:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "5551:24:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5551:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11082, + "mutability": "mutable", + "name": "_developerFeeBp", + "nameLocation": "5895:15:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "5887:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11081, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5887:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11085, + "mutability": "mutable", + "name": "_bookingToken", + "nameLocation": "5990:13:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "5982:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11084, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5982:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11091, + "mutability": "mutable", + "name": "_cmAccountInfo", + "nameLocation": "6178:14:47", + "nodeType": "VariableDeclaration", + "scope": 11092, + "src": "6136:56:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$11069_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo)" + }, + "typeName": { + "id": 11090, + "keyName": "account", + "keyNameLocation": "6152:7:47", + "keyType": { + "id": 11087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6144:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "6136:41:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$11069_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 11089, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11088, + "name": "CMAccountInfo", + "nameLocations": [ + "6163:13:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11069, + "src": "6163:13:47" + }, + "referencedDeclaration": 11069, + "src": "6163:13:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + } + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountManagerStorage", + "nameLocation": "5083:23:47", + "nodeType": "StructDefinition", + "scope": 11833, + "src": "5076:1123:47", + "visibility": "public" + }, + { + "constant": true, + "id": 11095, + "mutability": "constant", + "name": "CMAccountManagerStorageLocation", + "nameLocation": "6355:31:47", + "nodeType": "VariableDeclaration", + "scope": 11833, + "src": "6330:133:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11093, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6330:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307832623432316166333931383335393230633431653737623638313066366537313566356237313363313762633539306635356465366137643339313265383030", + "id": 11094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6397:66:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_19566250407352200527424460317761694510754414034952949117014692734580418603008_by_1", + "typeString": "int_const 1956...(69 digits omitted)...3008" + }, + "value": "0x2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e800" + }, + "visibility": "private" + }, + { + "body": { + "id": 11102, + "nodeType": "Block", + "src": "6566:90:47", + "statements": [ + { + "AST": { + "nativeSrc": "6585:65:47", + "nodeType": "YulBlock", + "src": "6585:65:47", + "statements": [ + { + "nativeSrc": "6599:41:47", + "nodeType": "YulAssignment", + "src": "6599:41:47", + "value": { + "name": "CMAccountManagerStorageLocation", + "nativeSrc": "6609:31:47", + "nodeType": "YulIdentifier", + "src": "6609:31:47" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "6599:6:47", + "nodeType": "YulIdentifier", + "src": "6599:6:47" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 11099, + "isOffset": false, + "isSlot": true, + "src": "6599:6:47", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 11095, + "isOffset": false, + "isSlot": false, + "src": "6609:31:47", + "valueSize": 1 + } + ], + "id": 11101, + "nodeType": "InlineAssembly", + "src": "6576:74:47" + } + ] + }, + "id": 11103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCMAccountManagerStorage", + "nameLocation": "6479:27:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11096, + "nodeType": "ParameterList", + "parameters": [], + "src": "6506:2:47" + }, + "returnParameters": { + "id": 11100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11099, + "mutability": "mutable", + "name": "$", + "nameLocation": "6563:1:47", + "nodeType": "VariableDeclaration", + "scope": 11103, + "src": "6531:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11098, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11097, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "6531:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "6531:23:47" + }, + "referencedDeclaration": 11092, + "src": "6531:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "src": "6530:35:47" + }, + "scope": 11833, + "src": "6470:186:47", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 11104, + "nodeType": "StructuredDocumentation", + "src": "6835:107:47", + "text": " @notice CM Account created event.\n @param account The address of the new CMAccount" + }, + "eventSelector": "22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd93", + "id": 11108, + "name": "CMAccountCreated", + "nameLocation": "6953:16:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 11107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11106, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "6986:7:47", + "nodeType": "VariableDeclaration", + "scope": 11108, + "src": "6970:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6970:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6969:25:47" + }, + "src": "6947:48:47" + }, + { + "anonymous": false, + "documentation": { + "id": 11109, + "nodeType": "StructuredDocumentation", + "src": "7001:201:47", + "text": " @notice CM Account implementation address updated event.\n @param oldImplementation The old implementation address\n @param newImplementation The new implementation address" + }, + "eventSelector": "ecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d93", + "id": 11115, + "name": "CMAccountImplementationUpdated", + "nameLocation": "7213:30:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 11114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11111, + "indexed": true, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "7260:17:47", + "nodeType": "VariableDeclaration", + "scope": 11115, + "src": "7244:33:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7244:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11113, + "indexed": true, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "7295:17:47", + "nodeType": "VariableDeclaration", + "scope": 11115, + "src": "7279:33:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7279:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7243:70:47" + }, + "src": "7207:107:47" + }, + { + "anonymous": false, + "documentation": { + "id": 11116, + "nodeType": "StructuredDocumentation", + "src": "7320:198:47", + "text": " @notice Developer wallet address updated event.\n @param oldDeveloperWallet The old developer wallet address\n @param newDeveloperWallet The new developer wallet address" + }, + "eventSelector": "88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd", + "id": 11122, + "name": "DeveloperWalletUpdated", + "nameLocation": "7529:22:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 11121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11118, + "indexed": true, + "mutability": "mutable", + "name": "oldDeveloperWallet", + "nameLocation": "7568:18:47", + "nodeType": "VariableDeclaration", + "scope": 11122, + "src": "7552:34:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7552:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11120, + "indexed": true, + "mutability": "mutable", + "name": "newDeveloperWallet", + "nameLocation": "7604:18:47", + "nodeType": "VariableDeclaration", + "scope": 11122, + "src": "7588:34:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7588:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7551:72:47" + }, + "src": "7523:101:47" + }, + { + "anonymous": false, + "documentation": { + "id": 11123, + "nodeType": "StructuredDocumentation", + "src": "7630:202:47", + "text": " @notice Developer fee basis points updated event.\n @param oldDeveloperFeeBp The old developer fee basis points\n @param newDeveloperFeeBp The new developer fee basis points" + }, + "eventSelector": "c1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f", + "id": 11129, + "name": "DeveloperFeeBpUpdated", + "nameLocation": "7843:21:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 11128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11125, + "indexed": true, + "mutability": "mutable", + "name": "oldDeveloperFeeBp", + "nameLocation": "7881:17:47", + "nodeType": "VariableDeclaration", + "scope": 11129, + "src": "7865:33:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7865:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11127, + "indexed": true, + "mutability": "mutable", + "name": "newDeveloperFeeBp", + "nameLocation": "7916:17:47", + "nodeType": "VariableDeclaration", + "scope": 11129, + "src": "7900:33:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7900:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7864:70:47" + }, + "src": "7837:98:47" + }, + { + "anonymous": false, + "documentation": { + "id": 11130, + "nodeType": "StructuredDocumentation", + "src": "7941:183:47", + "text": " @notice Booking token address updated event.\n @param oldBookingToken The old booking token address\n @param newBookingToken The new booking token address" + }, + "eventSelector": "8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c", + "id": 11136, + "name": "BookingTokenAddressUpdated", + "nameLocation": "8135:26:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 11135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11132, + "indexed": true, + "mutability": "mutable", + "name": "oldBookingToken", + "nameLocation": "8178:15:47", + "nodeType": "VariableDeclaration", + "scope": 11136, + "src": "8162:31:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8162:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11134, + "indexed": true, + "mutability": "mutable", + "name": "newBookingToken", + "nameLocation": "8211:15:47", + "nodeType": "VariableDeclaration", + "scope": 11136, + "src": "8195:31:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8195:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8161:66:47" + }, + "src": "8129:99:47" + }, + { + "documentation": { + "id": 11137, + "nodeType": "StructuredDocumentation", + "src": "8407:147:47", + "text": " @notice The implementation of the CMAccount is invalid.\n @param implementation The implementation address of the CMAccount" + }, + "errorSelector": "6eecde86", + "id": 11141, + "name": "CMAccountInvalidImplementation", + "nameLocation": "8565:30:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11139, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "8604:14:47", + "nodeType": "VariableDeclaration", + "scope": 11141, + "src": "8596:22:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8596:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8595:24:47" + }, + "src": "8559:61:47" + }, + { + "documentation": { + "id": 11142, + "nodeType": "StructuredDocumentation", + "src": "8626:94:47", + "text": " @notice The admin address is invalid.\n @param admin The admin address" + }, + "errorSelector": "e2a72f9a", + "id": 11146, + "name": "CMAccountInvalidAdmin", + "nameLocation": "8731:21:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11144, + "mutability": "mutable", + "name": "admin", + "nameLocation": "8761:5:47", + "nodeType": "VariableDeclaration", + "scope": 11146, + "src": "8753:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11143, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8753:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8752:15:47" + }, + "src": "8725:43:47" + }, + { + "documentation": { + "id": 11147, + "nodeType": "StructuredDocumentation", + "src": "8774:112:47", + "text": " @notice Invalid developer address.\n @param developerWallet The developer wallet address" + }, + "errorSelector": "44169e22", + "id": 11151, + "name": "InvalidDeveloperWallet", + "nameLocation": "8897:22:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11149, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "8928:15:47", + "nodeType": "VariableDeclaration", + "scope": 11151, + "src": "8920:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8920:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8919:25:47" + }, + "src": "8891:54:47" + }, + { + "documentation": { + "id": 11152, + "nodeType": "StructuredDocumentation", + "src": "8951:110:47", + "text": " @notice Invalid booking token address.\n @param bookingToken The booking token address" + }, + "errorSelector": "c9c10a61", + "id": 11156, + "name": "InvalidBookingTokenAddress", + "nameLocation": "9072:26:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11154, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "9107:12:47", + "nodeType": "VariableDeclaration", + "scope": 11156, + "src": "9099:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9099:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9098:22:47" + }, + "src": "9066:55:47" + }, + { + "documentation": { + "id": 11157, + "nodeType": "StructuredDocumentation", + "src": "9127:105:47", + "text": " @notice Incorrect pre fund amount.\n @param expected The expected pre fund amount" + }, + "errorSelector": "a7e038c6", + "id": 11163, + "name": "IncorrectPrefundAmount", + "nameLocation": "9243:22:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11159, + "mutability": "mutable", + "name": "expected", + "nameLocation": "9274:8:47", + "nodeType": "VariableDeclaration", + "scope": 11163, + "src": "9266:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9266:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11161, + "mutability": "mutable", + "name": "sended", + "nameLocation": "9292:6:47", + "nodeType": "VariableDeclaration", + "scope": 11163, + "src": "9284:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9284:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9265:34:47" + }, + "src": "9237:63:47" + }, + { + "body": { + "id": 11170, + "nodeType": "Block", + "src": "9546:39:47", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11167, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "9556:20:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9556:22:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11169, + "nodeType": "ExpressionStatement", + "src": "9556:22:47" + } + ] + }, + "documentation": { + "id": 11164, + "nodeType": "StructuredDocumentation", + "src": "9479:48:47", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 11171, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11165, + "nodeType": "ParameterList", + "parameters": [], + "src": "9543:2:47" + }, + "returnParameters": { + "id": 11166, + "nodeType": "ParameterList", + "parameters": [], + "src": "9546:0:47" + }, + "scope": 11833, + "src": "9532:53:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11241, + "nodeType": "Block", + "src": "10023:543:47", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11188, + "name": "__Pausable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2884, + "src": "10033:15:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10033:17:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11190, + "nodeType": "ExpressionStatement", + "src": "10033:17:47" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11191, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "10060:20:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10060:22:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11193, + "nodeType": "ExpressionStatement", + "src": "10060:22:47" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11194, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "10092:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10092:24:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11196, + "nodeType": "ExpressionStatement", + "src": "10092:24:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11198, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "10138:18:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11199, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11173, + "src": "10158:12:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11197, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "10127:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10127:44:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11201, + "nodeType": "ExpressionStatement", + "src": "10127:44:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11203, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11021, + "src": "10192:11:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11204, + "name": "pauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11175, + "src": "10205:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11202, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "10181:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10181:31:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11206, + "nodeType": "ExpressionStatement", + "src": "10181:31:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11208, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11027, + "src": "10233:13:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11209, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11177, + "src": "10248:8:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11207, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "10222:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10222:35:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11211, + "nodeType": "ExpressionStatement", + "src": "10222:35:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11213, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "10278:14:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11214, + "name": "versioner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11179, + "src": "10294:9:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11212, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "10267:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10267:37:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11216, + "nodeType": "ExpressionStatement", + "src": "10267:37:47" + }, + { + "assignments": [ + 11219 + ], + "declarations": [ + { + "constant": false, + "id": 11219, + "mutability": "mutable", + "name": "$", + "nameLocation": "10347:1:47", + "nodeType": "VariableDeclaration", + "scope": 11241, + "src": "10315:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11218, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11217, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "10315:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "10315:23:47" + }, + "referencedDeclaration": 11092, + "src": "10315:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11222, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11220, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "10351:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10351:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10315:65:47" + }, + { + "expression": { + "id": 11227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11223, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11219, + "src": "10391:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11225, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10393:16:47", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11079, + "src": "10391:18:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11226, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11181, + "src": "10412:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10391:36:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11228, + "nodeType": "ExpressionStatement", + "src": "10391:36:47" + }, + { + "expression": { + "id": 11233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11229, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11219, + "src": "10437:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11231, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10439:15:47", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 11082, + "src": "10437:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11232, + "name": "developerFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11183, + "src": "10457:14:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10437:34:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11234, + "nodeType": "ExpressionStatement", + "src": "10437:34:47" + }, + { + "expression": { + "id": 11239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11235, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11219, + "src": "10531:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11237, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10533:14:47", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11076, + "src": "10531:16:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "313030", + "id": 11238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10550:9:47", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000_by_1", + "typeString": "int_const 100000000000000000000" + }, + "value": "100" + }, + "src": "10531:28:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11240, + "nodeType": "ExpressionStatement", + "src": "10531:28:47" + } + ] + }, + "functionSelector": "95b6ef0c", + "id": 11242, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 11186, + "kind": "modifierInvocation", + "modifierName": { + "id": 11185, + "name": "initializer", + "nameLocations": [ + "10011:11:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 671, + "src": "10011:11:47" + }, + "nodeType": "ModifierInvocation", + "src": "10011:11:47" + } + ], + "name": "initialize", + "nameLocation": "9600:10:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11173, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "9628:12:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9620:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11172, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9620:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11175, + "mutability": "mutable", + "name": "pauser", + "nameLocation": "9677:6:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9669:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9669:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11177, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "9726:8:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9718:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9718:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11179, + "mutability": "mutable", + "name": "versioner", + "nameLocation": "9795:9:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9787:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9787:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11181, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "9866:15:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9858:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9858:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11183, + "mutability": "mutable", + "name": "developerFeeBp", + "nameLocation": "9953:14:47", + "nodeType": "VariableDeclaration", + "scope": 11242, + "src": "9945:22:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9945:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9610:393:47" + }, + "returnParameters": { + "id": 11187, + "nodeType": "ParameterList", + "parameters": [], + "src": "10023:0:47" + }, + "scope": 11833, + "src": "9591:975:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11252, + "nodeType": "Block", + "src": "10791:25:47", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11249, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2983, + "src": "10801:6:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10801:8:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11251, + "nodeType": "ExpressionStatement", + "src": "10801:8:47" + } + ] + }, + "documentation": { + "id": 11243, + "nodeType": "StructuredDocumentation", + "src": "10572:168:47", + "text": " @notice Pauses the CMAccountManager contract. Currently this only affects the\n creation of CMAccount. When paused, account creation is stopped." + }, + "functionSelector": "8456cb59", + "id": 11253, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11246, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11021, + "src": "10778:11:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11247, + "kind": "modifierInvocation", + "modifierName": { + "id": 11245, + "name": "onlyRole", + "nameLocations": [ + "10769:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10769:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "10769:21:47" + } + ], + "name": "pause", + "nameLocation": "10754:5:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11244, + "nodeType": "ParameterList", + "parameters": [], + "src": "10759:2:47" + }, + "returnParameters": { + "id": 11248, + "nodeType": "ParameterList", + "parameters": [], + "src": "10791:0:47" + }, + "scope": 11833, + "src": "10745:71:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11263, + "nodeType": "Block", + "src": "10941:27:47", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11260, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3007, + "src": "10951:8:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 11261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10951:10:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11262, + "nodeType": "ExpressionStatement", + "src": "10951:10:47" + } + ] + }, + "documentation": { + "id": 11254, + "nodeType": "StructuredDocumentation", + "src": "10822:66:47", + "text": " @notice Unpauses the CMAccountManager contract." + }, + "functionSelector": "3f4ba83a", + "id": 11264, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11257, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11021, + "src": "10928:11:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11258, + "kind": "modifierInvocation", + "modifierName": { + "id": 11256, + "name": "onlyRole", + "nameLocations": [ + "10919:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10919:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "10919:21:47" + } + ], + "name": "unpause", + "nameLocation": "10902:7:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11255, + "nodeType": "ParameterList", + "parameters": [], + "src": "10909:2:47" + }, + "returnParameters": { + "id": 11259, + "nodeType": "ParameterList", + "parameters": [], + "src": "10941:0:47" + }, + "scope": 11833, + "src": "10893:75:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 953 + ], + "body": { + "id": 11274, + "nodeType": "Block", + "src": "11158:2:47", + "statements": [] + }, + "documentation": { + "id": 11265, + "nodeType": "StructuredDocumentation", + "src": "10974:83:47", + "text": " @notice Authorization for the CMAccountManager contract upgrade." + }, + "id": 11275, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11271, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11027, + "src": "11143:13:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11272, + "kind": "modifierInvocation", + "modifierName": { + "id": 11270, + "name": "onlyRole", + "nameLocations": [ + "11134:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "11134:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "11134:23:47" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "11071:17:47", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11269, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11125:8:47" + }, + "parameters": { + "id": 11268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11267, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "11097:17:47", + "nodeType": "VariableDeclaration", + "scope": 11275, + "src": "11089:25:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11266, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11089:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11088:27:47" + }, + "returnParameters": { + "id": 11273, + "nodeType": "ParameterList", + "parameters": [], + "src": "11158:0:47" + }, + "scope": 11833, + "src": "11062:98:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11294, + "nodeType": "Block", + "src": "11880:57:47", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11290, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "11914:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11291, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11280, + "src": "11921:8:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11289, + "name": "_createCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11435, + "src": "11897:16:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) returns (address)" + } + }, + "id": 11292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11897:33:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11288, + "id": 11293, + "nodeType": "Return", + "src": "11890:40:47" + } + ] + }, + "documentation": { + "id": 11276, + "nodeType": "StructuredDocumentation", + "src": "11339:394:47", + "text": " @notice Creates CMAccount by deploying a ERC1967Proxy with the CMAccount\n implementation from the manager.\n Because this function is deploying a contract, it reverts if the caller is\n not KYC or KYB verified. (For EOAs only)\n Caller must send the pre-fund amount with the transaction.\n @dev Emits a {CMAccountCreated} event." + }, + "functionSelector": "fd2fbd52", + "id": 11295, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 11283, + "kind": "modifierInvocation", + "modifierName": { + "id": 11282, + "name": "nonReentrant", + "nameLocations": [ + "11835:12:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3077, + "src": "11835:12:47" + }, + "nodeType": "ModifierInvocation", + "src": "11835:12:47" + }, + { + "id": 11285, + "kind": "modifierInvocation", + "modifierName": { + "id": 11284, + "name": "whenNotPaused", + "nameLocations": [ + "11848:13:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2910, + "src": "11848:13:47" + }, + "nodeType": "ModifierInvocation", + "src": "11848:13:47" + } + ], + "name": "createCMAccount", + "nameLocation": "11747:15:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11278, + "mutability": "mutable", + "name": "admin", + "nameLocation": "11780:5:47", + "nodeType": "VariableDeclaration", + "scope": 11295, + "src": "11772:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11772:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11280, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "11803:8:47", + "nodeType": "VariableDeclaration", + "scope": 11295, + "src": "11795:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11795:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11762:55:47" + }, + "returnParameters": { + "id": 11288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11287, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11295, + "src": "11871:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11871:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11870:9:47" + }, + "scope": 11833, + "src": "11738:199:47", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11434, + "nodeType": "Block", + "src": "12101:1486:47", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11305, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11298, + "src": "12133:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 11308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12150:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12142:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12142:7:47", + "typeDescriptions": {} + } + }, + "id": 11309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12142:10:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12133:19:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11316, + "nodeType": "IfStatement", + "src": "12129:85:47", + "trueBody": { + "id": 11315, + "nodeType": "Block", + "src": "12154:60:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11312, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11298, + "src": "12197:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11311, + "name": "CMAccountInvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11146, + "src": "12175:21:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12175:28:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11314, + "nodeType": "RevertStatement", + "src": "12168:35:47" + } + ] + } + }, + { + "assignments": [ + 11318 + ], + "declarations": [ + { + "constant": false, + "id": 11318, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "12232:13:47", + "nodeType": "VariableDeclaration", + "scope": 11434, + "src": "12224:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12224:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11321, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11319, + "name": "getPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11585, + "src": "12248:16:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 11320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12248:18:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12224:42:47" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 11322, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12314:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12318:5:47", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12314:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 11324, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11318, + "src": "12326:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12314:25:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11333, + "nodeType": "IfStatement", + "src": "12310:111:47", + "trueBody": { + "id": 11332, + "nodeType": "Block", + "src": "12341:80:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11327, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11318, + "src": "12385:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 11328, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12400:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12404:5:47", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12400:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11326, + "name": "IncorrectPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11163, + "src": "12362:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 11330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12362:48:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11331, + "nodeType": "RevertStatement", + "src": "12355:55:47" + } + ] + } + }, + { + "assignments": [ + 11335 + ], + "declarations": [ + { + "constant": false, + "id": 11335, + "mutability": "mutable", + "name": "latestAccountImplementation", + "nameLocation": "12439:27:47", + "nodeType": "VariableDeclaration", + "scope": 11434, + "src": "12431:35:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12431:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11338, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11336, + "name": "getAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "12469:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12469:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12431:64:47" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11339, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11335, + "src": "12509:27:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12537:4:47", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "12509:32:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12542:6:47", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12509:39:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12552:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12509:44:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11349, + "nodeType": "IfStatement", + "src": "12505:141:47", + "trueBody": { + "id": 11348, + "nodeType": "Block", + "src": "12555:91:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11345, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11335, + "src": "12607:27:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11344, + "name": "CMAccountInvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11141, + "src": "12576:30:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12576:59:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11347, + "nodeType": "RevertStatement", + "src": "12569:66:47" + } + ] + } + }, + { + "assignments": [ + 11351 + ], + "declarations": [ + { + "constant": false, + "id": 11351, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "12664:12:47", + "nodeType": "VariableDeclaration", + "scope": 11434, + "src": "12656:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12656:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11354, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11352, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11623, + "src": "12679:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12679:24:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12656:47:47" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11355, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11351, + "src": "12717:12:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12730:4:47", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "12717:17:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12735:6:47", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12717:24:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12745:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12717:29:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11365, + "nodeType": "IfStatement", + "src": "12713:107:47", + "trueBody": { + "id": 11364, + "nodeType": "Block", + "src": "12748:72:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11361, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11351, + "src": "12796:12:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11360, + "name": "InvalidBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11156, + "src": "12769:26:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12769:40:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11363, + "nodeType": "RevertStatement", + "src": "12762:47:47" + } + ] + } + }, + { + "assignments": [ + 11368 + ], + "declarations": [ + { + "constant": false, + "id": 11368, + "mutability": "mutable", + "name": "cmAccountProxy", + "nameLocation": "12912:14:47", + "nodeType": "VariableDeclaration", + "scope": 11434, + "src": "12899:27:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + }, + "typeName": { + "id": 11367, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11366, + "name": "ERC1967Proxy", + "nameLocations": [ + "12899:12:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3503, + "src": "12899:12:47" + }, + "referencedDeclaration": 3503, + "src": "12899:12:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + }, + "visibility": "internal" + } + ], + "id": 11375, + "initialValue": { + "arguments": [ + { + "id": 11372, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11335, + "src": "12946:27:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 11373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12975:2:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12929:16:47", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$3503_$", + "typeString": "function (address,bytes memory) payable returns (contract ERC1967Proxy)" + }, + "typeName": { + "id": 11370, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11369, + "name": "ERC1967Proxy", + "nameLocations": [ + "12933:12:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3503, + "src": "12933:12:47" + }, + "referencedDeclaration": 3503, + "src": "12933:12:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + }, + "id": 11374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12929:49:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12899:79:47" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11385, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13080:4:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccountManager_$11833", + "typeString": "contract CMAccountManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccountManager_$11833", + "typeString": "contract CMAccountManager" + } + ], + "id": 11384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13072:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13072:7:47", + "typeDescriptions": {} + } + }, + "id": 11386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13072:13:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11387, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11351, + "src": "13087:12:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11388, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11318, + "src": "13101:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11389, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11298, + "src": "13116:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11390, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11300, + "src": "13123:8:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11379, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13044:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13036:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11377, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13036:7:47", + "typeDescriptions": {} + } + }, + "id": 11380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13036:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11376, + "name": "ICMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9946, + "src": "13025:10:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccount_$9946_$", + "typeString": "type(contract ICMAccount)" + } + }, + "id": 11381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13025:35:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccount_$9946", + "typeString": "contract ICMAccount" + } + }, + "id": 11382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13061:10:47", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 9945, + "src": "13025:46:47", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,uint256,address,address) external" + } + }, + "id": 11391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13025:107:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11392, + "nodeType": "ExpressionStatement", + "src": "13025:107:47" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11396, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13212:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13204:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13204:7:47", + "typeDescriptions": {} + } + }, + "id": 11397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13204:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "74727565", + "id": 11399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13258:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "expression": { + "id": 11400, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13273:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13277:6:47", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13273:10:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11398, + "name": "CMAccountInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11069, + "src": "13229:13:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CMAccountInfo_$11069_storage_ptr_$", + "typeString": "type(struct CMAccountManager.CMAccountInfo storage pointer)" + } + }, + "id": 11402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "13245:11:47", + "13264:7:47" + ], + "names": [ + "isCMAccount", + "creator" + ], + "nodeType": "FunctionCall", + "src": "13229:57:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + ], + "id": 11393, + "name": "_setCMAccountInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11458, + "src": "13186:17:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_CMAccountInfo_$11069_memory_ptr_$returns$__$", + "typeString": "function (address,struct CMAccountManager.CMAccountInfo memory)" + } + }, + "id": 11403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13186:101:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11404, + "nodeType": "ExpressionStatement", + "src": "13186:101:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11406, + "name": "CMACCOUNT_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11063, + "src": "13341:14:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 11409, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13365:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13357:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13357:7:47", + "typeDescriptions": {} + } + }, + "id": 11410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13357:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11405, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "13330:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13330:51:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11412, + "nodeType": "ExpressionStatement", + "src": "13330:51:47" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11418, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13472:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13476:5:47", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "13472:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 11415, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13446:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13438:8:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 11413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13438:8:47", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 11416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13438:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 11417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13462:9:47", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5049, + "src": "13438:33:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 11420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13438:44:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11421, + "nodeType": "ExpressionStatement", + "src": "13438:44:47" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "id": 11425, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13523:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13515:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11423, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13515:7:47", + "typeDescriptions": {} + } + }, + "id": 11426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13515:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11422, + "name": "CMAccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11108, + "src": "13498:16:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13498:41:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11428, + "nodeType": "EmitStatement", + "src": "13493:46:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11431, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "13565:14:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3503", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 11430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13557:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13557:7:47", + "typeDescriptions": {} + } + }, + "id": 11432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13557:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11304, + "id": 11433, + "nodeType": "Return", + "src": "13550:30:47" + } + ] + }, + "documentation": { + "id": 11296, + "nodeType": "StructuredDocumentation", + "src": "11943:68:47", + "text": " @notice Private function to create a `CMAccount`." + }, + "id": 11435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_createCMAccount", + "nameLocation": "12025:16:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11298, + "mutability": "mutable", + "name": "admin", + "nameLocation": "12050:5:47", + "nodeType": "VariableDeclaration", + "scope": 11435, + "src": "12042:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12042:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11300, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "12065:8:47", + "nodeType": "VariableDeclaration", + "scope": 11435, + "src": "12057:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11299, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12057:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12041:33:47" + }, + "returnParameters": { + "id": 11304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11435, + "src": "12092:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11302, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12092:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12091:9:47" + }, + "scope": 11833, + "src": "12016:1571:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11457, + "nodeType": "Block", + "src": "13673:124:47", + "statements": [ + { + "assignments": [ + 11445 + ], + "declarations": [ + { + "constant": false, + "id": 11445, + "mutability": "mutable", + "name": "$", + "nameLocation": "13715:1:47", + "nodeType": "VariableDeclaration", + "scope": 11457, + "src": "13683:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11444, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11443, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "13683:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "13683:23:47" + }, + "referencedDeclaration": 11092, + "src": "13683:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11448, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11446, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "13719:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13719:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13683:65:47" + }, + { + "expression": { + "id": 11455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 11449, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11445, + "src": "13758:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13760:14:47", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11091, + "src": "13758:16:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$11069_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 11453, + "indexExpression": { + "id": 11451, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11437, + "src": "13775:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13758:25:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11454, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11440, + "src": "13786:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + }, + "src": "13758:32:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 11456, + "nodeType": "ExpressionStatement", + "src": "13758:32:47" + } + ] + }, + "id": 11458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setCMAccountInfo", + "nameLocation": "13602:17:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11437, + "mutability": "mutable", + "name": "account", + "nameLocation": "13628:7:47", + "nodeType": "VariableDeclaration", + "scope": 11458, + "src": "13620:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13620:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11440, + "mutability": "mutable", + "name": "info", + "nameLocation": "13658:4:47", + "nodeType": "VariableDeclaration", + "scope": 11458, + "src": "13637:25:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + }, + "typeName": { + "id": 11439, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11438, + "name": "CMAccountInfo", + "nameLocations": [ + "13637:13:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11069, + "src": "13637:13:47" + }, + "referencedDeclaration": 11069, + "src": "13637:13:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + } + }, + "visibility": "internal" + } + ], + "src": "13619:44:47" + }, + "returnParameters": { + "id": 11442, + "nodeType": "ParameterList", + "parameters": [], + "src": "13673:0:47" + }, + "scope": 11833, + "src": "13593:204:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11478, + "nodeType": "Block", + "src": "13989:132:47", + "statements": [ + { + "assignments": [ + 11468 + ], + "declarations": [ + { + "constant": false, + "id": 11468, + "mutability": "mutable", + "name": "$", + "nameLocation": "14031:1:47", + "nodeType": "VariableDeclaration", + "scope": 11478, + "src": "13999:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11467, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11466, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "13999:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "13999:23:47" + }, + "referencedDeclaration": 11092, + "src": "13999:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11471, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11469, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "14035:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14035:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13999:65:47" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 11472, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11468, + "src": "14081:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11473, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14083:14:47", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11091, + "src": "14081:16:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$11069_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 11475, + "indexExpression": { + "id": 11474, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11461, + "src": "14098:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14081:25:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 11476, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14107:7:47", + "memberName": "creator", + "nodeType": "MemberAccess", + "referencedDeclaration": 11068, + "src": "14081:33:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11465, + "id": 11477, + "nodeType": "Return", + "src": "14074:40:47" + } + ] + }, + "documentation": { + "id": 11459, + "nodeType": "StructuredDocumentation", + "src": "13803:105:47", + "text": " @notice Returns the given account's creator.\n @param account The account address" + }, + "functionSelector": "2cec1a06", + "id": 11479, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCMAccountCreator", + "nameLocation": "13922:19:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11461, + "mutability": "mutable", + "name": "account", + "nameLocation": "13950:7:47", + "nodeType": "VariableDeclaration", + "scope": 11479, + "src": "13942:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13942:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13941:17:47" + }, + "returnParameters": { + "id": 11465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11464, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11479, + "src": "13980:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13980:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13979:9:47" + }, + "scope": 11833, + "src": "13913:208:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11499, + "nodeType": "Block", + "src": "14331:136:47", + "statements": [ + { + "assignments": [ + 11489 + ], + "declarations": [ + { + "constant": false, + "id": 11489, + "mutability": "mutable", + "name": "$", + "nameLocation": "14373:1:47", + "nodeType": "VariableDeclaration", + "scope": 11499, + "src": "14341:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11487, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "14341:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "14341:23:47" + }, + "referencedDeclaration": 11092, + "src": "14341:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11492, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11490, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "14377:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14377:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14341:65:47" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 11493, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11489, + "src": "14423:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11494, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14425:14:47", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11091, + "src": "14423:16:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$11069_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 11496, + "indexExpression": { + "id": 11495, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11482, + "src": "14440:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14423:25:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$11069_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 11497, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14449:11:47", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11066, + "src": "14423:37:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11486, + "id": 11498, + "nodeType": "Return", + "src": "14416:44:47" + } + ] + }, + "documentation": { + "id": 11480, + "nodeType": "StructuredDocumentation", + "src": "14127:134:47", + "text": " @notice Check if an address is CMAccount created by the manager.\n @param account The account address to check" + }, + "functionSelector": "12b357b5", + "id": 11500, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "14275:11:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11482, + "mutability": "mutable", + "name": "account", + "nameLocation": "14295:7:47", + "nodeType": "VariableDeclaration", + "scope": 11500, + "src": "14287:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14287:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14286:17:47" + }, + "returnParameters": { + "id": 11486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11485, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11500, + "src": "14325:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11484, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14325:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14324:6:47" + }, + "scope": 11833, + "src": "14266:201:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11515, + "nodeType": "Block", + "src": "14789:129:47", + "statements": [ + { + "assignments": [ + 11508 + ], + "declarations": [ + { + "constant": false, + "id": 11508, + "mutability": "mutable", + "name": "$", + "nameLocation": "14831:1:47", + "nodeType": "VariableDeclaration", + "scope": 11515, + "src": "14799:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11507, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11506, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "14799:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "14799:23:47" + }, + "referencedDeclaration": 11092, + "src": "14799:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11511, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11509, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "14835:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14835:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14799:65:47" + }, + { + "expression": { + "expression": { + "id": 11512, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11508, + "src": "14881:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11513, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14883:28:47", + "memberName": "_latestAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 11073, + "src": "14881:30:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11505, + "id": 11514, + "nodeType": "Return", + "src": "14874:37:47" + } + ] + }, + "documentation": { + "id": 11501, + "nodeType": "StructuredDocumentation", + "src": "14646:72:47", + "text": " @notice Returns the CMAccount implementation address." + }, + "functionSelector": "9d825bc5", + "id": 11516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAccountImplementation", + "nameLocation": "14732:24:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11502, + "nodeType": "ParameterList", + "parameters": [], + "src": "14756:2:47" + }, + "returnParameters": { + "id": 11505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11504, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11516, + "src": "14780:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11503, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14780:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14779:9:47" + }, + "scope": 11833, + "src": "14723:195:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11550, + "nodeType": "Block", + "src": "15155:339:47", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11525, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "15169:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15187:4:47", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "15169:22:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15192:6:47", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15169:29:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15202:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15169:34:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11535, + "nodeType": "IfStatement", + "src": "15165:121:47", + "trueBody": { + "id": 11534, + "nodeType": "Block", + "src": "15205:81:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11531, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "15257:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11530, + "name": "CMAccountInvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11141, + "src": "15226:30:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15226:49:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11533, + "nodeType": "RevertStatement", + "src": "15219:56:47" + } + ] + } + }, + { + "assignments": [ + 11537 + ], + "declarations": [ + { + "constant": false, + "id": 11537, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "15304:17:47", + "nodeType": "VariableDeclaration", + "scope": 11550, + "src": "15296:25:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11536, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15296:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11540, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11538, + "name": "getAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "15324:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15324:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15296:54:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11542, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "15386:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11541, + "name": "_setAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11569, + "src": "15360:25:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15360:44:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11544, + "nodeType": "ExpressionStatement", + "src": "15360:44:47" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11546, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11537, + "src": "15450:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11547, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "15469:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11545, + "name": "CMAccountImplementationUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11115, + "src": "15419:30:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15419:68:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11549, + "nodeType": "EmitStatement", + "src": "15414:73:47" + } + ] + }, + "documentation": { + "id": 11517, + "nodeType": "StructuredDocumentation", + "src": "14924:133:47", + "text": " @notice Set a new CMAccount implementation address.\n @param newImplementation The new implementation address" + }, + "functionSelector": "09766da2", + "id": 11551, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11522, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "15139:14:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11523, + "kind": "modifierInvocation", + "modifierName": { + "id": 11521, + "name": "onlyRole", + "nameLocations": [ + "15130:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15130:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "15130:24:47" + } + ], + "name": "setAccountImplementation", + "nameLocation": "15071:24:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11520, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11519, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "15104:17:47", + "nodeType": "VariableDeclaration", + "scope": 11551, + "src": "15096:25:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15096:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15095:27:47" + }, + "returnParameters": { + "id": 11524, + "nodeType": "ParameterList", + "parameters": [], + "src": "15155:0:47" + }, + "scope": 11833, + "src": "15062:432:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11568, + "nodeType": "Block", + "src": "15571:142:47", + "statements": [ + { + "assignments": [ + 11558 + ], + "declarations": [ + { + "constant": false, + "id": 11558, + "mutability": "mutable", + "name": "$", + "nameLocation": "15613:1:47", + "nodeType": "VariableDeclaration", + "scope": 11568, + "src": "15581:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11557, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11556, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "15581:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "15581:23:47" + }, + "referencedDeclaration": 11092, + "src": "15581:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11561, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11559, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "15617:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15617:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15581:65:47" + }, + { + "expression": { + "id": 11566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11562, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "15656:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11564, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15658:28:47", + "memberName": "_latestAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 11073, + "src": "15656:30:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11565, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11553, + "src": "15689:17:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15656:50:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11567, + "nodeType": "ExpressionStatement", + "src": "15656:50:47" + } + ] + }, + "id": 11569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAccountImplementation", + "nameLocation": "15509:25:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11553, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "15543:17:47", + "nodeType": "VariableDeclaration", + "scope": 11569, + "src": "15535:25:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15535:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15534:27:47" + }, + "returnParameters": { + "id": 11555, + "nodeType": "ParameterList", + "parameters": [], + "src": "15571:0:47" + }, + "scope": 11833, + "src": "15500:213:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11584, + "nodeType": "Block", + "src": "16009:115:47", + "statements": [ + { + "assignments": [ + 11577 + ], + "declarations": [ + { + "constant": false, + "id": 11577, + "mutability": "mutable", + "name": "$", + "nameLocation": "16051:1:47", + "nodeType": "VariableDeclaration", + "scope": 11584, + "src": "16019:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11576, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11575, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16019:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "16019:23:47" + }, + "referencedDeclaration": 11092, + "src": "16019:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11580, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11578, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "16055:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16055:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16019:65:47" + }, + { + "expression": { + "expression": { + "id": 11581, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11577, + "src": "16101:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11582, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16103:14:47", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11076, + "src": "16101:16:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11574, + "id": 11583, + "nodeType": "Return", + "src": "16094:23:47" + } + ] + }, + "documentation": { + "id": 11570, + "nodeType": "StructuredDocumentation", + "src": "15892:54:47", + "text": " @notice Returns the prefund amount." + }, + "functionSelector": "c39409e1", + "id": 11585, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPrefundAmount", + "nameLocation": "15960:16:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11571, + "nodeType": "ParameterList", + "parameters": [], + "src": "15976:2:47" + }, + "returnParameters": { + "id": 11574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11573, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11585, + "src": "16000:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16000:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15999:9:47" + }, + "scope": 11833, + "src": "15951:173:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11606, + "nodeType": "Block", + "src": "16274:127:47", + "statements": [ + { + "assignments": [ + 11596 + ], + "declarations": [ + { + "constant": false, + "id": 11596, + "mutability": "mutable", + "name": "$", + "nameLocation": "16316:1:47", + "nodeType": "VariableDeclaration", + "scope": 11606, + "src": "16284:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11595, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11594, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16284:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "16284:23:47" + }, + "referencedDeclaration": 11092, + "src": "16284:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11599, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11597, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "16320:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16320:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16284:65:47" + }, + { + "expression": { + "id": 11604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11600, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11596, + "src": "16359:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16361:14:47", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 11076, + "src": "16359:16:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11603, + "name": "newPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11588, + "src": "16378:16:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16359:35:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11605, + "nodeType": "ExpressionStatement", + "src": "16359:35:47" + } + ] + }, + "documentation": { + "id": 11586, + "nodeType": "StructuredDocumentation", + "src": "16130:51:47", + "text": " @notice Sets the prefund amount." + }, + "functionSelector": "1c2b3afc", + "id": 11607, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11591, + "name": "PREFUND_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11051, + "src": "16254:18:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11592, + "kind": "modifierInvocation", + "modifierName": { + "id": 11590, + "name": "onlyRole", + "nameLocations": [ + "16245:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16245:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "16245:28:47" + } + ], + "name": "setPrefundAmount", + "nameLocation": "16195:16:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11588, + "mutability": "mutable", + "name": "newPrefundAmount", + "nameLocation": "16220:16:47", + "nodeType": "VariableDeclaration", + "scope": 11607, + "src": "16212:24:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16212:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16211:26:47" + }, + "returnParameters": { + "id": 11593, + "nodeType": "ParameterList", + "parameters": [], + "src": "16274:0:47" + }, + "scope": 11833, + "src": "16186:215:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11622, + "nodeType": "Block", + "src": "16710:114:47", + "statements": [ + { + "assignments": [ + 11615 + ], + "declarations": [ + { + "constant": false, + "id": 11615, + "mutability": "mutable", + "name": "$", + "nameLocation": "16752:1:47", + "nodeType": "VariableDeclaration", + "scope": 11622, + "src": "16720:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11614, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11613, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16720:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "16720:23:47" + }, + "referencedDeclaration": 11092, + "src": "16720:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11618, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11616, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "16756:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16756:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16720:65:47" + }, + { + "expression": { + "expression": { + "id": 11619, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11615, + "src": "16802:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11620, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16804:13:47", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 11085, + "src": "16802:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11612, + "id": 11621, + "nodeType": "Return", + "src": "16795:22:47" + } + ] + }, + "documentation": { + "id": 11608, + "nodeType": "StructuredDocumentation", + "src": "16580:61:47", + "text": " @notice Returns the booking token address." + }, + "functionSelector": "4f3f4639", + "id": 11623, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingTokenAddress", + "nameLocation": "16655:22:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11609, + "nodeType": "ParameterList", + "parameters": [], + "src": "16677:2:47" + }, + "returnParameters": { + "id": 11612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11611, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11623, + "src": "16701:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16701:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16700:9:47" + }, + "scope": 11833, + "src": "16646:178:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11657, + "nodeType": "Block", + "src": "16968:261:47", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 11632, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "16982:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16988:4:47", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "16982:10:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16993:6:47", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16982:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17003:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16982:22:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11642, + "nodeType": "IfStatement", + "src": "16978:93:47", + "trueBody": { + "id": 11641, + "nodeType": "Block", + "src": "17006:65:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11638, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "17054:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11637, + "name": "InvalidBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11156, + "src": "17027:26:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17027:33:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11640, + "nodeType": "RevertStatement", + "src": "17020:40:47" + } + ] + } + }, + { + "assignments": [ + 11644 + ], + "declarations": [ + { + "constant": false, + "id": 11644, + "mutability": "mutable", + "name": "oldToken", + "nameLocation": "17089:8:47", + "nodeType": "VariableDeclaration", + "scope": 11657, + "src": "17081:16:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17081:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11647, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11645, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11623, + "src": "17100:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17100:24:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17081:43:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11649, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "17158:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11648, + "name": "_setBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11676, + "src": "17134:23:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17134:30:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11651, + "nodeType": "ExpressionStatement", + "src": "17134:30:47" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11653, + "name": "oldToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11644, + "src": "17206:8:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11654, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "17216:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11652, + "name": "BookingTokenAddressUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11136, + "src": "17179:26:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17179:43:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11656, + "nodeType": "EmitStatement", + "src": "17174:48:47" + } + ] + }, + "documentation": { + "id": 11624, + "nodeType": "StructuredDocumentation", + "src": "16830:54:47", + "text": " @notice Sets booking token address." + }, + "functionSelector": "c17e30bf", + "id": 11658, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11629, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "16952:14:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11630, + "kind": "modifierInvocation", + "modifierName": { + "id": 11628, + "name": "onlyRole", + "nameLocations": [ + "16943:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16943:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "16943:24:47" + } + ], + "name": "setBookingTokenAddress", + "nameLocation": "16898:22:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11626, + "mutability": "mutable", + "name": "token", + "nameLocation": "16929:5:47", + "nodeType": "VariableDeclaration", + "scope": 11658, + "src": "16921:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16921:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16920:15:47" + }, + "returnParameters": { + "id": 11631, + "nodeType": "ParameterList", + "parameters": [], + "src": "16968:0:47" + }, + "scope": 11833, + "src": "16889:340:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11675, + "nodeType": "Block", + "src": "17292:115:47", + "statements": [ + { + "assignments": [ + 11665 + ], + "declarations": [ + { + "constant": false, + "id": 11665, + "mutability": "mutable", + "name": "$", + "nameLocation": "17334:1:47", + "nodeType": "VariableDeclaration", + "scope": 11675, + "src": "17302:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11664, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11663, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "17302:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "17302:23:47" + }, + "referencedDeclaration": 11092, + "src": "17302:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11668, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11666, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "17338:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17338:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17302:65:47" + }, + { + "expression": { + "id": 11673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11669, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11665, + "src": "17377:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "17379:13:47", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 11085, + "src": "17377:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11672, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11660, + "src": "17395:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17377:23:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11674, + "nodeType": "ExpressionStatement", + "src": "17377:23:47" + } + ] + }, + "id": 11676, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBookingTokenAddress", + "nameLocation": "17244:23:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11660, + "mutability": "mutable", + "name": "token", + "nameLocation": "17276:5:47", + "nodeType": "VariableDeclaration", + "scope": 11676, + "src": "17268:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17268:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17267:15:47" + }, + "returnParameters": { + "id": 11662, + "nodeType": "ParameterList", + "parameters": [], + "src": "17292:0:47" + }, + "scope": 11833, + "src": "17235:172:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11691, + "nodeType": "Block", + "src": "17727:117:47", + "statements": [ + { + "assignments": [ + 11684 + ], + "declarations": [ + { + "constant": false, + "id": 11684, + "mutability": "mutable", + "name": "$", + "nameLocation": "17769:1:47", + "nodeType": "VariableDeclaration", + "scope": 11691, + "src": "17737:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11683, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11682, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "17737:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "17737:23:47" + }, + "referencedDeclaration": 11092, + "src": "17737:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11687, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11685, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "17773:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17773:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17737:65:47" + }, + { + "expression": { + "expression": { + "id": 11688, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11684, + "src": "17819:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17821:16:47", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11079, + "src": "17819:18:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 11681, + "id": 11690, + "nodeType": "Return", + "src": "17812:25:47" + } + ] + }, + "documentation": { + "id": 11677, + "nodeType": "StructuredDocumentation", + "src": "17586:60:47", + "text": " @notice Returns developer wallet address." + }, + "functionSelector": "0470d3ac", + "id": 11692, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeveloperWallet", + "nameLocation": "17660:18:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11678, + "nodeType": "ParameterList", + "parameters": [], + "src": "17678:2:47" + }, + "returnParameters": { + "id": 11681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11680, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "17710:15:47", + "nodeType": "VariableDeclaration", + "scope": 11692, + "src": "17702:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17702:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17701:25:47" + }, + "scope": 11833, + "src": "17651:193:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11727, + "nodeType": "Block", + "src": "18010:302:47", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11701, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11695, + "src": "18024:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 11704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18051:1:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18043:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18043:7:47", + "typeDescriptions": {} + } + }, + "id": 11705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18043:10:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18024:29:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11712, + "nodeType": "IfStatement", + "src": "18020:106:47", + "trueBody": { + "id": 11711, + "nodeType": "Block", + "src": "18055:71:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 11708, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11695, + "src": "18099:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11707, + "name": "InvalidDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11151, + "src": "18076:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 11709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18076:39:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11710, + "nodeType": "RevertStatement", + "src": "18069:46:47" + } + ] + } + }, + { + "assignments": [ + 11714 + ], + "declarations": [ + { + "constant": false, + "id": 11714, + "mutability": "mutable", + "name": "oldDeveloperWallet", + "nameLocation": "18144:18:47", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "18136:26:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18136:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 11717, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11715, + "name": "getDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11692, + "src": "18165:18:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18165:20:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18136:49:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11719, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11695, + "src": "18215:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11718, + "name": "_setDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11746, + "src": "18195:19:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18195:36:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11721, + "nodeType": "ExpressionStatement", + "src": "18195:36:47" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11723, + "name": "oldDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11714, + "src": "18269:18:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11724, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11695, + "src": "18289:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11722, + "name": "DeveloperWalletUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11122, + "src": "18246:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18246:59:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11726, + "nodeType": "EmitStatement", + "src": "18241:64:47" + } + ] + }, + "documentation": { + "id": 11693, + "nodeType": "StructuredDocumentation", + "src": "17850:57:47", + "text": " @notice Sets developer wallet address." + }, + "functionSelector": "6cd56878", + "id": 11728, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11698, + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11045, + "src": "17981:27:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11699, + "kind": "modifierInvocation", + "modifierName": { + "id": 11697, + "name": "onlyRole", + "nameLocations": [ + "17972:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17972:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "17972:37:47" + } + ], + "name": "setDeveloperWallet", + "nameLocation": "17921:18:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11695, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "17948:15:47", + "nodeType": "VariableDeclaration", + "scope": 11728, + "src": "17940:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17940:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17939:25:47" + }, + "returnParameters": { + "id": 11700, + "nodeType": "ParameterList", + "parameters": [], + "src": "18010:0:47" + }, + "scope": 11833, + "src": "17912:400:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11745, + "nodeType": "Block", + "src": "18380:128:47", + "statements": [ + { + "assignments": [ + 11735 + ], + "declarations": [ + { + "constant": false, + "id": 11735, + "mutability": "mutable", + "name": "$", + "nameLocation": "18422:1:47", + "nodeType": "VariableDeclaration", + "scope": 11745, + "src": "18390:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11734, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11733, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "18390:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "18390:23:47" + }, + "referencedDeclaration": 11092, + "src": "18390:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11738, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11736, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "18426:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18426:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18390:65:47" + }, + { + "expression": { + "id": 11743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11739, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11735, + "src": "18465:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11741, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "18467:16:47", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11079, + "src": "18465:18:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11742, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11730, + "src": "18486:15:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18465:36:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11744, + "nodeType": "ExpressionStatement", + "src": "18465:36:47" + } + ] + }, + "id": 11746, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setDeveloperWallet", + "nameLocation": "18327:19:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11731, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11730, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "18355:15:47", + "nodeType": "VariableDeclaration", + "scope": 11746, + "src": "18347:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11729, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18347:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18346:25:47" + }, + "returnParameters": { + "id": 11732, + "nodeType": "ParameterList", + "parameters": [], + "src": "18380:0:47" + }, + "scope": 11833, + "src": "18318:190:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11761, + "nodeType": "Block", + "src": "18658:116:47", + "statements": [ + { + "assignments": [ + 11754 + ], + "declarations": [ + { + "constant": false, + "id": 11754, + "mutability": "mutable", + "name": "$", + "nameLocation": "18700:1:47", + "nodeType": "VariableDeclaration", + "scope": 11761, + "src": "18668:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11753, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11752, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "18668:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "18668:23:47" + }, + "referencedDeclaration": 11092, + "src": "18668:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11757, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11755, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "18704:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18704:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18668:65:47" + }, + { + "expression": { + "expression": { + "id": 11758, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11754, + "src": "18750:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18752:15:47", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 11082, + "src": "18750:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11751, + "id": 11760, + "nodeType": "Return", + "src": "18743:24:47" + } + ] + }, + "documentation": { + "id": 11747, + "nodeType": "StructuredDocumentation", + "src": "18514:65:47", + "text": " @notice Returns developer fee in basis points." + }, + "functionSelector": "3c555938", + "id": 11762, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeveloperFeeBp", + "nameLocation": "18593:17:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11748, + "nodeType": "ParameterList", + "parameters": [], + "src": "18610:2:47" + }, + "returnParameters": { + "id": 11751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11750, + "mutability": "mutable", + "name": "developerFeeBp", + "nameLocation": "18642:14:47", + "nodeType": "VariableDeclaration", + "scope": 11762, + "src": "18634:22:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18634:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18633:24:47" + }, + "scope": 11833, + "src": "18584:190:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11785, + "nodeType": "Block", + "src": "19128:131:47", + "statements": [ + { + "assignments": [ + 11772 + ], + "declarations": [ + { + "constant": false, + "id": 11772, + "mutability": "mutable", + "name": "oldBp", + "nameLocation": "19146:5:47", + "nodeType": "VariableDeclaration", + "scope": 11785, + "src": "19138:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19138:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11775, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11773, + "name": "getDeveloperFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11762, + "src": "19154:17:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 11774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19154:19:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19138:35:47" + }, + { + "expression": { + "arguments": [ + { + "id": 11777, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11765, + "src": "19202:2:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11776, + "name": "_setDeveloperFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11804, + "src": "19183:18:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 11778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19183:22:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11779, + "nodeType": "ExpressionStatement", + "src": "19183:22:47" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11781, + "name": "oldBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11772, + "src": "19242:5:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11782, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11765, + "src": "19249:2:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11780, + "name": "DeveloperFeeBpUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11129, + "src": "19220:21:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 11783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19220:32:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11784, + "nodeType": "EmitStatement", + "src": "19215:37:47" + } + ] + }, + "documentation": { + "id": 11763, + "nodeType": "StructuredDocumentation", + "src": "18780:272:47", + "text": " @notice Sets developer fee in basis points.\n A basis point (bp) is one hundredth of 1 percentage point.\n 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n 100 bp = 1%, ⁠1/100⁠, or 0.01." + }, + "functionSelector": "f85b4a9c", + "id": 11786, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11768, + "name": "FEE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11039, + "src": "19112:14:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11769, + "kind": "modifierInvocation", + "modifierName": { + "id": 11767, + "name": "onlyRole", + "nameLocations": [ + "19103:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19103:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "19103:24:47" + } + ], + "name": "setDeveloperFeeBp", + "nameLocation": "19066:17:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11765, + "mutability": "mutable", + "name": "bp", + "nameLocation": "19092:2:47", + "nodeType": "VariableDeclaration", + "scope": 11786, + "src": "19084:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19084:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19083:12:47" + }, + "returnParameters": { + "id": 11770, + "nodeType": "ParameterList", + "parameters": [], + "src": "19128:0:47" + }, + "scope": 11833, + "src": "19057:202:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11803, + "nodeType": "Block", + "src": "19313:114:47", + "statements": [ + { + "assignments": [ + 11793 + ], + "declarations": [ + { + "constant": false, + "id": 11793, + "mutability": "mutable", + "name": "$", + "nameLocation": "19355:1:47", + "nodeType": "VariableDeclaration", + "scope": 11803, + "src": "19323:33:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 11792, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11791, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "19323:23:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11092, + "src": "19323:23:47" + }, + "referencedDeclaration": 11092, + "src": "19323:23:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 11796, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11794, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11103, + "src": "19359:27:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$11092_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 11795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19359:29:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19323:65:47" + }, + { + "expression": { + "id": 11801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 11797, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11793, + "src": "19398:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$11092_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 11799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "19400:15:47", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 11082, + "src": "19398:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11800, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11788, + "src": "19418:2:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19398:22:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11802, + "nodeType": "ExpressionStatement", + "src": "19398:22:47" + } + ] + }, + "id": 11804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setDeveloperFeeBp", + "nameLocation": "19274:18:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11788, + "mutability": "mutable", + "name": "bp", + "nameLocation": "19301:2:47", + "nodeType": "VariableDeclaration", + "scope": 11804, + "src": "19293:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19293:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19292:12:47" + }, + "returnParameters": { + "id": 11790, + "nodeType": "ParameterList", + "parameters": [], + "src": "19313:0:47" + }, + "scope": 11833, + "src": "19265:162:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11817, + "nodeType": "Block", + "src": "19942:50:47", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11814, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11807, + "src": "19973:11:47", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11813, + "name": "_registerServiceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12998, + "src": "19952:20:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19952:33:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11816, + "nodeType": "ExpressionStatement", + "src": "19952:33:47" + } + ] + }, + "documentation": { + "id": 11805, + "nodeType": "StructuredDocumentation", + "src": "19606:234:47", + "text": " @notice Registers a given service name. CM Accounts can only register services\n if they are also registered in the service registry on the manager contract.\n @param serviceName Name of the service" + }, + "functionSelector": "0d6115d0", + "id": 11818, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11810, + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11057, + "src": "19913:27:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11811, + "kind": "modifierInvocation", + "modifierName": { + "id": 11809, + "name": "onlyRole", + "nameLocations": [ + "19904:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19904:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "19904:37:47" + } + ], + "name": "registerService", + "nameLocation": "19854:15:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11807, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19884:11:47", + "nodeType": "VariableDeclaration", + "scope": 11818, + "src": "19870:25:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11806, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19870:6:47", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19869:27:47" + }, + "returnParameters": { + "id": 11812, + "nodeType": "ParameterList", + "parameters": [], + "src": "19942:0:47" + }, + "scope": 11833, + "src": "19845:147:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11831, + "nodeType": "Block", + "src": "20284:52:47", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11828, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "20317:11:47", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11827, + "name": "_unregisterServiceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13052, + "src": "20294:22:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20294:35:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11830, + "nodeType": "ExpressionStatement", + "src": "20294:35:47" + } + ] + }, + "documentation": { + "id": 11819, + "nodeType": "StructuredDocumentation", + "src": "19998:182:47", + "text": " @notice Unregisters a given service name. CM Accounts will not be able to register\n the service anymore.\n @param serviceName Name of the service" + }, + "functionSelector": "5e818619", + "id": 11832, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11824, + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11057, + "src": "20255:27:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11825, + "kind": "modifierInvocation", + "modifierName": { + "id": 11823, + "name": "onlyRole", + "nameLocations": [ + "20246:8:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "20246:8:47" + }, + "nodeType": "ModifierInvocation", + "src": "20246:37:47" + } + ], + "name": "unregisterService", + "nameLocation": "20194:17:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11822, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11821, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20226:11:47", + "nodeType": "VariableDeclaration", + "scope": 11832, + "src": "20212:25:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11820, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20212:6:47", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20211:27:47" + }, + "returnParameters": { + "id": 11826, + "nodeType": "ParameterList", + "parameters": [], + "src": "20284:0:47" + }, + "scope": 11833, + "src": "20185:151:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 11834, + "src": "2316:18022:47", + "usedErrors": [ + 580, + 583, + 844, + 849, + 2871, + 2874, + 3039, + 3187, + 3190, + 3538, + 3551, + 5000, + 5005, + 5008, + 11141, + 11146, + 11151, + 11156, + 11163, + 12925, + 12927 + ], + "usedEvents": [ + 588, + 2863, + 2868, + 3199, + 3208, + 3217, + 3517, + 11108, + 11115, + 11122, + 11129, + 11136, + 12915, + 12921 + ] + } + ], + "src": "79:20260:47" + }, + "id": 47 + }, + "contracts/manager/ICMAccountManager.sol": { + "ast": { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "exportedSymbols": { + "ICMAccountManager": [ + 11872 + ] + }, + "id": 11873, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11835, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "40:24:48" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICMAccountManager", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 11872, + "linearizedBaseContracts": [ + 11872 + ], + "name": "ICMAccountManager", + "nameLocation": "76:17:48", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9d825bc5", + "id": 11840, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAccountImplementation", + "nameLocation": "109:24:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11836, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:48" + }, + "returnParameters": { + "id": 11839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11838, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11840, + "src": "159:7:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "158:9:48" + }, + "scope": 11872, + "src": "100:68:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c555938", + "id": 11845, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperFeeBp", + "nameLocation": "183:17:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11841, + "nodeType": "ParameterList", + "parameters": [], + "src": "200:2:48" + }, + "returnParameters": { + "id": 11844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11843, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11845, + "src": "226:7:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "226:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "225:9:48" + }, + "scope": 11872, + "src": "174:61:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0470d3ac", + "id": 11850, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperWallet", + "nameLocation": "250:18:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11846, + "nodeType": "ParameterList", + "parameters": [], + "src": "268:2:48" + }, + "returnParameters": { + "id": 11849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11848, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11850, + "src": "294:7:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "294:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "293:9:48" + }, + "scope": 11872, + "src": "241:62:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "12b357b5", + "id": 11857, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "318:11:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11852, + "mutability": "mutable", + "name": "account", + "nameLocation": "338:7:48", + "nodeType": "VariableDeclaration", + "scope": 11857, + "src": "330:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "330:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "329:17:48" + }, + "returnParameters": { + "id": 11856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11855, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11857, + "src": "370:4:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11854, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "370:4:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "369:6:48" + }, + "scope": 11872, + "src": "309:67:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "352af39a", + "id": 11864, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceHashByName", + "nameLocation": "391:30:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11859, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "436:11:48", + "nodeType": "VariableDeclaration", + "scope": 11864, + "src": "422:25:48", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11858, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "422:6:48", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "421:27:48" + }, + "returnParameters": { + "id": 11863, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11862, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "480:11:48", + "nodeType": "VariableDeclaration", + "scope": 11864, + "src": "472:19:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11861, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "472:7:48", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "471:21:48" + }, + "scope": 11872, + "src": "382:111:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a81a626", + "id": 11871, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceNameByHash", + "nameLocation": "508:30:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11866, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "547:11:48", + "nodeType": "VariableDeclaration", + "scope": 11871, + "src": "539:19:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11865, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "539:7:48", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "538:21:48" + }, + "returnParameters": { + "id": 11870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11869, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "597:11:48", + "nodeType": "VariableDeclaration", + "scope": 11871, + "src": "583:25:48", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11868, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "583:6:48", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "582:27:48" + }, + "scope": 11872, + "src": "499:111:48", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11873, + "src": "66:546:48", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "40:573:48" + }, + "id": 48 + }, + "contracts/manager/test/CMAccountManagerV2.sol": { + "ast": { + "absolutePath": "contracts/manager/test/CMAccountManagerV2.sol", + "exportedSymbols": { + "CMAccountManager": [ + 11833 + ], + "CMAccountManagerV2": [ + 11887 + ] + }, + "id": 11888, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11874, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "149:24:49" + }, + { + "absolutePath": "contracts/manager/CMAccountManager.sol", + "file": "../CMAccountManager.sol", + "id": 11876, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11888, + "sourceUnit": 11834, + "src": "175:59:49", + "symbolAliases": [ + { + "foreign": { + "id": 11875, + "name": "CMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11833, + "src": "184:16:49", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 11877, + "name": "CMAccountManager", + "nameLocations": [ + "267:16:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11833, + "src": "267:16:49" + }, + "id": 11878, + "nodeType": "InheritanceSpecifier", + "src": "267:16:49" + } + ], + "canonicalName": "CMAccountManagerV2", + "contractDependencies": [ + 3503 + ], + "contractKind": "contract", + "fullyImplemented": true, + "id": 11887, + "linearizedBaseContracts": [ + 11887, + 11833, + 13201, + 3137, + 999, + 3328, + 563, + 362, + 3177, + 6000, + 3286, + 3260, + 3008, + 2832, + 817 + ], + "name": "CMAccountManagerV2", + "nameLocation": "245:18:49", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11885, + "nodeType": "Block", + "src": "348:28:49", + "statements": [ + { + "expression": { + "hexValue": "5632", + "id": 11883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "365:4:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_23d235efaf569b2b407d10f447247743508d1762a8e3a3aed85ccc0570dde35f", + "typeString": "literal_string \"V2\"" + }, + "value": "V2" + }, + "functionReturnParameters": 11882, + "id": 11884, + "nodeType": "Return", + "src": "358:11:49" + } + ] + }, + "functionSelector": "0d8e6e2c", + "id": 11886, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersion", + "nameLocation": "299:10:49", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11879, + "nodeType": "ParameterList", + "parameters": [], + "src": "309:2:49" + }, + "returnParameters": { + "id": 11882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11881, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11886, + "src": "333:13:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11880, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "333:6:49", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "332:15:49" + }, + "scope": 11887, + "src": "290:86:49", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 11888, + "src": "236:142:49", + "usedErrors": [ + 580, + 583, + 844, + 849, + 2871, + 2874, + 3039, + 3187, + 3190, + 3538, + 3551, + 5000, + 5005, + 5008, + 11141, + 11146, + 11151, + 11156, + 11163, + 12925, + 12927 + ], + "usedEvents": [ + 588, + 2863, + 2868, + 3199, + 3208, + 3217, + 3517, + 11108, + 11115, + 11122, + 11129, + 11136, + 12915, + 12921 + ] + } + ], + "src": "149:230:49" + }, + "id": 49 + }, + "contracts/partner/PartnerConfiguration.sol": { + "ast": { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "exportedSymbols": { + "EnumerableSet": [ + 7772 + ], + "Initializable": [ + 817 + ], + "PartnerConfiguration": [ + 12872 + ] + }, + "id": 12873, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11889, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "85:24:50" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 11891, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12873, + "sourceUnit": 818, + "src": "111:98:50", + "symbolAliases": [ + { + "foreign": { + "id": 11890, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "120:13:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 11893, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12873, + "sourceUnit": 7773, + "src": "210:88:50", + "symbolAliases": [ + { + "foreign": { + "id": 11892, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7772, + "src": "219:13:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11895, + "name": "Initializable", + "nameLocations": [ + "511:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "511:13:50" + }, + "id": 11896, + "nodeType": "InheritanceSpecifier", + "src": "511:13:50" + } + ], + "canonicalName": "PartnerConfiguration", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 11894, + "nodeType": "StructuredDocumentation", + "src": "300:168:50", + "text": " @title PartnerConfiguration\n @notice Partner Configuration is used by the {CMAccount} contract to register\n supported and wanted services by the partner." + }, + "fullyImplemented": true, + "id": 12872, + "linearizedBaseContracts": [ + 12872, + 817 + ], + "name": "PartnerConfiguration", + "nameLocation": "487:20:50", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 11900, + "libraryName": { + "id": 11897, + "name": "EnumerableSet", + "nameLocations": [ + "537:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7772, + "src": "537:13:50" + }, + "nodeType": "UsingForDirective", + "src": "531:49:50", + "typeName": { + "id": 11899, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11898, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "555:13:50", + "569:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "555:24:50" + }, + "referencedDeclaration": 7364, + "src": "555:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "global": false, + "id": 11904, + "libraryName": { + "id": 11901, + "name": "EnumerableSet", + "nameLocations": [ + "591:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7772, + "src": "591:13:50" + }, + "nodeType": "UsingForDirective", + "src": "585:49:50", + "typeName": { + "id": 11903, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11902, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "609:13:50", + "623:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "609:24:50" + }, + "referencedDeclaration": 7485, + "src": "609:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "PartnerConfiguration.Service", + "documentation": { + "id": 11905, + "nodeType": "StructuredDocumentation", + "src": "813:85:50", + "text": " @notice Struct for storing supported service details for suppliers" + }, + "id": 11914, + "members": [ + { + "constant": false, + "id": 11907, + "mutability": "mutable", + "name": "_fee", + "nameLocation": "936:4:50", + "nodeType": "VariableDeclaration", + "scope": 11914, + "src": "928:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11906, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "928:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11910, + "mutability": "mutable", + "name": "_restrictedRate", + "nameLocation": "1113:15:50", + "nodeType": "VariableDeclaration", + "scope": 11914, + "src": "1108:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11909, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1108:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11913, + "mutability": "mutable", + "name": "_capabilities", + "nameLocation": "1147:13:50", + "nodeType": "VariableDeclaration", + "scope": 11914, + "src": "1138:22:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11911, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1138:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11912, + "nodeType": "ArrayTypeName", + "src": "1138:8:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "name": "Service", + "nameLocation": "910:7:50", + "nodeType": "StructDefinition", + "scope": 12872, + "src": "903:264:50", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PaymentInfo", + "id": 11920, + "members": [ + { + "constant": false, + "id": 11916, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "1207:24:50", + "nodeType": "VariableDeclaration", + "scope": 11920, + "src": "1202:29:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11915, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1202:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11919, + "mutability": "mutable", + "name": "_supportedTokens", + "nameLocation": "1305:16:50", + "nodeType": "VariableDeclaration", + "scope": 11920, + "src": "1280:41:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11918, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11917, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1280:13:50", + "1294:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "1280:24:50" + }, + "referencedDeclaration": 7485, + "src": "1280:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "name": "PaymentInfo", + "nameLocation": "1180:11:50", + "nodeType": "StructDefinition", + "scope": 12872, + "src": "1173:195:50", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PartnerConfigurationStorage", + "documentation": { + "id": 11921, + "nodeType": "StructuredDocumentation", + "src": "1374:82:50", + "text": "@custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration" + }, + "id": 11943, + "members": [ + { + "constant": false, + "id": 11924, + "mutability": "mutable", + "name": "_servicesHashSet", + "nameLocation": "1574:16:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "1549:41:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 11923, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11922, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "1549:13:50", + "1563:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "1549:24:50" + }, + "referencedDeclaration": 7364, + "src": "1549:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11929, + "mutability": "mutable", + "name": "_supportedServices", + "nameLocation": "1710:18:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "1660:68:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "typeName": { + "id": 11928, + "keyName": "_serviceHash", + "keyNameLocation": "1676:12:50", + "keyType": { + "id": 11925, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1668:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1660:49:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "valueName": "_service", + "valueNameLocation": "1700:8:50", + "valueType": { + "id": 11927, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11926, + "name": "Service", + "nameLocations": [ + "1692:7:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11914, + "src": "1692:7:50" + }, + "referencedDeclaration": 11914, + "src": "1692:7:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11932, + "mutability": "mutable", + "name": "_paymentInfo", + "nameLocation": "1769:12:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "1757:24:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + }, + "typeName": { + "id": 11931, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11930, + "name": "PaymentInfo", + "nameLocations": [ + "1757:11:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11920, + "src": "1757:11:50" + }, + "referencedDeclaration": 11920, + "src": "1757:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11935, + "mutability": "mutable", + "name": "_publicKeyAddressesSet", + "nameLocation": "1887:22:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "1862:47:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 11934, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11933, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1862:13:50", + "1876:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7485, + "src": "1862:24:50" + }, + "referencedDeclaration": 7485, + "src": "1862:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11939, + "mutability": "mutable", + "name": "_publicKeys", + "nameLocation": "2041:11:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "1988:64:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "typeName": { + "id": 11938, + "keyName": "publicKeyAddress", + "keyNameLocation": "2004:16:50", + "keyType": { + "id": 11936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1996:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1988:52:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "valueName": "publicKey", + "valueNameLocation": "2030:9:50", + "valueType": { + "id": 11937, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2024:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11942, + "mutability": "mutable", + "name": "_wantedServicesHashSet", + "nameLocation": "2142:22:50", + "nodeType": "VariableDeclaration", + "scope": 11943, + "src": "2117:47:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 11941, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11940, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "2117:13:50", + "2131:10:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "2117:24:50" + }, + "referencedDeclaration": 7364, + "src": "2117:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "name": "PartnerConfigurationStorage", + "nameLocation": "1468:27:50", + "nodeType": "StructDefinition", + "scope": 12872, + "src": "1461:710:50", + "visibility": "public" + }, + { + "constant": true, + "id": 11946, + "mutability": "constant", + "name": "PartnerConfigurationStorageLocation", + "nameLocation": "2331:35:50", + "nodeType": "VariableDeclaration", + "scope": 12872, + "src": "2306:137:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11944, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2306:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866323835366535653162373638396463646531626235353166643131356333636164386432343365613630396434376134366234643232656535386433303030", + "id": 11945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2377:66:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_109695461745991320572768326828640350552342084100038240268071478376876378763264_by_1", + "typeString": "int_const 1096...(70 digits omitted)...3264" + }, + "value": "0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000" + }, + "visibility": "private" + }, + { + "body": { + "id": 11953, + "nodeType": "Block", + "src": "2554:94:50", + "statements": [ + { + "AST": { + "nativeSrc": "2573:69:50", + "nodeType": "YulBlock", + "src": "2573:69:50", + "statements": [ + { + "nativeSrc": "2587:45:50", + "nodeType": "YulAssignment", + "src": "2587:45:50", + "value": { + "name": "PartnerConfigurationStorageLocation", + "nativeSrc": "2597:35:50", + "nodeType": "YulIdentifier", + "src": "2597:35:50" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2587:6:50", + "nodeType": "YulIdentifier", + "src": "2587:6:50" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 11950, + "isOffset": false, + "isSlot": true, + "src": "2587:6:50", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 11946, + "isOffset": false, + "isSlot": false, + "src": "2597:35:50", + "valueSize": 1 + } + ], + "id": 11952, + "nodeType": "InlineAssembly", + "src": "2564:78:50" + } + ] + }, + "id": 11954, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPartnerConfigurationStorage", + "nameLocation": "2459:31:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11947, + "nodeType": "ParameterList", + "parameters": [], + "src": "2490:2:50" + }, + "returnParameters": { + "id": 11951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11950, + "mutability": "mutable", + "name": "$", + "nameLocation": "2551:1:50", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "2515:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 11949, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11948, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "2515:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "2515:27:50" + }, + "referencedDeclaration": 11943, + "src": "2515:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2514:39:50" + }, + "scope": 12872, + "src": "2450:198:50", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "errorSelector": "010f1dd8", + "id": 11958, + "name": "ServiceAlreadyExists", + "nameLocation": "2833:20:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11956, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2862:11:50", + "nodeType": "VariableDeclaration", + "scope": 11958, + "src": "2854:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11955, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2854:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2853:21:50" + }, + "src": "2827:48:50" + }, + { + "errorSelector": "7a5bdbb4", + "id": 11962, + "name": "ServiceDoesNotExist", + "nameLocation": "2886:19:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11960, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2914:11:50", + "nodeType": "VariableDeclaration", + "scope": 11962, + "src": "2906:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11959, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2906:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2905:21:50" + }, + "src": "2880:47:50" + }, + { + "errorSelector": "1a1e0569", + "id": 11966, + "name": "WantedServiceAlreadyExists", + "nameLocation": "2939:26:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11964, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2974:11:50", + "nodeType": "VariableDeclaration", + "scope": 11966, + "src": "2966:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11963, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2966:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2965:21:50" + }, + "src": "2933:54:50" + }, + { + "errorSelector": "fd5cb3e2", + "id": 11970, + "name": "WantedServiceDoesNotExist", + "nameLocation": "2998:25:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11968, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3032:11:50", + "nodeType": "VariableDeclaration", + "scope": 11970, + "src": "3024:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11967, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3024:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3023:21:50" + }, + "src": "2992:53:50" + }, + { + "errorSelector": "50e5f7f2", + "id": 11974, + "name": "PaymentTokenAlreadyExists", + "nameLocation": "3057:25:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11972, + "mutability": "mutable", + "name": "token", + "nameLocation": "3091:5:50", + "nodeType": "VariableDeclaration", + "scope": 11974, + "src": "3083:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3083:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3082:15:50" + }, + "src": "3051:47:50" + }, + { + "errorSelector": "54cb99c4", + "id": 11978, + "name": "PaymentTokenDoesNotExist", + "nameLocation": "3109:24:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11976, + "mutability": "mutable", + "name": "token", + "nameLocation": "3142:5:50", + "nodeType": "VariableDeclaration", + "scope": 11978, + "src": "3134:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3134:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3133:15:50" + }, + "src": "3103:46:50" + }, + { + "errorSelector": "d3083f18", + "id": 11982, + "name": "PublicKeyAlreadyExists", + "nameLocation": "3161:22:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11980, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3192:13:50", + "nodeType": "VariableDeclaration", + "scope": 11982, + "src": "3184:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3184:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3183:23:50" + }, + "src": "3155:52:50" + }, + { + "errorSelector": "ba650b5f", + "id": 11986, + "name": "PublicKeyDoesNotExist", + "nameLocation": "3218:21:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11984, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3248:13:50", + "nodeType": "VariableDeclaration", + "scope": 11986, + "src": "3240:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11983, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3240:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3239:23:50" + }, + "src": "3212:51:50" + }, + { + "errorSelector": "fe2915cf", + "id": 11990, + "name": "InvalidPublicKeyUseType", + "nameLocation": "3274:23:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11989, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11988, + "mutability": "mutable", + "name": "use", + "nameLocation": "3304:3:50", + "nodeType": "VariableDeclaration", + "scope": 11990, + "src": "3298:9:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11987, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3298:5:50", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3297:11:50" + }, + "src": "3268:41:50" + }, + { + "anonymous": false, + "eventSelector": "8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5", + "id": 11994, + "name": "ServiceAdded", + "nameLocation": "3494:12:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 11993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11992, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3515:11:50", + "nodeType": "VariableDeclaration", + "scope": 11994, + "src": "3507:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11991, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3507:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3506:21:50" + }, + "src": "3488:40:50" + }, + { + "anonymous": false, + "eventSelector": "94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c427", + "id": 11998, + "name": "ServiceRemoved", + "nameLocation": "3539:14:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 11997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11996, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3562:11:50", + "nodeType": "VariableDeclaration", + "scope": 11998, + "src": "3554:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3554:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3553:21:50" + }, + "src": "3533:42:50" + }, + { + "anonymous": false, + "eventSelector": "7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac", + "id": 12002, + "name": "WantedServiceAdded", + "nameLocation": "3587:18:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12000, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3614:11:50", + "nodeType": "VariableDeclaration", + "scope": 12002, + "src": "3606:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11999, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3606:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3605:21:50" + }, + "src": "3581:46:50" + }, + { + "anonymous": false, + "eventSelector": "f0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be", + "id": 12006, + "name": "WantedServiceRemoved", + "nameLocation": "3638:20:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12004, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3667:11:50", + "nodeType": "VariableDeclaration", + "scope": 12006, + "src": "3659:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12003, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3659:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3658:21:50" + }, + "src": "3632:48:50" + }, + { + "anonymous": false, + "eventSelector": "8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897", + "id": 12012, + "name": "ServiceFeeUpdated", + "nameLocation": "3692:17:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12008, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3718:11:50", + "nodeType": "VariableDeclaration", + "scope": 12012, + "src": "3710:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3710:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12010, + "indexed": false, + "mutability": "mutable", + "name": "fee", + "nameLocation": "3739:3:50", + "nodeType": "VariableDeclaration", + "scope": 12012, + "src": "3731:11:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12009, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3731:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3709:34:50" + }, + "src": "3686:58:50" + }, + { + "anonymous": false, + "eventSelector": "1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a664", + "id": 12018, + "name": "ServiceRestrictedRateUpdated", + "nameLocation": "3755:28:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12014, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3792:11:50", + "nodeType": "VariableDeclaration", + "scope": 12018, + "src": "3784:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12013, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3784:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12016, + "indexed": false, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "3810:14:50", + "nodeType": "VariableDeclaration", + "scope": 12018, + "src": "3805:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12015, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3805:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3783:42:50" + }, + "src": "3749:77:50" + }, + { + "anonymous": false, + "eventSelector": "a616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa0098", + "id": 12022, + "name": "ServiceCapabilitiesUpdated", + "nameLocation": "3838:26:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12020, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3873:11:50", + "nodeType": "VariableDeclaration", + "scope": 12022, + "src": "3865:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3865:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3864:21:50" + }, + "src": "3832:54:50" + }, + { + "anonymous": false, + "eventSelector": "1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e6", + "id": 12028, + "name": "ServiceCapabilityAdded", + "nameLocation": "3897:22:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12024, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3928:11:50", + "nodeType": "VariableDeclaration", + "scope": 12028, + "src": "3920:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12023, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3920:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12026, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "3948:10:50", + "nodeType": "VariableDeclaration", + "scope": 12028, + "src": "3941:17:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12025, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3941:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3919:40:50" + }, + "src": "3891:69:50" + }, + { + "anonymous": false, + "eventSelector": "fc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b014", + "id": 12034, + "name": "ServiceCapabilityRemoved", + "nameLocation": "3971:24:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12030, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4004:11:50", + "nodeType": "VariableDeclaration", + "scope": 12034, + "src": "3996:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12029, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3996:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12032, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "4024:10:50", + "nodeType": "VariableDeclaration", + "scope": 12034, + "src": "4017:17:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12031, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4017:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3995:40:50" + }, + "src": "3965:71:50" + }, + { + "anonymous": false, + "eventSelector": "a317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f", + "id": 12038, + "name": "PaymentTokenAdded", + "nameLocation": "4048:17:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12036, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nameLocation": "4074:5:50", + "nodeType": "VariableDeclaration", + "scope": 12038, + "src": "4066:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4066:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4065:15:50" + }, + "src": "4042:39:50" + }, + { + "anonymous": false, + "eventSelector": "85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af2", + "id": 12042, + "name": "PaymentTokenRemoved", + "nameLocation": "4092:19:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12040, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nameLocation": "4120:5:50", + "nodeType": "VariableDeclaration", + "scope": 12042, + "src": "4112:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4112:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4111:15:50" + }, + "src": "4086:41:50" + }, + { + "anonymous": false, + "eventSelector": "e93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e3", + "id": 12046, + "name": "OffChainPaymentSupportUpdated", + "nameLocation": "4139:29:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12044, + "indexed": false, + "mutability": "mutable", + "name": "supportsOffChainPayment", + "nameLocation": "4174:23:50", + "nodeType": "VariableDeclaration", + "scope": 12046, + "src": "4169:28:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12043, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4169:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4168:30:50" + }, + "src": "4133:66:50" + }, + { + "anonymous": false, + "eventSelector": "928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe82", + "id": 12050, + "name": "PublicKeyAdded", + "nameLocation": "4211:14:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12048, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "4242:13:50", + "nodeType": "VariableDeclaration", + "scope": 12050, + "src": "4226:29:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4226:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4225:31:50" + }, + "src": "4205:52:50" + }, + { + "anonymous": false, + "eventSelector": "c5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf", + "id": 12054, + "name": "PublicKeyRemoved", + "nameLocation": "4268:16:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 12053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12052, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "4301:13:50", + "nodeType": "VariableDeclaration", + "scope": 12054, + "src": "4285:29:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4285:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4284:31:50" + }, + "src": "4262:54:50" + }, + { + "body": { + "id": 12059, + "nodeType": "Block", + "src": "4560:2:50", + "statements": [] + }, + "id": 12060, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12057, + "kind": "modifierInvocation", + "modifierName": { + "id": 12056, + "name": "onlyInitializing", + "nameLocations": [ + "4543:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "4543:16:50" + }, + "nodeType": "ModifierInvocation", + "src": "4543:16:50" + } + ], + "name": "__PartnerConfiguration_init", + "nameLocation": "4504:27:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12055, + "nodeType": "ParameterList", + "parameters": [], + "src": "4531:2:50" + }, + "returnParameters": { + "id": 12058, + "nodeType": "ParameterList", + "parameters": [], + "src": "4560:0:50" + }, + "scope": 12872, + "src": "4495:67:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12065, + "nodeType": "Block", + "src": "4643:2:50", + "statements": [] + }, + "id": 12066, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12063, + "kind": "modifierInvocation", + "modifierName": { + "id": 12062, + "name": "onlyInitializing", + "nameLocations": [ + "4626:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "4626:16:50" + }, + "nodeType": "ModifierInvocation", + "src": "4626:16:50" + } + ], + "name": "__PartnerConfiguration_init_unchained", + "nameLocation": "4577:37:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12061, + "nodeType": "ParameterList", + "parameters": [], + "src": "4614:2:50" + }, + "returnParameters": { + "id": 12064, + "nodeType": "ParameterList", + "parameters": [], + "src": "4643:0:50" + }, + "scope": 12872, + "src": "4568:77:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12117, + "nodeType": "Block", + "src": "5288:509:50", + "statements": [ + { + "assignments": [ + 12081 + ], + "declarations": [ + { + "constant": false, + "id": 12081, + "mutability": "mutable", + "name": "$", + "nameLocation": "5334:1:50", + "nodeType": "VariableDeclaration", + "scope": 12117, + "src": "5298:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12080, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12079, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "5298:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "5298:27:50" + }, + "referencedDeclaration": 11943, + "src": "5298:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12084, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12082, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "5338:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5338:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5298:73:50" + }, + { + "assignments": [ + 12086 + ], + "declarations": [ + { + "constant": false, + "id": 12086, + "mutability": "mutable", + "name": "added", + "nameLocation": "5446:5:50", + "nodeType": "VariableDeclaration", + "scope": 12117, + "src": "5441:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12085, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5441:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12092, + "initialValue": { + "arguments": [ + { + "id": 12090, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "5477:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12087, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12081, + "src": "5454:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12088, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5456:16:50", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11924, + "src": "5454:18:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5473:3:50", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7382, + "src": "5454:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 12091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5454:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5441:48:50" + }, + { + "condition": { + "id": 12094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5503:6:50", + "subExpression": { + "id": 12093, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12086, + "src": "5504:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12100, + "nodeType": "IfStatement", + "src": "5499:77:50", + "trueBody": { + "id": 12099, + "nodeType": "Block", + "src": "5511:65:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12096, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "5553:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12095, + "name": "ServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11958, + "src": "5532:20:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 12097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5532:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12098, + "nodeType": "RevertStatement", + "src": "5525:40:50" + } + ] + } + }, + { + "expression": { + "id": 12111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12101, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12081, + "src": "5585:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12104, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5587:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "5585:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12105, + "indexExpression": { + "id": 12103, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "5606:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5585:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12107, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12071, + "src": "5649:3:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12108, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12074, + "src": "5681:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 12109, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12076, + "src": "5724:14:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 12106, + "name": "Service", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11914, + "src": "5621:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Service_$11914_storage_ptr_$", + "typeString": "type(struct PartnerConfiguration.Service storage pointer)" + } + }, + "id": 12110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "5643:4:50", + "5666:13:50", + "5707:15:50" + ], + "names": [ + "_fee", + "_capabilities", + "_restrictedRate" + ], + "nodeType": "FunctionCall", + "src": "5621:128:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "5585:164:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12112, + "nodeType": "ExpressionStatement", + "src": "5585:164:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12114, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "5778:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12113, + "name": "ServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11994, + "src": "5765:12:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 12115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5765:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12116, + "nodeType": "EmitStatement", + "src": "5760:30:50" + } + ] + }, + "documentation": { + "id": 12067, + "nodeType": "StructuredDocumentation", + "src": "4824:298:50", + "text": " @notice Adds a supported Service object for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee for the service\n @param capabilities Capabilities for the service\n @param restrictedRate If the service is restricted to pre-agreement" + }, + "id": 12118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addService", + "nameLocation": "5136:11:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12069, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5165:11:50", + "nodeType": "VariableDeclaration", + "scope": 12118, + "src": "5157:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12068, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5157:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12071, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5194:3:50", + "nodeType": "VariableDeclaration", + "scope": 12118, + "src": "5186:11:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5186:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12074, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "5223:12:50", + "nodeType": "VariableDeclaration", + "scope": 12118, + "src": "5207:28:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 12072, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5207:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 12073, + "nodeType": "ArrayTypeName", + "src": "5207:8:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12076, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "5250:14:50", + "nodeType": "VariableDeclaration", + "scope": 12118, + "src": "5245:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12075, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5245:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5147:123:50" + }, + "returnParameters": { + "id": 12078, + "nodeType": "ParameterList", + "parameters": [], + "src": "5288:0:50" + }, + "scope": 12872, + "src": "5127:670:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12156, + "nodeType": "Block", + "src": "6002:372:50", + "statements": [ + { + "assignments": [ + 12126 + ], + "declarations": [ + { + "constant": false, + "id": 12126, + "mutability": "mutable", + "name": "$", + "nameLocation": "6048:1:50", + "nodeType": "VariableDeclaration", + "scope": 12156, + "src": "6012:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12125, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12124, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "6012:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "6012:27:50" + }, + "referencedDeclaration": 11943, + "src": "6012:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12129, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12127, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "6052:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6052:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6012:73:50" + }, + { + "assignments": [ + 12131 + ], + "declarations": [ + { + "constant": false, + "id": 12131, + "mutability": "mutable", + "name": "removed", + "nameLocation": "6138:7:50", + "nodeType": "VariableDeclaration", + "scope": 12156, + "src": "6133:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12130, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6133:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12137, + "initialValue": { + "arguments": [ + { + "id": 12135, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12121, + "src": "6174:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12132, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12126, + "src": "6148:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6150:16:50", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11924, + "src": "6148:18:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6167:6:50", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7400, + "src": "6148:25:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 12136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6148:38:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6133:53:50" + }, + { + "condition": { + "id": 12139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6200:8:50", + "subExpression": { + "id": 12138, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12131, + "src": "6201:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12145, + "nodeType": "IfStatement", + "src": "6196:78:50", + "trueBody": { + "id": 12144, + "nodeType": "Block", + "src": "6210:64:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12141, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12121, + "src": "6251:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12140, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11962, + "src": "6231:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 12142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6231:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12143, + "nodeType": "RevertStatement", + "src": "6224:39:50" + } + ] + } + }, + { + "expression": { + "id": 12150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6284:40:50", + "subExpression": { + "baseExpression": { + "expression": { + "id": 12146, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12126, + "src": "6291:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12147, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6293:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "6291:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12149, + "indexExpression": { + "id": 12148, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12121, + "src": "6312:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6291:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12151, + "nodeType": "ExpressionStatement", + "src": "6284:40:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12153, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12121, + "src": "6355:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12152, + "name": "ServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11998, + "src": "6340:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 12154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6340:27:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12155, + "nodeType": "EmitStatement", + "src": "6335:32:50" + } + ] + }, + "documentation": { + "id": 12119, + "nodeType": "StructuredDocumentation", + "src": "5803:132:50", + "text": " @notice Removes a supported Service object for a given hash.\n @param serviceHash Hash of the service" + }, + "id": 12157, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeService", + "nameLocation": "5949:14:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12121, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5972:11:50", + "nodeType": "VariableDeclaration", + "scope": 12157, + "src": "5964:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12120, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5964:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5963:21:50" + }, + "returnParameters": { + "id": 12123, + "nodeType": "ParameterList", + "parameters": [], + "src": "6002:0:50" + }, + "scope": 12872, + "src": "5940:434:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12190, + "nodeType": "Block", + "src": "6600:281:50", + "statements": [ + { + "assignments": [ + 12167 + ], + "declarations": [ + { + "constant": false, + "id": 12167, + "mutability": "mutable", + "name": "$", + "nameLocation": "6646:1:50", + "nodeType": "VariableDeclaration", + "scope": 12190, + "src": "6610:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12166, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12165, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "6610:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "6610:27:50" + }, + "referencedDeclaration": 11943, + "src": "6610:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12170, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12168, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "6650:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6650:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6610:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12172, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12160, + "src": "6753:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12173, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12167, + "src": "6766:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12171, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "6733:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6733:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12175, + "nodeType": "ExpressionStatement", + "src": "6733:35:50" + }, + { + "expression": { + "id": 12183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 12176, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12167, + "src": "6779:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6781:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "6779:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12180, + "indexExpression": { + "id": 12178, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12160, + "src": "6800:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6779:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12181, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6813:4:50", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 11907, + "src": "6779:38:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12182, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12162, + "src": "6820:3:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6779:44:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12184, + "nodeType": "ExpressionStatement", + "src": "6779:44:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12186, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12160, + "src": "6857:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12187, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12162, + "src": "6870:3:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12185, + "name": "ServiceFeeUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12012, + "src": "6839:17:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 12188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6839:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12189, + "nodeType": "EmitStatement", + "src": "6834:40:50" + } + ] + }, + "documentation": { + "id": 12158, + "nodeType": "StructuredDocumentation", + "src": "6380:140:50", + "text": " @notice Sets the Service fee for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee" + }, + "id": 12191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceFee", + "nameLocation": "6534:14:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12160, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "6557:11:50", + "nodeType": "VariableDeclaration", + "scope": 12191, + "src": "6549:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12159, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6549:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12162, + "mutability": "mutable", + "name": "fee", + "nameLocation": "6578:3:50", + "nodeType": "VariableDeclaration", + "scope": 12191, + "src": "6570:11:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6570:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6548:34:50" + }, + "returnParameters": { + "id": 12164, + "nodeType": "ParameterList", + "parameters": [], + "src": "6600:0:50" + }, + "scope": 12872, + "src": "6525:356:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12224, + "nodeType": "Block", + "src": "7161:325:50", + "statements": [ + { + "assignments": [ + 12201 + ], + "declarations": [ + { + "constant": false, + "id": 12201, + "mutability": "mutable", + "name": "$", + "nameLocation": "7207:1:50", + "nodeType": "VariableDeclaration", + "scope": 12224, + "src": "7171:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12200, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12199, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7171:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "7171:27:50" + }, + "referencedDeclaration": 11943, + "src": "7171:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12204, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12202, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "7211:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7211:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7171:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12206, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "7314:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12207, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12201, + "src": "7327:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12205, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "7294:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7294:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12209, + "nodeType": "ExpressionStatement", + "src": "7294:35:50" + }, + { + "expression": { + "id": 12217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 12210, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12201, + "src": "7340:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12213, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7342:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "7340:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12214, + "indexExpression": { + "id": 12212, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "7361:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7340:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7374:15:50", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 11910, + "src": "7340:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12216, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "7392:14:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7340:66:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12218, + "nodeType": "ExpressionStatement", + "src": "7340:66:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12220, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "7451:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12221, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "7464:14:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 12219, + "name": "ServiceRestrictedRateUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12018, + "src": "7422:28:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$", + "typeString": "function (bytes32,bool)" + } + }, + "id": 12222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7422:57:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12223, + "nodeType": "EmitStatement", + "src": "7417:62:50" + } + ] + }, + "documentation": { + "id": 12192, + "nodeType": "StructuredDocumentation", + "src": "6887:175:50", + "text": " @notice Sets the Service restricted rate for a given hash.\n @param serviceHash Hash of the service\n @param restrictedRate Restricted rate" + }, + "id": 12225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceRestrictedRate", + "nameLocation": "7076:25:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12194, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7110:11:50", + "nodeType": "VariableDeclaration", + "scope": 12225, + "src": "7102:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12193, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7102:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12196, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "7128:14:50", + "nodeType": "VariableDeclaration", + "scope": 12225, + "src": "7123:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12195, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7123:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7101:42:50" + }, + "returnParameters": { + "id": 12198, + "nodeType": "ParameterList", + "parameters": [], + "src": "7161:0:50" + }, + "scope": 12872, + "src": "7067:419:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12258, + "nodeType": "Block", + "src": "7765:303:50", + "statements": [ + { + "assignments": [ + 12236 + ], + "declarations": [ + { + "constant": false, + "id": 12236, + "mutability": "mutable", + "name": "$", + "nameLocation": "7811:1:50", + "nodeType": "VariableDeclaration", + "scope": 12258, + "src": "7775:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12234, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7775:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "7775:27:50" + }, + "referencedDeclaration": 11943, + "src": "7775:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12239, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12237, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "7815:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7815:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7775:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12241, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12228, + "src": "7918:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12242, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12236, + "src": "7931:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12240, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "7898:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7898:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12244, + "nodeType": "ExpressionStatement", + "src": "7898:35:50" + }, + { + "expression": { + "id": 12252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 12245, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12236, + "src": "7944:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12248, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7946:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "7944:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12249, + "indexExpression": { + "id": 12247, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12228, + "src": "7965:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7944:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12250, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7978:13:50", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 11913, + "src": "7944:47:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12251, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12231, + "src": "7994:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "src": "7944:62:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 12253, + "nodeType": "ExpressionStatement", + "src": "7944:62:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12255, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12228, + "src": "8049:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12254, + "name": "ServiceCapabilitiesUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12022, + "src": "8022:26:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 12256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8022:39:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12257, + "nodeType": "EmitStatement", + "src": "8017:44:50" + } + ] + }, + "documentation": { + "id": 12226, + "nodeType": "StructuredDocumentation", + "src": "7492:167:50", + "text": " @notice Sets the Service capabilities for a given hash.\n @param serviceHash Hash of the service\n @param capabilities Capabilities" + }, + "id": 12259, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceCapabilities", + "nameLocation": "7673:23:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12228, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7705:11:50", + "nodeType": "VariableDeclaration", + "scope": 12259, + "src": "7697:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12227, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7697:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12231, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "7734:12:50", + "nodeType": "VariableDeclaration", + "scope": 12259, + "src": "7718:28:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 12229, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7718:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 12230, + "nodeType": "ArrayTypeName", + "src": "7718:8:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "7696:51:50" + }, + "returnParameters": { + "id": 12233, + "nodeType": "ParameterList", + "parameters": [], + "src": "7765:0:50" + }, + "scope": 12872, + "src": "7664:404:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12293, + "nodeType": "Block", + "src": "8323:313:50", + "statements": [ + { + "assignments": [ + 12269 + ], + "declarations": [ + { + "constant": false, + "id": 12269, + "mutability": "mutable", + "name": "$", + "nameLocation": "8369:1:50", + "nodeType": "VariableDeclaration", + "scope": 12293, + "src": "8333:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12268, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12267, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8333:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "8333:27:50" + }, + "referencedDeclaration": 11943, + "src": "8333:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12272, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12270, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "8373:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8373:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8333:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12274, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12262, + "src": "8476:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12275, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12269, + "src": "8489:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12273, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "8456:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8456:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12277, + "nodeType": "ExpressionStatement", + "src": "8456:35:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12285, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12264, + "src": "8555:10:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 12278, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12269, + "src": "8502:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8504:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "8502:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12282, + "indexExpression": { + "id": 12280, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12262, + "src": "8523:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8502:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12283, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8536:13:50", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 11913, + "src": "8502:47:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 12284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8550:4:50", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "8502:52:50", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_string_storage_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer,string storage ref)" + } + }, + "id": 12286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8502:64:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12287, + "nodeType": "ExpressionStatement", + "src": "8502:64:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12289, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12262, + "src": "8605:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12290, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12264, + "src": "8618:10:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12288, + "name": "ServiceCapabilityAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12028, + "src": "8582:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 12291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8582:47:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12292, + "nodeType": "EmitStatement", + "src": "8577:52:50" + } + ] + }, + "documentation": { + "id": 12260, + "nodeType": "StructuredDocumentation", + "src": "8074:149:50", + "text": " @notice Adds a capability to the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 12294, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addServiceCapability", + "nameLocation": "8237:21:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12262, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "8267:11:50", + "nodeType": "VariableDeclaration", + "scope": 12294, + "src": "8259:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12261, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8259:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12264, + "mutability": "mutable", + "name": "capability", + "nameLocation": "8294:10:50", + "nodeType": "VariableDeclaration", + "scope": 12294, + "src": "8280:24:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12263, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8280:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8258:47:50" + }, + "returnParameters": { + "id": 12266, + "nodeType": "ParameterList", + "parameters": [], + "src": "8323:0:50" + }, + "scope": 12872, + "src": "8228:408:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12376, + "nodeType": "Block", + "src": "8899:660:50", + "statements": [ + { + "assignments": [ + 12304 + ], + "declarations": [ + { + "constant": false, + "id": 12304, + "mutability": "mutable", + "name": "$", + "nameLocation": "8945:1:50", + "nodeType": "VariableDeclaration", + "scope": 12376, + "src": "8909:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12303, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12302, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8909:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "8909:27:50" + }, + "referencedDeclaration": 11943, + "src": "8909:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12307, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12305, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "8949:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8949:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8909:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12309, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12297, + "src": "9052:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12310, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12304, + "src": "9065:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12308, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "9032:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9032:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12312, + "nodeType": "ExpressionStatement", + "src": "9032:35:50" + }, + { + "assignments": [ + 12317 + ], + "declarations": [ + { + "constant": false, + "id": 12317, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "9095:12:50", + "nodeType": "VariableDeclaration", + "scope": 12376, + "src": "9078:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 12315, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9078:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 12316, + "nodeType": "ArrayTypeName", + "src": "9078:8:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 12323, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 12318, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12304, + "src": "9110:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12319, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9112:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "9110:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12321, + "indexExpression": { + "id": 12320, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12297, + "src": "9131:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9110:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12322, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9144:13:50", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 11913, + "src": "9110:47:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9078:79:50" + }, + { + "body": { + "id": 12374, + "nodeType": "Block", + "src": "9217:336:50", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 12349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 12338, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9262:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12340, + "indexExpression": { + "id": 12339, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12325, + "src": "9275:1:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9262:15:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "expression": { + "id": 12336, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9245:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9249:12:50", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9245:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9245:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12335, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9235:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9235:44:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 12346, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "9310:10:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 12344, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9293:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9297:12:50", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9293:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9293:28:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12343, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9283:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9283:39:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9235:87:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12373, + "nodeType": "IfStatement", + "src": "9231:312:50", + "trueBody": { + "id": 12372, + "nodeType": "Block", + "src": "9324:219:50", + "statements": [ + { + "expression": { + "id": 12359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 12350, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9342:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12352, + "indexExpression": { + "id": 12351, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12325, + "src": "9355:1:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9342:15:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 12353, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9360:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12358, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 12354, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9373:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9386:6:50", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9373:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 12356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9395:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9373:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9360:37:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "src": "9342:55:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 12360, + "nodeType": "ExpressionStatement", + "src": "9342:55:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 12361, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9415:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9428:3:50", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "9415:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer)" + } + }, + "id": 12364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9415:18:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12365, + "nodeType": "ExpressionStatement", + "src": "9415:18:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12367, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12297, + "src": "9481:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12368, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "9494:10:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12366, + "name": "ServiceCapabilityRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12034, + "src": "9456:24:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 12369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9456:49:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12370, + "nodeType": "EmitStatement", + "src": "9451:54:50" + }, + { + "id": 12371, + "nodeType": "Break", + "src": "9523:5:50" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12328, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12325, + "src": "9187:1:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 12329, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12317, + "src": "9191:12:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 12330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9204:6:50", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9191:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9187:23:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12375, + "initializationExpression": { + "assignments": [ + 12325 + ], + "declarations": [ + { + "constant": false, + "id": 12325, + "mutability": "mutable", + "name": "i", + "nameLocation": "9180:1:50", + "nodeType": "VariableDeclaration", + "scope": 12375, + "src": "9172:9:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9172:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12327, + "initialValue": { + "hexValue": "30", + "id": 12326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9184:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9172:13:50" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 12333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9212:3:50", + "subExpression": { + "id": 12332, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12325, + "src": "9212:1:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12334, + "nodeType": "ExpressionStatement", + "src": "9212:3:50" + }, + "nodeType": "ForStatement", + "src": "9167:386:50" + } + ] + }, + "documentation": { + "id": 12295, + "nodeType": "StructuredDocumentation", + "src": "8642:154:50", + "text": " @notice Removes a capability from the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 12377, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeServiceCapability", + "nameLocation": "8810:24:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12297, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "8843:11:50", + "nodeType": "VariableDeclaration", + "scope": 12377, + "src": "8835:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8835:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12299, + "mutability": "mutable", + "name": "capability", + "nameLocation": "8870:10:50", + "nodeType": "VariableDeclaration", + "scope": 12377, + "src": "8856:24:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12298, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8856:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8834:47:50" + }, + "returnParameters": { + "id": 12301, + "nodeType": "ParameterList", + "parameters": [], + "src": "8899:0:50" + }, + "scope": 12872, + "src": "8801:758:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12395, + "nodeType": "Block", + "src": "9718:134:50", + "statements": [ + { + "assignments": [ + 12386 + ], + "declarations": [ + { + "constant": false, + "id": 12386, + "mutability": "mutable", + "name": "$", + "nameLocation": "9764:1:50", + "nodeType": "VariableDeclaration", + "scope": 12395, + "src": "9728:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12385, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12384, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "9728:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "9728:27:50" + }, + "referencedDeclaration": 11943, + "src": "9728:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12389, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12387, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "9768:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9768:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9728:73:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 12390, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12386, + "src": "9818:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9820:16:50", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11924, + "src": "9818:18:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9837:6:50", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7481, + "src": "9818:25:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 12393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9818:27:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 12383, + "id": 12394, + "nodeType": "Return", + "src": "9811:34:50" + } + ] + }, + "documentation": { + "id": 12378, + "nodeType": "StructuredDocumentation", + "src": "9565:64:50", + "text": " @notice Returns all supported service hashes." + }, + "functionSelector": "42072bbd", + "id": 12396, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllServiceHashes", + "nameLocation": "9643:19:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12379, + "nodeType": "ParameterList", + "parameters": [], + "src": "9662:2:50" + }, + "returnParameters": { + "id": 12383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12382, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "9703:13:50", + "nodeType": "VariableDeclaration", + "scope": 12396, + "src": "9686:30:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 12380, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9686:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 12381, + "nodeType": "ArrayTypeName", + "src": "9686:9:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "9685:32:50" + }, + "scope": 12872, + "src": "9634:218:50", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12421, + "nodeType": "Block", + "src": "10584:226:50", + "statements": [ + { + "assignments": [ + 12407 + ], + "declarations": [ + { + "constant": false, + "id": 12407, + "mutability": "mutable", + "name": "$", + "nameLocation": "10630:1:50", + "nodeType": "VariableDeclaration", + "scope": 12421, + "src": "10594:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12406, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12405, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "10594:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "10594:27:50" + }, + "referencedDeclaration": 11943, + "src": "10594:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12410, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12408, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "10634:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10634:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10594:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12412, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12399, + "src": "10737:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12413, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12407, + "src": "10750:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12411, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "10717:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10717:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12415, + "nodeType": "ExpressionStatement", + "src": "10717:35:50" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 12416, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12407, + "src": "10770:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10772:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "10770:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12419, + "indexExpression": { + "id": 12418, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12399, + "src": "10791:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10770:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "functionReturnParameters": 12404, + "id": 12420, + "nodeType": "Return", + "src": "10763:40:50" + } + ] + }, + "documentation": { + "id": 12397, + "nodeType": "StructuredDocumentation", + "src": "9858:627:50", + "text": " @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n `serviceHash` is keccak256 hash of the pkg + service name as:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceHash Hash of the service" + }, + "functionSelector": "da47d856", + "id": 12422, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getService", + "nameLocation": "10499:10:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12399, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10518:11:50", + "nodeType": "VariableDeclaration", + "scope": 12422, + "src": "10510:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12398, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10510:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10509:21:50" + }, + "returnParameters": { + "id": 12404, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12403, + "mutability": "mutable", + "name": "service", + "nameLocation": "10575:7:50", + "nodeType": "VariableDeclaration", + "scope": 12422, + "src": "10560:22:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_memory_ptr", + "typeString": "struct PartnerConfiguration.Service" + }, + "typeName": { + "id": 12402, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12401, + "name": "Service", + "nameLocations": [ + "10560:7:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11914, + "src": "10560:7:50" + }, + "referencedDeclaration": 11914, + "src": "10560:7:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "visibility": "internal" + } + ], + "src": "10559:24:50" + }, + "scope": 12872, + "src": "10490:320:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12447, + "nodeType": "Block", + "src": "11028:231:50", + "statements": [ + { + "assignments": [ + 12432 + ], + "declarations": [ + { + "constant": false, + "id": 12432, + "mutability": "mutable", + "name": "$", + "nameLocation": "11074:1:50", + "nodeType": "VariableDeclaration", + "scope": 12447, + "src": "11038:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12431, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12430, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11038:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "11038:27:50" + }, + "referencedDeclaration": 11943, + "src": "11038:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12435, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12433, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "11078:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11078:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11038:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12437, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12425, + "src": "11181:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12438, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12432, + "src": "11194:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12436, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "11161:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11161:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12440, + "nodeType": "ExpressionStatement", + "src": "11161:35:50" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 12441, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12432, + "src": "11214:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11216:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "11214:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12444, + "indexExpression": { + "id": 12443, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12425, + "src": "11235:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11214:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12445, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11248:4:50", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 11907, + "src": "11214:38:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12429, + "id": 12446, + "nodeType": "Return", + "src": "11207:45:50" + } + ] + }, + "documentation": { + "id": 12423, + "nodeType": "StructuredDocumentation", + "src": "10816:121:50", + "text": " @notice Returns the fee for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "eb5ea273", + "id": 12448, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "10951:13:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12425, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10973:11:50", + "nodeType": "VariableDeclaration", + "scope": 12448, + "src": "10965:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12424, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10965:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10964:21:50" + }, + "returnParameters": { + "id": 12429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12428, + "mutability": "mutable", + "name": "fee", + "nameLocation": "11023:3:50", + "nodeType": "VariableDeclaration", + "scope": 12448, + "src": "11015:11:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11015:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11014:13:50" + }, + "scope": 12872, + "src": "10942:317:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12473, + "nodeType": "Block", + "src": "11508:242:50", + "statements": [ + { + "assignments": [ + 12458 + ], + "declarations": [ + { + "constant": false, + "id": 12458, + "mutability": "mutable", + "name": "$", + "nameLocation": "11554:1:50", + "nodeType": "VariableDeclaration", + "scope": 12473, + "src": "11518:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12457, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12456, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11518:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "11518:27:50" + }, + "referencedDeclaration": 11943, + "src": "11518:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12461, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12459, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "11558:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11558:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11518:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12463, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12451, + "src": "11661:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12464, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12458, + "src": "11674:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12462, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "11641:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11641:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12466, + "nodeType": "ExpressionStatement", + "src": "11641:35:50" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 12467, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12458, + "src": "11694:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11696:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "11694:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12470, + "indexExpression": { + "id": 12469, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12451, + "src": "11715:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11694:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12471, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11728:15:50", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 11910, + "src": "11694:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12455, + "id": 12472, + "nodeType": "Return", + "src": "11687:56:50" + } + ] + }, + "documentation": { + "id": 12449, + "nodeType": "StructuredDocumentation", + "src": "11265:133:50", + "text": " @notice Returns the restricted rate for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "8f69347d", + "id": 12474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "11412:24:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12451, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "11445:11:50", + "nodeType": "VariableDeclaration", + "scope": 12474, + "src": "11437:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12450, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11437:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11436:21:50" + }, + "returnParameters": { + "id": 12455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12454, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "11492:14:50", + "nodeType": "VariableDeclaration", + "scope": 12474, + "src": "11487:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12453, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11487:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11486:21:50" + }, + "scope": 12872, + "src": "11403:347:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12500, + "nodeType": "Block", + "src": "12003:240:50", + "statements": [ + { + "assignments": [ + 12485 + ], + "declarations": [ + { + "constant": false, + "id": 12485, + "mutability": "mutable", + "name": "$", + "nameLocation": "12049:1:50", + "nodeType": "VariableDeclaration", + "scope": 12500, + "src": "12013:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12484, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12483, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12013:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "12013:27:50" + }, + "referencedDeclaration": 11943, + "src": "12013:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12488, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12486, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "12053:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12053:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12013:73:50" + }, + { + "expression": { + "arguments": [ + { + "id": 12490, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12477, + "src": "12156:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12491, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12485, + "src": "12169:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 12489, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12523, + "src": "12136:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 12492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12136:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12493, + "nodeType": "ExpressionStatement", + "src": "12136:35:50" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 12494, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12485, + "src": "12189:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12191:18:50", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 11929, + "src": "12189:20:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$11914_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 12497, + "indexExpression": { + "id": 12496, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12477, + "src": "12210:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12189:33:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$11914_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 12498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12223:13:50", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 11913, + "src": "12189:47:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "functionReturnParameters": 12482, + "id": 12499, + "nodeType": "Return", + "src": "12182:54:50" + } + ] + }, + "documentation": { + "id": 12475, + "nodeType": "StructuredDocumentation", + "src": "11756:130:50", + "text": " @notice Returns the capabilities for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "5e07f869", + "id": 12501, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "11900:22:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12477, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "11931:11:50", + "nodeType": "VariableDeclaration", + "scope": 12501, + "src": "11923:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12476, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11923:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11922:21:50" + }, + "returnParameters": { + "id": 12482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12481, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "11989:12:50", + "nodeType": "VariableDeclaration", + "scope": 12501, + "src": "11973:28:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 12479, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11973:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 12480, + "nodeType": "ArrayTypeName", + "src": "11973:8:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "11972:30:50" + }, + "scope": 12872, + "src": "11891:352:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12522, + "nodeType": "Block", + "src": "12465:166:50", + "statements": [ + { + "condition": { + "id": 12515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12518:41:50", + "subExpression": { + "arguments": [ + { + "id": 12513, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12504, + "src": "12547:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12510, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12507, + "src": "12519:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12511, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12521:16:50", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11924, + "src": "12519:18:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12512, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12538:8:50", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 7418, + "src": "12519:27:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 12514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12519:40:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12521, + "nodeType": "IfStatement", + "src": "12514:111:50", + "trueBody": { + "id": 12520, + "nodeType": "Block", + "src": "12561:64:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12517, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12504, + "src": "12602:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12516, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11962, + "src": "12582:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 12518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12582:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12519, + "nodeType": "RevertStatement", + "src": "12575:39:50" + } + ] + } + } + ] + }, + "documentation": { + "id": 12502, + "nodeType": "StructuredDocumentation", + "src": "12249:109:50", + "text": " @notice Checks if the service exists.\n @param serviceHash Hash of the service" + }, + "id": 12523, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkServiceExists", + "nameLocation": "12372:19:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12504, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "12400:11:50", + "nodeType": "VariableDeclaration", + "scope": 12523, + "src": "12392:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12392:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12507, + "mutability": "mutable", + "name": "$", + "nameLocation": "12449:1:50", + "nodeType": "VariableDeclaration", + "scope": 12523, + "src": "12413:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12506, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12505, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12413:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "12413:27:50" + }, + "referencedDeclaration": 11943, + "src": "12413:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "12391:60:50" + }, + "returnParameters": { + "id": 12509, + "nodeType": "ParameterList", + "parameters": [], + "src": "12465:0:50" + }, + "scope": 12872, + "src": "12363:268:50", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12555, + "nodeType": "Block", + "src": "13067:295:50", + "statements": [ + { + "assignments": [ + 12531 + ], + "declarations": [ + { + "constant": false, + "id": 12531, + "mutability": "mutable", + "name": "$", + "nameLocation": "13113:1:50", + "nodeType": "VariableDeclaration", + "scope": 12555, + "src": "13077:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12530, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12529, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13077:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "13077:27:50" + }, + "referencedDeclaration": 11943, + "src": "13077:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12534, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12532, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "13117:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13117:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13077:73:50" + }, + { + "assignments": [ + 12536 + ], + "declarations": [ + { + "constant": false, + "id": 12536, + "mutability": "mutable", + "name": "added", + "nameLocation": "13166:5:50", + "nodeType": "VariableDeclaration", + "scope": 12555, + "src": "13161:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12535, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13161:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12542, + "initialValue": { + "arguments": [ + { + "id": 12540, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12526, + "src": "13203:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12537, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12531, + "src": "13174:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12538, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13176:22:50", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11942, + "src": "13174:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13199:3:50", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7382, + "src": "13174:28:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 12541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13174:41:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13161:54:50" + }, + { + "condition": { + "id": 12544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13230:6:50", + "subExpression": { + "id": 12543, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12536, + "src": "13231:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12550, + "nodeType": "IfStatement", + "src": "13226:83:50", + "trueBody": { + "id": 12549, + "nodeType": "Block", + "src": "13238:71:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12546, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12526, + "src": "13286:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12545, + "name": "WantedServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11966, + "src": "13259:26:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 12547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13259:39:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12548, + "nodeType": "RevertStatement", + "src": "13252:46:50" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 12552, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12526, + "src": "13343:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12551, + "name": "WantedServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12002, + "src": "13324:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 12553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13324:31:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12554, + "nodeType": "EmitStatement", + "src": "13319:36:50" + } + ] + }, + "documentation": { + "id": 12524, + "nodeType": "StructuredDocumentation", + "src": "12810:187:50", + "text": " @notice Adds a wanted service hash to the wanted services set.\n Reverts if the service already exists.\n @param serviceHash Hash of the service" + }, + "id": 12556, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWantedService", + "nameLocation": "13011:17:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12526, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "13037:11:50", + "nodeType": "VariableDeclaration", + "scope": 12556, + "src": "13029:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13029:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13028:21:50" + }, + "returnParameters": { + "id": 12528, + "nodeType": "ParameterList", + "parameters": [], + "src": "13067:0:50" + }, + "scope": 12872, + "src": "13002:360:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12588, + "nodeType": "Block", + "src": "13633:303:50", + "statements": [ + { + "assignments": [ + 12564 + ], + "declarations": [ + { + "constant": false, + "id": 12564, + "mutability": "mutable", + "name": "$", + "nameLocation": "13679:1:50", + "nodeType": "VariableDeclaration", + "scope": 12588, + "src": "13643:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12563, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12562, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13643:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "13643:27:50" + }, + "referencedDeclaration": 11943, + "src": "13643:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12567, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12565, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "13683:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13683:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13643:73:50" + }, + { + "assignments": [ + 12569 + ], + "declarations": [ + { + "constant": false, + "id": 12569, + "mutability": "mutable", + "name": "removed", + "nameLocation": "13732:7:50", + "nodeType": "VariableDeclaration", + "scope": 12588, + "src": "13727:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12568, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13727:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12575, + "initialValue": { + "arguments": [ + { + "id": 12573, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12559, + "src": "13774:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12570, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12564, + "src": "13742:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12571, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13744:22:50", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11942, + "src": "13742:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13767:6:50", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7400, + "src": "13742:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 12574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13742:44:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13727:59:50" + }, + { + "condition": { + "id": 12577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13801:8:50", + "subExpression": { + "id": 12576, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12569, + "src": "13802:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12583, + "nodeType": "IfStatement", + "src": "13797:84:50", + "trueBody": { + "id": 12582, + "nodeType": "Block", + "src": "13811:70:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12579, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12559, + "src": "13858:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12578, + "name": "WantedServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11970, + "src": "13832:25:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 12580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13832:38:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12581, + "nodeType": "RevertStatement", + "src": "13825:45:50" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 12585, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12559, + "src": "13917:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12584, + "name": "WantedServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12006, + "src": "13896:20:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 12586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13896:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12587, + "nodeType": "EmitStatement", + "src": "13891:38:50" + } + ] + }, + "documentation": { + "id": 12557, + "nodeType": "StructuredDocumentation", + "src": "13368:192:50", + "text": " @notice Removes a wanted service hash from the wanted services set.\n Reverts if the service does not exist.\n @param serviceHash Hash of the service" + }, + "id": 12589, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWantedService", + "nameLocation": "13574:20:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12559, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "13603:11:50", + "nodeType": "VariableDeclaration", + "scope": 12589, + "src": "13595:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12558, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13595:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13594:21:50" + }, + "returnParameters": { + "id": 12561, + "nodeType": "ParameterList", + "parameters": [], + "src": "13633:0:50" + }, + "scope": 12872, + "src": "13565:371:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12607, + "nodeType": "Block", + "src": "14161:140:50", + "statements": [ + { + "assignments": [ + 12598 + ], + "declarations": [ + { + "constant": false, + "id": 12598, + "mutability": "mutable", + "name": "$", + "nameLocation": "14207:1:50", + "nodeType": "VariableDeclaration", + "scope": 12607, + "src": "14171:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12597, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12596, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14171:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "14171:27:50" + }, + "referencedDeclaration": 11943, + "src": "14171:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12601, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12599, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "14211:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14211:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14171:73:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 12602, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12598, + "src": "14261:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12603, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14263:22:50", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11942, + "src": "14261:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12604, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14286:6:50", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7481, + "src": "14261:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 12605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14261:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 12595, + "id": 12606, + "nodeType": "Return", + "src": "14254:40:50" + } + ] + }, + "documentation": { + "id": 12590, + "nodeType": "StructuredDocumentation", + "src": "13942:119:50", + "text": " @notice Returns all wanted service hashes.\n @return serviceHashes Wanted service hashes" + }, + "functionSelector": "136f50ca", + "id": 12608, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServiceHashes", + "nameLocation": "14075:22:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12591, + "nodeType": "ParameterList", + "parameters": [], + "src": "14097:2:50" + }, + "returnParameters": { + "id": 12595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12594, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "14146:13:50", + "nodeType": "VariableDeclaration", + "scope": 12608, + "src": "14129:30:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 12592, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14129:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 12593, + "nodeType": "ArrayTypeName", + "src": "14129:9:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "14128:32:50" + }, + "scope": 12872, + "src": "14066:235:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12641, + "nodeType": "Block", + "src": "14705:284:50", + "statements": [ + { + "assignments": [ + 12616 + ], + "declarations": [ + { + "constant": false, + "id": 12616, + "mutability": "mutable", + "name": "$", + "nameLocation": "14751:1:50", + "nodeType": "VariableDeclaration", + "scope": 12641, + "src": "14715:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12615, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12614, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14715:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "14715:27:50" + }, + "referencedDeclaration": 11943, + "src": "14715:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12619, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12617, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "14755:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14755:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14715:73:50" + }, + { + "assignments": [ + 12621 + ], + "declarations": [ + { + "constant": false, + "id": 12621, + "mutability": "mutable", + "name": "added", + "nameLocation": "14803:5:50", + "nodeType": "VariableDeclaration", + "scope": 12641, + "src": "14798:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12620, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14798:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12628, + "initialValue": { + "arguments": [ + { + "id": 12626, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12611, + "src": "14847:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 12622, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12616, + "src": "14811:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14813:12:50", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11932, + "src": "14811:14:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 12624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14826:16:50", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 11919, + "src": "14811:31:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14843:3:50", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7512, + "src": "14811:35:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 12627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14811:43:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14798:56:50" + }, + { + "condition": { + "id": 12630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14869:6:50", + "subExpression": { + "id": 12629, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12621, + "src": "14870:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12636, + "nodeType": "IfStatement", + "src": "14865:77:50", + "trueBody": { + "id": 12635, + "nodeType": "Block", + "src": "14877:65:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12632, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12611, + "src": "14924:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12631, + "name": "PaymentTokenAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11974, + "src": "14898:25:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14898:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12634, + "nodeType": "RevertStatement", + "src": "14891:40:50" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 12638, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12611, + "src": "14975:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12637, + "name": "PaymentTokenAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12038, + "src": "14957:17:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 12639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14957:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12640, + "nodeType": "EmitStatement", + "src": "14952:30:50" + } + ] + }, + "documentation": { + "id": 12609, + "nodeType": "StructuredDocumentation", + "src": "14519:120:50", + "text": " @notice Adds a supported payment token.\n @param _token Payment token address to be added" + }, + "id": 12642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSupportedToken", + "nameLocation": "14653:18:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12611, + "mutability": "mutable", + "name": "_token", + "nameLocation": "14680:6:50", + "nodeType": "VariableDeclaration", + "scope": 12642, + "src": "14672:14:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14672:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14671:16:50" + }, + "returnParameters": { + "id": 12613, + "nodeType": "ParameterList", + "parameters": [], + "src": "14705:0:50" + }, + "scope": 12872, + "src": "14644:345:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12675, + "nodeType": "Block", + "src": "15189:292:50", + "statements": [ + { + "assignments": [ + 12650 + ], + "declarations": [ + { + "constant": false, + "id": 12650, + "mutability": "mutable", + "name": "$", + "nameLocation": "15235:1:50", + "nodeType": "VariableDeclaration", + "scope": 12675, + "src": "15199:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12649, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12648, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15199:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "15199:27:50" + }, + "referencedDeclaration": 11943, + "src": "15199:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12653, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12651, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "15239:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15239:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15199:73:50" + }, + { + "assignments": [ + 12655 + ], + "declarations": [ + { + "constant": false, + "id": 12655, + "mutability": "mutable", + "name": "removed", + "nameLocation": "15287:7:50", + "nodeType": "VariableDeclaration", + "scope": 12675, + "src": "15282:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12654, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15282:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12662, + "initialValue": { + "arguments": [ + { + "id": 12660, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12645, + "src": "15336:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 12656, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12650, + "src": "15297:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15299:12:50", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11932, + "src": "15297:14:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 12658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15312:16:50", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 11919, + "src": "15297:31:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15329:6:50", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7539, + "src": "15297:38:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 12661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15297:46:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15282:61:50" + }, + { + "condition": { + "id": 12664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15358:8:50", + "subExpression": { + "id": 12663, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12655, + "src": "15359:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12670, + "nodeType": "IfStatement", + "src": "15354:78:50", + "trueBody": { + "id": 12669, + "nodeType": "Block", + "src": "15368:64:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12666, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12645, + "src": "15414:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12665, + "name": "PaymentTokenDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11978, + "src": "15389:24:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15389:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12668, + "nodeType": "RevertStatement", + "src": "15382:39:50" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 12672, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12645, + "src": "15467:6:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12671, + "name": "PaymentTokenRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12042, + "src": "15447:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 12673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15447:27:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12674, + "nodeType": "EmitStatement", + "src": "15442:32:50" + } + ] + }, + "documentation": { + "id": 12643, + "nodeType": "StructuredDocumentation", + "src": "14995:125:50", + "text": " @notice Removes a supported payment token.\n @param _token Payment token address to be removed" + }, + "id": 12676, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSupportedToken", + "nameLocation": "15134:21:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12645, + "mutability": "mutable", + "name": "_token", + "nameLocation": "15164:6:50", + "nodeType": "VariableDeclaration", + "scope": 12676, + "src": "15156:14:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15156:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15155:16:50" + }, + "returnParameters": { + "id": 12647, + "nodeType": "ParameterList", + "parameters": [], + "src": "15189:0:50" + }, + "scope": 12872, + "src": "15125:356:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12695, + "nodeType": "Block", + "src": "15692:147:50", + "statements": [ + { + "assignments": [ + 12685 + ], + "declarations": [ + { + "constant": false, + "id": 12685, + "mutability": "mutable", + "name": "$", + "nameLocation": "15738:1:50", + "nodeType": "VariableDeclaration", + "scope": 12695, + "src": "15702:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12684, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12683, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15702:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "15702:27:50" + }, + "referencedDeclaration": 11943, + "src": "15702:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12688, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12686, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "15742:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15742:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15702:73:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "expression": { + "id": 12689, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12685, + "src": "15792:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12690, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15794:12:50", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11932, + "src": "15792:14:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 12691, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15807:16:50", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 11919, + "src": "15792:31:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12692, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15824:6:50", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7638, + "src": "15792:38:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$7485_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 12693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15792:40:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 12682, + "id": 12694, + "nodeType": "Return", + "src": "15785:47:50" + } + ] + }, + "documentation": { + "id": 12677, + "nodeType": "StructuredDocumentation", + "src": "15487:116:50", + "text": " @notice Returns supported token addresses.\n @return tokens Supported token addresses" + }, + "functionSelector": "d3c7c2c7", + "id": 12696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedTokens", + "nameLocation": "15617:18:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12678, + "nodeType": "ParameterList", + "parameters": [], + "src": "15635:2:50" + }, + "returnParameters": { + "id": 12682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12681, + "mutability": "mutable", + "name": "tokens", + "nameLocation": "15684:6:50", + "nodeType": "VariableDeclaration", + "scope": 12696, + "src": "15667:23:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 12679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15667:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12680, + "nodeType": "ArrayTypeName", + "src": "15667:9:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "15666:25:50" + }, + "scope": 12872, + "src": "15608:231:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12720, + "nodeType": "Block", + "src": "16059:236:50", + "statements": [ + { + "assignments": [ + 12704 + ], + "declarations": [ + { + "constant": false, + "id": 12704, + "mutability": "mutable", + "name": "$", + "nameLocation": "16105:1:50", + "nodeType": "VariableDeclaration", + "scope": 12720, + "src": "16069:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12703, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12702, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16069:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "16069:27:50" + }, + "referencedDeclaration": 11943, + "src": "16069:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12707, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12705, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "16109:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16109:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16069:73:50" + }, + { + "expression": { + "id": 12714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "expression": { + "id": 12708, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12704, + "src": "16152:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16154:12:50", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11932, + "src": "16152:14:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 12712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16167:24:50", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 11916, + "src": "16152:39:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12713, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12699, + "src": "16194:24:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16152:66:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12715, + "nodeType": "ExpressionStatement", + "src": "16152:66:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12717, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12699, + "src": "16263:24:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 12716, + "name": "OffChainPaymentSupportUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12046, + "src": "16233:29:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 12718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16233:55:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12719, + "nodeType": "EmitStatement", + "src": "16228:60:50" + } + ] + }, + "documentation": { + "id": 12697, + "nodeType": "StructuredDocumentation", + "src": "15893:75:50", + "text": " @notice Sets the off-chain payment support is supported." + }, + "id": 12721, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setOffChainPaymentSupported", + "nameLocation": "15982:28:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12699, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "16016:24:50", + "nodeType": "VariableDeclaration", + "scope": 12721, + "src": "16011:29:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12698, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16011:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16010:31:50" + }, + "returnParameters": { + "id": 12701, + "nodeType": "ParameterList", + "parameters": [], + "src": "16059:0:50" + }, + "scope": 12872, + "src": "15973:322:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12737, + "nodeType": "Block", + "src": "16473:146:50", + "statements": [ + { + "assignments": [ + 12729 + ], + "declarations": [ + { + "constant": false, + "id": 12729, + "mutability": "mutable", + "name": "$", + "nameLocation": "16519:1:50", + "nodeType": "VariableDeclaration", + "scope": 12737, + "src": "16483:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12728, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12727, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16483:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "16483:27:50" + }, + "referencedDeclaration": 11943, + "src": "16483:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12732, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12730, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "16523:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16523:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16483:73:50" + }, + { + "expression": { + "expression": { + "expression": { + "id": 12733, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12729, + "src": "16573:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16575:12:50", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 11932, + "src": "16573:14:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$11920_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 12735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16588:24:50", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 11916, + "src": "16573:39:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12726, + "id": 12736, + "nodeType": "Return", + "src": "16566:46:50" + } + ] + }, + "documentation": { + "id": 12722, + "nodeType": "StructuredDocumentation", + "src": "16301:96:50", + "text": " @notice Returns true if off-chain payment is supported for the given service." + }, + "functionSelector": "241bbbfc", + "id": 12738, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "offChainPaymentSupported", + "nameLocation": "16411:24:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12723, + "nodeType": "ParameterList", + "parameters": [], + "src": "16435:2:50" + }, + "returnParameters": { + "id": 12726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12725, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12738, + "src": "16467:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12724, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16467:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16466:6:50" + }, + "scope": 12872, + "src": "16402:217:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12780, + "nodeType": "Block", + "src": "17114:348:50", + "statements": [ + { + "assignments": [ + 12748 + ], + "declarations": [ + { + "constant": false, + "id": 12748, + "mutability": "mutable", + "name": "$", + "nameLocation": "17160:1:50", + "nodeType": "VariableDeclaration", + "scope": 12780, + "src": "17124:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12747, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12746, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17124:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "17124:27:50" + }, + "referencedDeclaration": 11943, + "src": "17124:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12751, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12749, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "17164:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17164:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17124:73:50" + }, + { + "assignments": [ + 12753 + ], + "declarations": [ + { + "constant": false, + "id": 12753, + "mutability": "mutable", + "name": "added", + "nameLocation": "17213:5:50", + "nodeType": "VariableDeclaration", + "scope": 12780, + "src": "17208:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12752, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17208:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12759, + "initialValue": { + "arguments": [ + { + "id": 12757, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "17250:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 12754, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12748, + "src": "17221:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17223:22:50", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11935, + "src": "17221:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12756, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17246:3:50", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7512, + "src": "17221:28:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 12758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17221:43:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17208:56:50" + }, + { + "condition": { + "id": 12761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17279:6:50", + "subExpression": { + "id": 12760, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12753, + "src": "17280:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12767, + "nodeType": "IfStatement", + "src": "17275:81:50", + "trueBody": { + "id": 12766, + "nodeType": "Block", + "src": "17287:69:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12763, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "17331:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12762, + "name": "PublicKeyAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11982, + "src": "17308:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17308:37:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12765, + "nodeType": "RevertStatement", + "src": "17301:44:50" + } + ] + } + }, + { + "expression": { + "id": 12774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12768, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12748, + "src": "17366:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12771, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17368:11:50", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 11939, + "src": "17366:13:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 12772, + "indexExpression": { + "id": 12770, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "17380:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17366:28:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12773, + "name": "publicKeyData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12743, + "src": "17397:13:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "17366:44:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 12775, + "nodeType": "ExpressionStatement", + "src": "17366:44:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12777, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "17441:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12776, + "name": "PublicKeyAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12050, + "src": "17426:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 12778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17426:29:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12779, + "nodeType": "EmitStatement", + "src": "17421:34:50" + } + ] + }, + "documentation": { + "id": 12739, + "nodeType": "StructuredDocumentation", + "src": "16798:220:50", + "text": " @notice Adds public key with an address. Reverts if the public key already\n exists.\n Beware: This functions does not check if the public key is actually for the\n given address." + }, + "id": 12781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPublicKey", + "nameLocation": "17032:13:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12741, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "17054:13:50", + "nodeType": "VariableDeclaration", + "scope": 12781, + "src": "17046:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17046:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12743, + "mutability": "mutable", + "name": "publicKeyData", + "nameLocation": "17082:13:50", + "nodeType": "VariableDeclaration", + "scope": 12781, + "src": "17069:26:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17069:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "17045:51:50" + }, + "returnParameters": { + "id": 12745, + "nodeType": "ParameterList", + "parameters": [], + "src": "17114:0:50" + }, + "scope": 12872, + "src": "17023:439:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12819, + "nodeType": "Block", + "src": "17663:346:50", + "statements": [ + { + "assignments": [ + 12789 + ], + "declarations": [ + { + "constant": false, + "id": 12789, + "mutability": "mutable", + "name": "$", + "nameLocation": "17709:1:50", + "nodeType": "VariableDeclaration", + "scope": 12819, + "src": "17673:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12788, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12787, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17673:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "17673:27:50" + }, + "referencedDeclaration": 11943, + "src": "17673:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12792, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12790, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "17713:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17713:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17673:73:50" + }, + { + "assignments": [ + 12794 + ], + "declarations": [ + { + "constant": false, + "id": 12794, + "mutability": "mutable", + "name": "removed", + "nameLocation": "17762:7:50", + "nodeType": "VariableDeclaration", + "scope": 12819, + "src": "17757:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12793, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17757:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12800, + "initialValue": { + "arguments": [ + { + "id": 12798, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12784, + "src": "17804:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 12795, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12789, + "src": "17772:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12796, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17774:22:50", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11935, + "src": "17772:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12797, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17797:6:50", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7539, + "src": "17772:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 12799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17772:46:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17757:61:50" + }, + { + "condition": { + "id": 12802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17833:8:50", + "subExpression": { + "id": 12801, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12794, + "src": "17834:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12808, + "nodeType": "IfStatement", + "src": "17829:82:50", + "trueBody": { + "id": 12807, + "nodeType": "Block", + "src": "17843:68:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12804, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12784, + "src": "17886:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12803, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11986, + "src": "17864:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17864:36:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12806, + "nodeType": "RevertStatement", + "src": "17857:43:50" + } + ] + } + }, + { + "expression": { + "id": 12813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "17921:35:50", + "subExpression": { + "baseExpression": { + "expression": { + "id": 12809, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12789, + "src": "17928:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12810, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17930:11:50", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 11939, + "src": "17928:13:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 12812, + "indexExpression": { + "id": 12811, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12784, + "src": "17942:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17928:28:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12814, + "nodeType": "ExpressionStatement", + "src": "17921:35:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12816, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12784, + "src": "17988:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12815, + "name": "PublicKeyRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12054, + "src": "17971:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 12817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17971:31:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12818, + "nodeType": "EmitStatement", + "src": "17966:36:50" + } + ] + }, + "documentation": { + "id": 12782, + "nodeType": "StructuredDocumentation", + "src": "17468:124:50", + "text": " @notice Removes the public key for a given address\n Reverts if the public key does not exist" + }, + "id": 12820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePublicKey", + "nameLocation": "17606:16:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12784, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "17631:13:50", + "nodeType": "VariableDeclaration", + "scope": 12820, + "src": "17623:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17623:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17622:23:50" + }, + "returnParameters": { + "id": 12786, + "nodeType": "ParameterList", + "parameters": [], + "src": "17663:0:50" + }, + "scope": 12872, + "src": "17597:412:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12838, + "nodeType": "Block", + "src": "18281:140:50", + "statements": [ + { + "assignments": [ + 12829 + ], + "declarations": [ + { + "constant": false, + "id": 12829, + "mutability": "mutable", + "name": "$", + "nameLocation": "18327:1:50", + "nodeType": "VariableDeclaration", + "scope": 12838, + "src": "18291:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12828, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12827, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "18291:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "18291:27:50" + }, + "referencedDeclaration": 11943, + "src": "18291:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12832, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12830, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "18331:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18331:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18291:73:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 12833, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12829, + "src": "18381:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12834, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18383:22:50", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11935, + "src": "18381:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12835, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18406:6:50", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7638, + "src": "18381:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$7485_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 12836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18381:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 12826, + "id": 12837, + "nodeType": "Return", + "src": "18374:40:50" + } + ] + }, + "documentation": { + "id": 12821, + "nodeType": "StructuredDocumentation", + "src": "18015:164:50", + "text": " @notice Returns the addresses of all public keys. These can then be used to\n retrieve the public keys the `getPublicKey(address)` function." + }, + "functionSelector": "ea79d07a", + "id": 12839, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKeysAddresses", + "nameLocation": "18193:22:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12822, + "nodeType": "ParameterList", + "parameters": [], + "src": "18215:2:50" + }, + "returnParameters": { + "id": 12826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12825, + "mutability": "mutable", + "name": "pubKeyAddresses", + "nameLocation": "18264:15:50", + "nodeType": "VariableDeclaration", + "scope": 12839, + "src": "18247:32:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 12823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18247:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12824, + "nodeType": "ArrayTypeName", + "src": "18247:9:50", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "18246:34:50" + }, + "scope": 12872, + "src": "18184:237:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 12870, + "nodeType": "Block", + "src": "18711:269:50", + "statements": [ + { + "assignments": [ + 12849 + ], + "declarations": [ + { + "constant": false, + "id": 12849, + "mutability": "mutable", + "name": "$", + "nameLocation": "18757:1:50", + "nodeType": "VariableDeclaration", + "scope": 12870, + "src": "18721:37:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 12848, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12847, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "18721:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11943, + "src": "18721:27:50" + }, + "referencedDeclaration": 11943, + "src": "18721:27:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12852, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12850, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11954, + "src": "18761:31:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$11943_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 12851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18761:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18721:73:50" + }, + { + "condition": { + "id": 12858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18809:49:50", + "subExpression": { + "arguments": [ + { + "id": 12856, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "18844:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 12853, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12849, + "src": "18810:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12854, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18812:22:50", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 11935, + "src": "18810:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$7485_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 12855, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18835:8:50", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 7566, + "src": "18810:33:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$7485_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7485_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 12857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18810:48:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12864, + "nodeType": "IfStatement", + "src": "18805:123:50", + "trueBody": { + "id": 12863, + "nodeType": "Block", + "src": "18860:68:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12860, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "18903:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12859, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11986, + "src": "18881:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18881:36:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12862, + "nodeType": "RevertStatement", + "src": "18874:43:50" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 12865, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12849, + "src": "18945:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$11943_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 12866, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18947:11:50", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 11939, + "src": "18945:13:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 12868, + "indexExpression": { + "id": 12867, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "18959:13:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18945:28:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 12846, + "id": 12869, + "nodeType": "Return", + "src": "18938:35:50" + } + ] + }, + "documentation": { + "id": 12840, + "nodeType": "StructuredDocumentation", + "src": "18427:186:50", + "text": " @notice Returns the public key for a given address.\n Reverts if the public key does not exist\n @param pubKeyAddress Address of the public key" + }, + "functionSelector": "857cdbb8", + "id": 12871, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKey", + "nameLocation": "18627:12:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12842, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "18648:13:50", + "nodeType": "VariableDeclaration", + "scope": 12871, + "src": "18640:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12841, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18640:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18639:23:50" + }, + "returnParameters": { + "id": 12846, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12845, + "mutability": "mutable", + "name": "data", + "nameLocation": "18705:4:50", + "nodeType": "VariableDeclaration", + "scope": 12871, + "src": "18692:17:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12844, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18692:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18691:19:50" + }, + "scope": 12872, + "src": "18618:362:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 12873, + "src": "469:18513:50", + "usedErrors": [ + 580, + 583, + 11958, + 11962, + 11966, + 11970, + 11974, + 11978, + 11982, + 11986, + 11990 + ], + "usedEvents": [ + 588, + 11994, + 11998, + 12002, + 12006, + 12012, + 12018, + 12022, + 12028, + 12034, + 12038, + 12042, + 12046, + 12050, + 12054 + ] + } + ], + "src": "85:18898:50" + }, + "id": 50 + }, + "contracts/partner/ServiceRegistry.sol": { + "ast": { + "absolutePath": "contracts/partner/ServiceRegistry.sol", + "exportedSymbols": { + "EnumerableSet": [ + 7772 + ], + "Initializable": [ + 817 + ], + "ServiceRegistry": [ + 13201 + ] + }, + "id": 13202, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12874, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "106:24:51" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 12876, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 13202, + "sourceUnit": 818, + "src": "132:98:51", + "symbolAliases": [ + { + "foreign": { + "id": 12875, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "141:13:51", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 12878, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 13202, + "sourceUnit": 7773, + "src": "231:88:51", + "symbolAliases": [ + { + "foreign": { + "id": 12877, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7772, + "src": "240:13:51", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 12880, + "name": "Initializable", + "nameLocations": [ + "604:13:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "604:13:51" + }, + "id": 12881, + "nodeType": "InheritanceSpecifier", + "src": "604:13:51" + } + ], + "canonicalName": "ServiceRegistry", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 12879, + "nodeType": "StructuredDocumentation", + "src": "321:245:51", + "text": " @title ServiceRegistry\n @notice Service registry is used by the {CMAccountManager} contract to register\n services by hashing (keccak256) the service name (string) and creating a mapping\n as keccak256(serviceName) => serviceName." + }, + "fullyImplemented": true, + "id": 13201, + "linearizedBaseContracts": [ + 13201, + 817 + ], + "name": "ServiceRegistry", + "nameLocation": "585:15:51", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 12885, + "libraryName": { + "id": 12882, + "name": "EnumerableSet", + "nameLocations": [ + "803:13:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7772, + "src": "803:13:51" + }, + "nodeType": "UsingForDirective", + "src": "797:49:51", + "typeName": { + "id": 12884, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12883, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "821:13:51", + "835:10:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "821:24:51" + }, + "referencedDeclaration": 7364, + "src": "821:24:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "canonicalName": "ServiceRegistry.ServiceRegistryStorage", + "documentation": { + "id": 12886, + "nodeType": "StructuredDocumentation", + "src": "852:77:51", + "text": "@custom:storage-location erc7201:camino.messenger.storage.ServiceRegistry" + }, + "id": 12898, + "members": [ + { + "constant": false, + "id": 12889, + "mutability": "mutable", + "name": "_servicesHashSet", + "nameLocation": "999:16:51", + "nodeType": "VariableDeclaration", + "scope": 12898, + "src": "974:41:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 12888, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12887, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "974:13:51", + "988:10:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7364, + "src": "974:24:51" + }, + "referencedDeclaration": 7364, + "src": "974:24:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12893, + "mutability": "mutable", + "name": "_serviceNameByHash", + "nameLocation": "1101:18:51", + "nodeType": "VariableDeclaration", + "scope": 12898, + "src": "1050:69:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string)" + }, + "typeName": { + "id": 12892, + "keyName": "serviceHash", + "keyNameLocation": "1066:11:51", + "keyType": { + "id": 12890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1058:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1050:50:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string)" + }, + "valueName": "serviceName", + "valueNameLocation": "1088:11:51", + "valueType": { + "id": 12891, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1081:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12897, + "mutability": "mutable", + "name": "_hashByServiceName", + "nameLocation": "1180:18:51", + "nodeType": "VariableDeclaration", + "scope": 12898, + "src": "1129:69:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string => bytes32)" + }, + "typeName": { + "id": 12896, + "keyName": "serviceName", + "keyNameLocation": "1144:11:51", + "keyType": { + "id": 12894, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1137:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "nodeType": "Mapping", + "src": "1129:50:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string => bytes32)" + }, + "valueName": "serviceHash", + "valueNameLocation": "1167:11:51", + "valueType": { + "id": 12895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1159:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "internal" + } + ], + "name": "ServiceRegistryStorage", + "nameLocation": "941:22:51", + "nodeType": "StructDefinition", + "scope": 13201, + "src": "934:271:51", + "visibility": "public" + }, + { + "constant": true, + "id": 12901, + "mutability": "constant", + "name": "ServiceRegistryStorageLocation", + "nameLocation": "1360:30:51", + "nodeType": "VariableDeclaration", + "scope": 13201, + "src": "1335:132:51", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12899, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1335:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307835363365303337333535666666303530373730356634383165346233363265346333393936613362353764303733303764656162666361336438313638363030", + "id": 12900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1401:66:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_39008473310866908200128771551230288420814066119420102897059719156439451076096_by_1", + "typeString": "int_const 3900...(69 digits omitted)...6096" + }, + "value": "0x563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d8168600" + }, + "visibility": "private" + }, + { + "body": { + "id": 12908, + "nodeType": "Block", + "src": "1568:89:51", + "statements": [ + { + "AST": { + "nativeSrc": "1587:64:51", + "nodeType": "YulBlock", + "src": "1587:64:51", + "statements": [ + { + "nativeSrc": "1601:40:51", + "nodeType": "YulAssignment", + "src": "1601:40:51", + "value": { + "name": "ServiceRegistryStorageLocation", + "nativeSrc": "1611:30:51", + "nodeType": "YulIdentifier", + "src": "1611:30:51" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1601:6:51", + "nodeType": "YulIdentifier", + "src": "1601:6:51" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 12905, + "isOffset": false, + "isSlot": true, + "src": "1601:6:51", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 12901, + "isOffset": false, + "isSlot": false, + "src": "1611:30:51", + "valueSize": 1 + } + ], + "id": 12907, + "nodeType": "InlineAssembly", + "src": "1578:73:51" + } + ] + }, + "id": 12909, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getServiceRegistryStorage", + "nameLocation": "1483:26:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12902, + "nodeType": "ParameterList", + "parameters": [], + "src": "1509:2:51" + }, + "returnParameters": { + "id": 12906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12905, + "mutability": "mutable", + "name": "$", + "nameLocation": "1565:1:51", + "nodeType": "VariableDeclaration", + "scope": 12909, + "src": "1534:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 12904, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12903, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "1534:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "1534:22:51" + }, + "referencedDeclaration": 12898, + "src": "1534:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1533:34:51" + }, + "scope": 13201, + "src": "1474:183:51", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "eventSelector": "bad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded4166458", + "id": 12915, + "name": "ServiceRegistered", + "nameLocation": "1842:17:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 12914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12911, + "indexed": false, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "1867:11:51", + "nodeType": "VariableDeclaration", + "scope": 12915, + "src": "1860:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12910, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1860:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12913, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "1888:11:51", + "nodeType": "VariableDeclaration", + "scope": 12915, + "src": "1880:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12912, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1880:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1859:41:51" + }, + "src": "1836:65:51" + }, + { + "anonymous": false, + "eventSelector": "57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb7", + "id": 12921, + "name": "ServiceUnregistered", + "nameLocation": "1912:19:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 12920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12917, + "indexed": false, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "1939:11:51", + "nodeType": "VariableDeclaration", + "scope": 12921, + "src": "1932:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12916, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1932:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12919, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "1960:11:51", + "nodeType": "VariableDeclaration", + "scope": 12921, + "src": "1952:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12918, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1952:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1931:41:51" + }, + "src": "1906:67:51" + }, + { + "errorSelector": "7b5a1bea", + "id": 12925, + "name": "ServiceAlreadyRegistered", + "nameLocation": "2158:24:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12923, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "2190:11:51", + "nodeType": "VariableDeclaration", + "scope": 12925, + "src": "2183:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12922, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2183:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2182:20:51" + }, + "src": "2152:51:51" + }, + { + "errorSelector": "2c5d24ce", + "id": 12927, + "name": "ServiceNotRegistered", + "nameLocation": "2214:20:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12926, + "nodeType": "ParameterList", + "parameters": [], + "src": "2234:2:51" + }, + "src": "2208:29:51" + }, + { + "body": { + "id": 12932, + "nodeType": "Block", + "src": "2476:2:51", + "statements": [] + }, + "id": 12933, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12930, + "kind": "modifierInvocation", + "modifierName": { + "id": 12929, + "name": "onlyInitializing", + "nameLocations": [ + "2459:16:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2459:16:51" + }, + "nodeType": "ModifierInvocation", + "src": "2459:16:51" + } + ], + "name": "__ServiceRegistry_init", + "nameLocation": "2425:22:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12928, + "nodeType": "ParameterList", + "parameters": [], + "src": "2447:2:51" + }, + "returnParameters": { + "id": 12931, + "nodeType": "ParameterList", + "parameters": [], + "src": "2476:0:51" + }, + "scope": 13201, + "src": "2416:62:51", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12938, + "nodeType": "Block", + "src": "2554:2:51", + "statements": [] + }, + "id": 12939, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12936, + "kind": "modifierInvocation", + "modifierName": { + "id": 12935, + "name": "onlyInitializing", + "nameLocations": [ + "2537:16:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2537:16:51" + }, + "nodeType": "ModifierInvocation", + "src": "2537:16:51" + } + ], + "name": "__ServiceRegistry_init_unchained", + "nameLocation": "2493:32:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12934, + "nodeType": "ParameterList", + "parameters": [], + "src": "2525:2:51" + }, + "returnParameters": { + "id": 12937, + "nodeType": "ParameterList", + "parameters": [], + "src": "2554:0:51" + }, + "scope": 13201, + "src": "2484:72:51", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12997, + "nodeType": "Block", + "src": "3432:527:51", + "statements": [ + { + "assignments": [ + 12946 + ], + "declarations": [ + { + "constant": false, + "id": 12946, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3450:11:51", + "nodeType": "VariableDeclaration", + "scope": 12997, + "src": "3442:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12945, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3442:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 12953, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 12950, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12942, + "src": "3491:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 12948, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3474:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3478:12:51", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "3474:16:51", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3474:29:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12947, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3464:9:51", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3464:40:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3442:62:51" + }, + { + "assignments": [ + 12956 + ], + "declarations": [ + { + "constant": false, + "id": 12956, + "mutability": "mutable", + "name": "$", + "nameLocation": "3546:1:51", + "nodeType": "VariableDeclaration", + "scope": 12997, + "src": "3515:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 12955, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12954, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "3515:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "3515:22:51" + }, + "referencedDeclaration": 12898, + "src": "3515:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12959, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12957, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "3550:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 12958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3550:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3515:63:51" + }, + { + "assignments": [ + 12961 + ], + "declarations": [ + { + "constant": false, + "id": 12961, + "mutability": "mutable", + "name": "added", + "nameLocation": "3644:5:51", + "nodeType": "VariableDeclaration", + "scope": 12997, + "src": "3639:10:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12960, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3639:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12967, + "initialValue": { + "arguments": [ + { + "id": 12965, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12946, + "src": "3675:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 12962, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12956, + "src": "3652:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 12963, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3654:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "3652:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 12964, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3671:3:51", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 7382, + "src": "3652:22:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 12966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3652:35:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3639:48:51" + }, + { + "condition": { + "id": 12969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3702:6:51", + "subExpression": { + "id": 12968, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12961, + "src": "3703:5:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12975, + "nodeType": "IfStatement", + "src": "3698:81:51", + "trueBody": { + "id": 12974, + "nodeType": "Block", + "src": "3710:69:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12971, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12942, + "src": "3756:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12970, + "name": "ServiceAlreadyRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12925, + "src": "3731:24:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 12972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3731:37:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12973, + "nodeType": "RevertStatement", + "src": "3724:44:51" + } + ] + } + }, + { + "expression": { + "id": 12982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12976, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12956, + "src": "3789:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 12979, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3791:18:51", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 12893, + "src": "3789:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 12980, + "indexExpression": { + "id": 12978, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12946, + "src": "3810:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3789:33:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12981, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12942, + "src": "3825:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3789:47:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 12983, + "nodeType": "ExpressionStatement", + "src": "3789:47:51" + }, + { + "expression": { + "id": 12990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12984, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12956, + "src": "3846:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 12987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3848:18:51", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 12897, + "src": "3846:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 12988, + "indexExpression": { + "id": 12986, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12942, + "src": "3867:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3846:33:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12989, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12946, + "src": "3882:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3846:47:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 12991, + "nodeType": "ExpressionStatement", + "src": "3846:47:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12993, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12942, + "src": "3927:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 12994, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12946, + "src": "3940:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 12992, + "name": "ServiceRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12915, + "src": "3909:17:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (string memory,bytes32)" + } + }, + "id": 12995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3909:43:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12996, + "nodeType": "EmitStatement", + "src": "3904:48:51" + } + ] + }, + "documentation": { + "id": 12940, + "nodeType": "StructuredDocumentation", + "src": "2735:618:51", + "text": " @notice Adds a new service by its name. This function calculates the hash of the\n service name and adds it to the registry\n {serviceName} is the pkg + service name as:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n \"cmp.services.accommodation.v1alpha.AccommodationSearchService\"\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceName Name of the service" + }, + "id": 12998, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerServiceName", + "nameLocation": "3367:20:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12942, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "3402:11:51", + "nodeType": "VariableDeclaration", + "scope": 12998, + "src": "3388:25:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12941, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3388:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3387:27:51" + }, + "returnParameters": { + "id": 12944, + "nodeType": "ParameterList", + "parameters": [], + "src": "3432:0:51" + }, + "scope": 13201, + "src": "3358:601:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13051, + "nodeType": "Block", + "src": "4251:510:51", + "statements": [ + { + "assignments": [ + 13005 + ], + "declarations": [ + { + "constant": false, + "id": 13005, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4269:11:51", + "nodeType": "VariableDeclaration", + "scope": 13051, + "src": "4261:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13004, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4261:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 13012, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 13009, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13001, + "src": "4310:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 13007, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4293:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 13008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4297:12:51", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "4293:16:51", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 13010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4293:29:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 13006, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4283:9:51", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 13011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4283:40:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4261:62:51" + }, + { + "assignments": [ + 13015 + ], + "declarations": [ + { + "constant": false, + "id": 13015, + "mutability": "mutable", + "name": "$", + "nameLocation": "4365:1:51", + "nodeType": "VariableDeclaration", + "scope": 13051, + "src": "4334:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 13014, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13013, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "4334:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "4334:22:51" + }, + "referencedDeclaration": 12898, + "src": "4334:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13018, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13016, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "4369:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 13017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4369:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4334:63:51" + }, + { + "assignments": [ + 13020 + ], + "declarations": [ + { + "constant": false, + "id": 13020, + "mutability": "mutable", + "name": "removed", + "nameLocation": "4466:7:51", + "nodeType": "VariableDeclaration", + "scope": 13051, + "src": "4461:12:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13019, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4461:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 13026, + "initialValue": { + "arguments": [ + { + "id": 13024, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13005, + "src": "4502:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 13021, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13015, + "src": "4476:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13022, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4478:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "4476:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 13023, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4495:6:51", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 7400, + "src": "4476:25:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 13025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4476:38:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4461:53:51" + }, + { + "condition": { + "id": 13028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4529:8:51", + "subExpression": { + "id": 13027, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13020, + "src": "4530:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13033, + "nodeType": "IfStatement", + "src": "4525:68:51", + "trueBody": { + "id": 13032, + "nodeType": "Block", + "src": "4539:54:51", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13029, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12927, + "src": "4560:20:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 13030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4560:22:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13031, + "nodeType": "RevertStatement", + "src": "4553:29:51" + } + ] + } + }, + { + "expression": { + "id": 13038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4603:40:51", + "subExpression": { + "baseExpression": { + "expression": { + "id": 13034, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13015, + "src": "4610:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13035, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4612:18:51", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 12893, + "src": "4610:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 13037, + "indexExpression": { + "id": 13036, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13005, + "src": "4631:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4610:33:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13039, + "nodeType": "ExpressionStatement", + "src": "4603:40:51" + }, + { + "expression": { + "id": 13044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4653:40:51", + "subExpression": { + "baseExpression": { + "expression": { + "id": 13040, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13015, + "src": "4660:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13041, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4662:18:51", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 12897, + "src": "4660:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 13043, + "indexExpression": { + "id": 13042, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13001, + "src": "4681:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4660:33:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13045, + "nodeType": "ExpressionStatement", + "src": "4653:40:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 13047, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13001, + "src": "4729:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 13048, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13005, + "src": "4742:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13046, + "name": "ServiceUnregistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12921, + "src": "4709:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (string memory,bytes32)" + } + }, + "id": 13049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4709:45:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13050, + "nodeType": "EmitStatement", + "src": "4704:50:51" + } + ] + }, + "documentation": { + "id": 12999, + "nodeType": "StructuredDocumentation", + "src": "3965:205:51", + "text": " @notice Removes a service by its name. This function calculates the hash of the\n service name and removes it from the registry.\n @param serviceName Name of the service" + }, + "id": 13052, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_unregisterServiceName", + "nameLocation": "4184:22:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13001, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "4221:11:51", + "nodeType": "VariableDeclaration", + "scope": 13052, + "src": "4207:25:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13000, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4207:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4206:27:51" + }, + "returnParameters": { + "id": 13003, + "nodeType": "ParameterList", + "parameters": [], + "src": "4251:0:51" + }, + "scope": 13201, + "src": "4175:586:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13082, + "nodeType": "Block", + "src": "5003:287:51", + "statements": [ + { + "assignments": [ + 13062 + ], + "declarations": [ + { + "constant": false, + "id": 13062, + "mutability": "mutable", + "name": "$", + "nameLocation": "5044:1:51", + "nodeType": "VariableDeclaration", + "scope": 13082, + "src": "5013:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 13061, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13060, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "5013:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "5013:22:51" + }, + "referencedDeclaration": 12898, + "src": "5013:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13065, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13063, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "5048:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 13064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5048:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5013:63:51" + }, + { + "condition": { + "id": 13071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5137:41:51", + "subExpression": { + "arguments": [ + { + "id": 13069, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13055, + "src": "5166:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 13066, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13062, + "src": "5138:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5140:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "5138:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 13068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5157:8:51", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 7418, + "src": "5138:27:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5138:40:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13076, + "nodeType": "IfStatement", + "src": "5133:101:51", + "trueBody": { + "id": 13075, + "nodeType": "Block", + "src": "5180:54:51", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13072, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12927, + "src": "5201:20:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 13073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5201:22:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13074, + "nodeType": "RevertStatement", + "src": "5194:29:51" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 13077, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13062, + "src": "5250:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13078, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5252:18:51", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 12893, + "src": "5250:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 13080, + "indexExpression": { + "id": 13079, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13055, + "src": "5271:11:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5250:33:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 13059, + "id": 13081, + "nodeType": "Return", + "src": "5243:40:51" + } + ] + }, + "documentation": { + "id": 13053, + "nodeType": "StructuredDocumentation", + "src": "4767:122:51", + "text": " @notice Returns the name of a service by its hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "5a81a626", + "id": 13083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceNameByHash", + "nameLocation": "4903:30:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13055, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4942:11:51", + "nodeType": "VariableDeclaration", + "scope": 13083, + "src": "4934:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13054, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4934:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4933:21:51" + }, + "returnParameters": { + "id": 13059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13058, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "4990:11:51", + "nodeType": "VariableDeclaration", + "scope": 13083, + "src": "4976:25:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4976:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4975:27:51" + }, + "scope": 13201, + "src": "4894:396:51", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 13118, + "nodeType": "Block", + "src": "5532:317:51", + "statements": [ + { + "assignments": [ + 13093 + ], + "declarations": [ + { + "constant": false, + "id": 13093, + "mutability": "mutable", + "name": "$", + "nameLocation": "5573:1:51", + "nodeType": "VariableDeclaration", + "scope": 13118, + "src": "5542:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 13092, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13091, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "5542:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "5542:22:51" + }, + "referencedDeclaration": 12898, + "src": "5542:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13096, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13094, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "5577:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 13095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5577:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5542:63:51" + }, + { + "condition": { + "id": 13107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5666:70:51", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 13103, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13086, + "src": "5722:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 13101, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5705:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 13102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5709:12:51", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5705:16:51", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 13104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5705:29:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 13100, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5695:9:51", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 13105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5695:40:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 13097, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13093, + "src": "5667:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5669:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "5667:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 13099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5686:8:51", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 7418, + "src": "5667:27:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5667:69:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13112, + "nodeType": "IfStatement", + "src": "5662:130:51", + "trueBody": { + "id": 13111, + "nodeType": "Block", + "src": "5738:54:51", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13108, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12927, + "src": "5759:20:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 13109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5759:22:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13110, + "nodeType": "RevertStatement", + "src": "5752:29:51" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 13113, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13093, + "src": "5809:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5811:18:51", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 12897, + "src": "5809:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 13116, + "indexExpression": { + "id": 13115, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13086, + "src": "5830:11:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5809:33:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 13090, + "id": 13117, + "nodeType": "Return", + "src": "5802:40:51" + } + ] + }, + "documentation": { + "id": 13084, + "nodeType": "StructuredDocumentation", + "src": "5296:122:51", + "text": " @notice Returns the hash of a service by its name.\n @param serviceName Name of the service" + }, + "functionSelector": "352af39a", + "id": 13119, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceHashByName", + "nameLocation": "5432:30:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13086, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "5477:11:51", + "nodeType": "VariableDeclaration", + "scope": 13119, + "src": "5463:25:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13085, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5463:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5462:27:51" + }, + "returnParameters": { + "id": 13090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13089, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5519:11:51", + "nodeType": "VariableDeclaration", + "scope": 13119, + "src": "5511:19:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13088, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5511:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5510:21:51" + }, + "scope": 13201, + "src": "5423:426:51", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 13137, + "nodeType": "Block", + "src": "6079:124:51", + "statements": [ + { + "assignments": [ + 13128 + ], + "declarations": [ + { + "constant": false, + "id": 13128, + "mutability": "mutable", + "name": "$", + "nameLocation": "6120:1:51", + "nodeType": "VariableDeclaration", + "scope": 13137, + "src": "6089:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 13127, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13126, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "6089:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "6089:22:51" + }, + "referencedDeclaration": 12898, + "src": "6089:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13131, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13129, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "6124:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 13130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6124:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6089:63:51" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 13132, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13128, + "src": "6169:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6171:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "6169:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 13134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6188:6:51", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7481, + "src": "6169:25:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 13135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6169:27:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 13125, + "id": 13136, + "nodeType": "Return", + "src": "6162:34:51" + } + ] + }, + "documentation": { + "id": 13120, + "nodeType": "StructuredDocumentation", + "src": "5855:130:51", + "text": " @notice Returns all registered service **hashes**.\n @return services All registered service hashes" + }, + "functionSelector": "8127f465", + "id": 13138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllRegisteredServiceHashes", + "nameLocation": "5999:29:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13121, + "nodeType": "ParameterList", + "parameters": [], + "src": "6028:2:51" + }, + "returnParameters": { + "id": 13125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13124, + "mutability": "mutable", + "name": "services", + "nameLocation": "6069:8:51", + "nodeType": "VariableDeclaration", + "scope": 13138, + "src": "6052:25:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 13122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6052:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 13123, + "nodeType": "ArrayTypeName", + "src": "6052:9:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "6051:27:51" + }, + "scope": 13201, + "src": "5990:213:51", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 13199, + "nodeType": "Block", + "src": "6429:505:51", + "statements": [ + { + "assignments": [ + 13147 + ], + "declarations": [ + { + "constant": false, + "id": 13147, + "mutability": "mutable", + "name": "$", + "nameLocation": "6470:1:51", + "nodeType": "VariableDeclaration", + "scope": 13199, + "src": "6439:32:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 13146, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13145, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "6439:22:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12898, + "src": "6439:22:51" + }, + "referencedDeclaration": 12898, + "src": "6439:22:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13150, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13148, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12909, + "src": "6474:26:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$12898_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 13149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6474:28:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6439:63:51" + }, + { + "assignments": [ + 13155 + ], + "declarations": [ + { + "constant": false, + "id": 13155, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "6597:13:51", + "nodeType": "VariableDeclaration", + "scope": 13199, + "src": "6580:30:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 13153, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6580:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 13154, + "nodeType": "ArrayTypeName", + "src": "6580:9:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 13160, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 13156, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13147, + "src": "6613:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6615:16:51", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 12889, + "src": "6613:18:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$7364_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 13158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6632:6:51", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 7481, + "src": "6613:25:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$7364_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$7364_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 13159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6613:27:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6580:60:51" + }, + { + "assignments": [ + 13165 + ], + "declarations": [ + { + "constant": false, + "id": 13165, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "6666:12:51", + "nodeType": "VariableDeclaration", + "scope": 13199, + "src": "6650:28:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 13163, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6650:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 13164, + "nodeType": "ArrayTypeName", + "src": "6650:8:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 13172, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 13169, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13155, + "src": "6694:13:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 13170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6708:6:51", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6694:20:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6681:12:51", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 13166, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6685:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 13167, + "nodeType": "ArrayTypeName", + "src": "6685:8:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 13171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6681:34:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6650:65:51" + }, + { + "body": { + "id": 13195, + "nodeType": "Block", + "src": "6817:81:51", + "statements": [ + { + "expression": { + "id": 13193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 13184, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13165, + "src": "6831:12:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 13186, + "indexExpression": { + "id": 13185, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13174, + "src": "6844:1:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6831:15:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "expression": { + "id": 13187, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13147, + "src": "6849:1:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$12898_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 13188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6851:18:51", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 12893, + "src": "6849:20:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 13192, + "indexExpression": { + "baseExpression": { + "id": 13189, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13155, + "src": "6870:13:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 13191, + "indexExpression": { + "id": 13190, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13174, + "src": "6884:1:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6870:16:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6849:38:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "src": "6831:56:51", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 13194, + "nodeType": "ExpressionStatement", + "src": "6831:56:51" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13177, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13174, + "src": "6786:1:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 13178, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13155, + "src": "6790:13:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 13179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6804:6:51", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6790:20:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6786:24:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13196, + "initializationExpression": { + "assignments": [ + 13174 + ], + "declarations": [ + { + "constant": false, + "id": 13174, + "mutability": "mutable", + "name": "i", + "nameLocation": "6779:1:51", + "nodeType": "VariableDeclaration", + "scope": 13196, + "src": "6771:9:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6771:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13176, + "initialValue": { + "hexValue": "30", + "id": 13175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6783:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6771:13:51" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 13182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6812:3:51", + "subExpression": { + "id": 13181, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13174, + "src": "6812:1:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13183, + "nodeType": "ExpressionStatement", + "src": "6812:3:51" + }, + "nodeType": "ForStatement", + "src": "6766:132:51" + }, + { + "expression": { + "id": 13197, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13165, + "src": "6915:12:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 13144, + "id": 13198, + "nodeType": "Return", + "src": "6908:19:51" + } + ] + }, + "documentation": { + "id": 13139, + "nodeType": "StructuredDocumentation", + "src": "6209:128:51", + "text": " @notice Returns all registered service **names**.\n @return services All registered service names" + }, + "functionSelector": "c2a1db78", + "id": 13200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllRegisteredServiceNames", + "nameLocation": "6351:28:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13140, + "nodeType": "ParameterList", + "parameters": [], + "src": "6379:2:51" + }, + "returnParameters": { + "id": 13144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13143, + "mutability": "mutable", + "name": "services", + "nameLocation": "6419:8:51", + "nodeType": "VariableDeclaration", + "scope": 13200, + "src": "6403:24:51", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 13141, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6403:6:51", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 13142, + "nodeType": "ArrayTypeName", + "src": "6403:8:51", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "6402:26:51" + }, + "scope": 13201, + "src": "6342:592:51", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 13202, + "src": "567:6369:51", + "usedErrors": [ + 580, + 583, + 12925, + 12927 + ], + "usedEvents": [ + 588, + 12915, + 12921 + ] + } + ], + "src": "106:6831:51" + }, + "id": 51 + }, + "contracts/test/Dummy.sol": { + "ast": { + "absolutePath": "contracts/test/Dummy.sol", + "exportedSymbols": { + "Dummy": [ + 13212 + ] + }, + "id": 13213, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13203, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "60:24:52" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Dummy", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 13212, + "linearizedBaseContracts": [ + 13212 + ], + "name": "Dummy", + "nameLocation": "95:5:52", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 13210, + "nodeType": "Block", + "src": "165:31:52", + "statements": [ + { + "expression": { + "hexValue": "44554d4d59", + "id": 13208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "182:7:52", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_71a1e3f2a606b6c3410d51baf77895d71d0a1627d85a0a301f2533628beb6ff7", + "typeString": "literal_string \"DUMMY\"" + }, + "value": "DUMMY" + }, + "functionReturnParameters": 13207, + "id": 13209, + "nodeType": "Return", + "src": "175:14:52" + } + ] + }, + "functionSelector": "0d8e6e2c", + "id": 13211, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersion", + "nameLocation": "116:10:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13204, + "nodeType": "ParameterList", + "parameters": [], + "src": "126:2:52" + }, + "returnParameters": { + "id": 13207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13206, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13211, + "src": "150:13:52", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13205, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "150:6:52", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "149:15:52" + }, + "scope": 13212, + "src": "107:89:52", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 13213, + "src": "86:112:52", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "60:139:52" + }, + "id": 52 + }, + "contracts/test/NullUSD.sol": { + "ast": { + "absolutePath": "contracts/test/NullUSD.sol", + "exportedSymbols": { + "ERC20": [ + 4367 + ], + "NullUSD": [ + 13238 + ] + }, + "id": 13239, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13214, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "85:24:53" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 13216, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 13239, + "sourceUnit": 4368, + "src": "111:70:53", + "symbolAliases": [ + { + "foreign": { + "id": 13215, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4367, + "src": "120:5:53", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 13217, + "name": "ERC20", + "nameLocations": [ + "203:5:53" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4367, + "src": "203:5:53" + }, + "id": 13218, + "nodeType": "InheritanceSpecifier", + "src": "203:5:53" + } + ], + "canonicalName": "NullUSD", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 13238, + "linearizedBaseContracts": [ + 13238, + 4367, + 3370, + 4471, + 4445, + 5275 + ], + "name": "NullUSD", + "nameLocation": "192:7:53", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 13236, + "nodeType": "Block", + "src": "254:62:53", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13226, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "270:3:53", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "274:6:53", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "270:10:53", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31303030303030", + "id": 13228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "282:7:53", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 13229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "292:2:53", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13230, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3931, + "src": "298:8:53", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$", + "typeString": "function () view returns (uint8)" + } + }, + "id": 13231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "298:10:53", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "292:16:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "282:26:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13225, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "264:5:53", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 13234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "264:45:53", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13235, + "nodeType": "ExpressionStatement", + "src": "264:45:53" + } + ] + }, + "id": 13237, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4e756c6c555344", + "id": 13221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "235:9:53", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f2ee2cacf70906ed938e3b3ff6c78c261bd0c34ee8b771a36c13f0e1d1ebf4ca", + "typeString": "literal_string \"NullUSD\"" + }, + "value": "NullUSD" + }, + { + "hexValue": "4e555344", + "id": 13222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "246:6:53", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_650b666f55ad817de46e6c6c87861d8deaadefa05697861f467f8d066c7b63cc", + "typeString": "literal_string \"NUSD\"" + }, + "value": "NUSD" + } + ], + "id": 13223, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 13220, + "name": "ERC20", + "nameLocations": [ + "229:5:53" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4367, + "src": "229:5:53" + }, + "nodeType": "ModifierInvocation", + "src": "229:24:53" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13219, + "nodeType": "ParameterList", + "parameters": [], + "src": "226:2:53" + }, + "returnParameters": { + "id": 13224, + "nodeType": "ParameterList", + "parameters": [], + "src": "254:0:53" + }, + "scope": 13238, + "src": "215:101:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 13239, + "src": "183:135:53", + "usedErrors": [ + 3340, + 3345, + 3350, + 3359, + 3364, + 3369 + ], + "usedEvents": [ + 4379, + 4388 + ] + } + ], + "src": "85:234:53" + }, + "id": 53 + }, + "contracts/utils/KYCUtils.sol": { + "ast": { + "absolutePath": "contracts/utils/KYCUtils.sol", + "exportedSymbols": { + "ICaminoAdmin": [ + 13248 + ], + "KYCUtils": [ + 13420 + ] + }, + "id": 13421, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13240, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "67:24:54" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICaminoAdmin", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 13248, + "linearizedBaseContracts": [ + 13248 + ], + "name": "ICaminoAdmin", + "nameLocation": "103:12:54", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "bb03fa1d", + "id": 13247, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getKycState", + "nameLocation": "131:11:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13242, + "mutability": "mutable", + "name": "account", + "nameLocation": "151:7:54", + "nodeType": "VariableDeclaration", + "scope": 13247, + "src": "143:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "143:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "142:17:54" + }, + "returnParameters": { + "id": 13246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13245, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13247, + "src": "183:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "183:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "182:9:54" + }, + "scope": 13248, + "src": "122:70:54", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 13421, + "src": "93:101:54", + "usedErrors": [], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "KYCUtils", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 13420, + "linearizedBaseContracts": [ + 13420 + ], + "name": "KYCUtils", + "nameLocation": "204:8:54", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 13249, + "nodeType": "StructuredDocumentation", + "src": "219:49:54", + "text": " @notice Admin contract address" + }, + "functionSelector": "b11569f5", + "id": 13252, + "mutability": "constant", + "name": "ADMIN_ADDR", + "nameLocation": "297:10:54", + "nodeType": "VariableDeclaration", + "scope": 13420, + "src": "273:79:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13250, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "273:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307830313030303030303030303030303030303030303030303030303030303030303030303030303061", + "id": 13251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "310:42:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x010000000000000000000000000000000000000a" + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 13253, + "nodeType": "StructuredDocumentation", + "src": "359:43:54", + "text": " Constants for KYC states" + }, + "functionSelector": "517103bf", + "id": 13258, + "mutability": "constant", + "name": "KYC_VERIFIED", + "nameLocation": "431:12:54", + "nodeType": "VariableDeclaration", + "scope": 13420, + "src": "407:45:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "407:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "id": 13257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 13255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "446:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "30", + "id": 13256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "451:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "446:6:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "97041685", + "id": 13263, + "mutability": "constant", + "name": "KYC_EXPIRED", + "nameLocation": "491:11:54", + "nodeType": "VariableDeclaration", + "scope": 13420, + "src": "467:44:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "467:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "id": 13262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 13260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "505:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "31", + "id": 13261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "510:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "505:6:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a58a021e", + "id": 13268, + "mutability": "constant", + "name": "KYB_VERIFIED", + "nameLocation": "550:12:54", + "nodeType": "VariableDeclaration", + "scope": 13420, + "src": "526:45:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "526:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 13267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 13265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "565:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 13266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "570:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "565:6:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "visibility": "public" + }, + { + "documentation": { + "id": 13269, + "nodeType": "StructuredDocumentation", + "src": "587:25:54", + "text": " Errors" + }, + "errorSelector": "77fc41bb", + "id": 13273, + "name": "NotKYCVerified", + "nameLocation": "623:14:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13271, + "mutability": "mutable", + "name": "account", + "nameLocation": "646:7:54", + "nodeType": "VariableDeclaration", + "scope": 13273, + "src": "638:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "638:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "637:17:54" + }, + "src": "617:38:54" + }, + { + "errorSelector": "6c32e807", + "id": 13277, + "name": "NotKYBVerified", + "nameLocation": "666:14:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13275, + "mutability": "mutable", + "name": "account", + "nameLocation": "689:7:54", + "nodeType": "VariableDeclaration", + "scope": 13277, + "src": "681:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "681:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "680:17:54" + }, + "src": "660:38:54" + }, + { + "errorSelector": "b12c8f91", + "id": 13281, + "name": "NotVerified", + "nameLocation": "709:11:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13279, + "mutability": "mutable", + "name": "account", + "nameLocation": "729:7:54", + "nodeType": "VariableDeclaration", + "scope": 13281, + "src": "721:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "721:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "720:17:54" + }, + "src": "703:35:54" + }, + { + "body": { + "id": 13296, + "nodeType": "Block", + "src": "939:69:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13293, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13284, + "src": "993:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 13290, + "name": "ADMIN_ADDR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13252, + "src": "969:10:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13289, + "name": "ICaminoAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13248, + "src": "956:12:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICaminoAdmin_$13248_$", + "typeString": "type(contract ICaminoAdmin)" + } + }, + "id": 13291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "956:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICaminoAdmin_$13248", + "typeString": "contract ICaminoAdmin" + } + }, + "id": 13292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "981:11:54", + "memberName": "getKycState", + "nodeType": "MemberAccess", + "referencedDeclaration": 13247, + "src": "956:36:54", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 13294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "956:45:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13288, + "id": 13295, + "nodeType": "Return", + "src": "949:52:54" + } + ] + }, + "documentation": { + "id": 13282, + "nodeType": "StructuredDocumentation", + "src": "744:120:54", + "text": " @dev Returns KYC state from the CaminoAdmin contract\n @param account address to check the state" + }, + "id": 13297, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getKYCState", + "nameLocation": "878:11:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13284, + "mutability": "mutable", + "name": "account", + "nameLocation": "898:7:54", + "nodeType": "VariableDeclaration", + "scope": 13297, + "src": "890:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "890:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "889:17:54" + }, + "returnParameters": { + "id": 13288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13287, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13297, + "src": "930:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "930:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "929:9:54" + }, + "scope": 13420, + "src": "869:139:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13317, + "nodeType": "Block", + "src": "1204:101:54", + "statements": [ + { + "assignments": [ + 13306 + ], + "declarations": [ + { + "constant": false, + "id": 13306, + "mutability": "mutable", + "name": "kycState", + "nameLocation": "1222:8:54", + "nodeType": "VariableDeclaration", + "scope": 13317, + "src": "1214:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1214:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13310, + "initialValue": { + "arguments": [ + { + "id": 13308, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13300, + "src": "1245:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13307, + "name": "getKYCState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13297, + "src": "1233:11:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 13309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1233:20:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1214:39:54" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13311, + "name": "kycState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13306, + "src": "1270:8:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 13312, + "name": "KYC_VERIFIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13258, + "src": "1281:12:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1270:23:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 13314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1297:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1270:28:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13304, + "id": 13316, + "nodeType": "Return", + "src": "1263:35:54" + } + ] + }, + "documentation": { + "id": 13298, + "nodeType": "StructuredDocumentation", + "src": "1014:116:54", + "text": " @dev Returns true if the address is KYC verified\n @param account address to check the state" + }, + "id": 13318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isKYCVerified", + "nameLocation": "1144:13:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13300, + "mutability": "mutable", + "name": "account", + "nameLocation": "1166:7:54", + "nodeType": "VariableDeclaration", + "scope": 13318, + "src": "1158:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13299, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1158:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1157:17:54" + }, + "returnParameters": { + "id": 13304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13318, + "src": "1198:4:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13302, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1197:6:54" + }, + "scope": 13420, + "src": "1135:170:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13338, + "nodeType": "Block", + "src": "1501:101:54", + "statements": [ + { + "assignments": [ + 13327 + ], + "declarations": [ + { + "constant": false, + "id": 13327, + "mutability": "mutable", + "name": "kycState", + "nameLocation": "1519:8:54", + "nodeType": "VariableDeclaration", + "scope": 13338, + "src": "1511:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1511:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13331, + "initialValue": { + "arguments": [ + { + "id": 13329, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13321, + "src": "1542:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13328, + "name": "getKYCState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13297, + "src": "1530:11:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 13330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1530:20:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1511:39:54" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13332, + "name": "kycState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13327, + "src": "1567:8:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 13333, + "name": "KYB_VERIFIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13268, + "src": "1578:12:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1567:23:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 13335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1594:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1567:28:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13325, + "id": 13337, + "nodeType": "Return", + "src": "1560:35:54" + } + ] + }, + "documentation": { + "id": 13319, + "nodeType": "StructuredDocumentation", + "src": "1311:116:54", + "text": " @dev Returns true if the address is KYB verified\n @param account address to check the state" + }, + "id": 13339, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isKYBVerified", + "nameLocation": "1441:13:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13321, + "mutability": "mutable", + "name": "account", + "nameLocation": "1463:7:54", + "nodeType": "VariableDeclaration", + "scope": 13339, + "src": "1455:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1455:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1454:17:54" + }, + "returnParameters": { + "id": 13325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13324, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13339, + "src": "1495:4:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13323, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1495:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1494:6:54" + }, + "scope": 13420, + "src": "1432:170:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13367, + "nodeType": "Block", + "src": "1802:137:54", + "statements": [ + { + "assignments": [ + 13348 + ], + "declarations": [ + { + "constant": false, + "id": 13348, + "mutability": "mutable", + "name": "kycState", + "nameLocation": "1820:8:54", + "nodeType": "VariableDeclaration", + "scope": 13367, + "src": "1812:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1812:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13352, + "initialValue": { + "arguments": [ + { + "id": 13350, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13342, + "src": "1843:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13349, + "name": "getKYCState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13297, + "src": "1831:11:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 13351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1831:20:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1812:39:54" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13353, + "name": "kycState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13348, + "src": "1869:8:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 13354, + "name": "KYC_VERIFIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13258, + "src": "1880:12:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1869:23:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 13356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1896:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1869:28:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 13358, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1868:30:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13359, + "name": "kycState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13348, + "src": "1903:8:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 13360, + "name": "KYB_VERIFIED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13268, + "src": "1914:12:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1903:23:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 13362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1930:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1903:28:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 13364, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1902:30:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1868:64:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13346, + "id": 13366, + "nodeType": "Return", + "src": "1861:71:54" + } + ] + }, + "documentation": { + "id": 13340, + "nodeType": "StructuredDocumentation", + "src": "1608:123:54", + "text": " @dev Returns true if the address is KYC or KYB verified\n @param account address to check the state" + }, + "id": 13368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isVerified", + "nameLocation": "1745:10:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13342, + "mutability": "mutable", + "name": "account", + "nameLocation": "1764:7:54", + "nodeType": "VariableDeclaration", + "scope": 13368, + "src": "1756:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1755:17:54" + }, + "returnParameters": { + "id": 13346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13345, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13368, + "src": "1796:4:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13344, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1796:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1795:6:54" + }, + "scope": 13420, + "src": "1736:203:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13384, + "nodeType": "Block", + "src": "2156:100:54", + "statements": [ + { + "condition": { + "id": 13377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2170:23:54", + "subExpression": { + "arguments": [ + { + "id": 13375, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13371, + "src": "2185:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13374, + "name": "isKYCVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13318, + "src": "2171:13:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 13376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2171:22:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13383, + "nodeType": "IfStatement", + "src": "2166:84:54", + "trueBody": { + "id": 13382, + "nodeType": "Block", + "src": "2195:55:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13379, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13371, + "src": "2231:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13378, + "name": "NotKYCVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13273, + "src": "2216:14:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 13380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2216:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13381, + "nodeType": "RevertStatement", + "src": "2209:30:54" + } + ] + } + } + ] + }, + "documentation": { + "id": 13369, + "nodeType": "StructuredDocumentation", + "src": "1945:147:54", + "text": " @dev Reverts with `NotKYCVerified(account)` if the account is not KYC verified.\n @param account address to check the state" + }, + "id": 13385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireKYCVerified", + "nameLocation": "2106:18:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13371, + "mutability": "mutable", + "name": "account", + "nameLocation": "2133:7:54", + "nodeType": "VariableDeclaration", + "scope": 13385, + "src": "2125:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2125:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2124:17:54" + }, + "returnParameters": { + "id": 13373, + "nodeType": "ParameterList", + "parameters": [], + "src": "2156:0:54" + }, + "scope": 13420, + "src": "2097:159:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13401, + "nodeType": "Block", + "src": "2473:100:54", + "statements": [ + { + "condition": { + "id": 13394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2487:23:54", + "subExpression": { + "arguments": [ + { + "id": 13392, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13388, + "src": "2502:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13391, + "name": "isKYBVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13339, + "src": "2488:13:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 13393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2488:22:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13400, + "nodeType": "IfStatement", + "src": "2483:84:54", + "trueBody": { + "id": 13399, + "nodeType": "Block", + "src": "2512:55:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13396, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13388, + "src": "2548:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13395, + "name": "NotKYBVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13277, + "src": "2533:14:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 13397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2533:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13398, + "nodeType": "RevertStatement", + "src": "2526:30:54" + } + ] + } + } + ] + }, + "documentation": { + "id": 13386, + "nodeType": "StructuredDocumentation", + "src": "2262:147:54", + "text": " @dev Reverts with `NotKYBVerified(account)` if the account is not KYB verified.\n @param account address to check the state" + }, + "id": 13402, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireKYBVerified", + "nameLocation": "2423:18:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13388, + "mutability": "mutable", + "name": "account", + "nameLocation": "2450:7:54", + "nodeType": "VariableDeclaration", + "scope": 13402, + "src": "2442:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2442:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2441:17:54" + }, + "returnParameters": { + "id": 13390, + "nodeType": "ParameterList", + "parameters": [], + "src": "2473:0:54" + }, + "scope": 13420, + "src": "2414:159:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13418, + "nodeType": "Block", + "src": "2791:94:54", + "statements": [ + { + "condition": { + "id": 13411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2805:20:54", + "subExpression": { + "arguments": [ + { + "id": 13409, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13405, + "src": "2817:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13408, + "name": "isVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13368, + "src": "2806:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 13410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2806:19:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13417, + "nodeType": "IfStatement", + "src": "2801:78:54", + "trueBody": { + "id": 13416, + "nodeType": "Block", + "src": "2827:52:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13413, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13405, + "src": "2860:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13412, + "name": "NotVerified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13281, + "src": "2848:11:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 13414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2848:20:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13415, + "nodeType": "RevertStatement", + "src": "2841:27:54" + } + ] + } + } + ] + }, + "documentation": { + "id": 13403, + "nodeType": "StructuredDocumentation", + "src": "2579:151:54", + "text": " @dev Reverts with `NotVerified(account)` if the account is not KYC or KYB verified.\n @param account address to check the state" + }, + "id": 13419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireVerified", + "nameLocation": "2744:15:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13405, + "mutability": "mutable", + "name": "account", + "nameLocation": "2768:7:54", + "nodeType": "VariableDeclaration", + "scope": 13419, + "src": "2760:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2760:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2759:17:54" + }, + "returnParameters": { + "id": 13407, + "nodeType": "ParameterList", + "parameters": [], + "src": "2791:0:54" + }, + "scope": 13420, + "src": "2735:150:54", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 13421, + "src": "196:2691:54", + "usedErrors": [ + 13273, + 13277, + 13281 + ], + "usedEvents": [] + } + ], + "src": "67:2821:54" + }, + "id": 54 + } + }, + "contracts": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "AccessControlUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "AccessControlEnumerableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows enumerating the members of each role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":\"AccessControlEnumerableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "Initializable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "UUPSUpgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "proxiableUUID()": "52d1902d", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "ERC721Upgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "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": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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": [], + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":[],\"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\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":\"ERC721Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f\",\"dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "ERC721EnumerableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "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": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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": [], + "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": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "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": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":[],\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account. CAUTION: `ERC721` extensions that implement custom `balanceOf` logic, such as `ERC721Consecutive`, interfere with enumerability and should not be used together with `ERC721Enumerable`.\",\"errors\":{\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":\"ERC721EnumerableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f\",\"dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":{\"keccak256\":\"0xe3c0b8baf1c6c26bd7944f5c7e71d0e902cbd1a90509f093524c289b89ad5344\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9b136fb95c70aa8bce31e2fbaea664bd44afc305b8b75547d90944c89f2acc4\",\"dweb:/ipfs/QmRZbDHHu8obmna5Aj8iP2xNC4xC3p2RtdhpsYiJ8Bbm3M\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "ERC721URIStorageUpgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "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": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "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": [], + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"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\":[],\"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\"}],\"devdoc\":{\"details\":\"ERC721 token with storage based token URI management.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":\"ERC721URIStorageUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f\",\"dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0x7e68925d3373bd2baa7ac36839c464b2e77b67764201c4e0196d62699ee220b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0896e7ff605a131ca982da1175d798c19588852dc74329f5c3675ac76cb80ff\",\"dweb:/ipfs/QmdePp3XmXaKz4A9qqj6enFuqERWvJoN4uRmFzu2cwLPX8\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd\",\"dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ContextUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "PausableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ReentrancyGuardUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ERC165Upgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "IAccessControl": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "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" + }, + { + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "IAccessControlEnumerable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "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" + }, + { + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\"}],\"devdoc\":{\"details\":\"External interface of AccessControlEnumerable declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":\"IAccessControlEnumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "IERC4906": { + "abi": [ + { + "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": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"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\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"EIP-721 Metadata Update Extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4906.sol\":\"IERC4906\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd\",\"dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "IERC1822Proxiable": { + "abi": [ + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "proxiableUUID()": "52d1902d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "IERC1155Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + }, + "IERC20Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + }, + "IERC721Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ERC1967Proxy": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_3490": { + "entryPoint": null, + "id": 3490, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkNonPayable_3805": { + "entryPoint": 384, + "id": 3805, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5244": { + "entryPoint": 503, + "id": 5244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3591": { + "entryPoint": 146, + "id": 3591, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionDelegateCall_5164": { + "entryPoint": 265, + "id": 5164, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@upgradeToAndCall_3625": { + "entryPoint": 51, + "id": 3625, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_5204": { + "entryPoint": 417, + "id": 5204, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": { + "entryPoint": 602, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 828, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 808, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 566, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 544, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:1966:55", + "nodeType": "YulBlock", + "src": "0:1966:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "46:95:55", + "nodeType": "YulBlock", + "src": "46:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63:1:55", + "nodeType": "YulLiteral", + "src": "63:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "70:3:55", + "nodeType": "YulLiteral", + "src": "70:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "75:10:55", + "nodeType": "YulLiteral", + "src": "75:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "66:3:55", + "nodeType": "YulIdentifier", + "src": "66:3:55" + }, + "nativeSrc": "66:20:55", + "nodeType": "YulFunctionCall", + "src": "66:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56:6:55", + "nodeType": "YulIdentifier", + "src": "56:6:55" + }, + "nativeSrc": "56:31:55", + "nodeType": "YulFunctionCall", + "src": "56:31:55" + }, + "nativeSrc": "56:31:55", + "nodeType": "YulExpressionStatement", + "src": "56:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "103:1:55", + "nodeType": "YulLiteral", + "src": "103:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "106:4:55", + "nodeType": "YulLiteral", + "src": "106:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96:6:55", + "nodeType": "YulIdentifier", + "src": "96:6:55" + }, + "nativeSrc": "96:15:55", + "nodeType": "YulFunctionCall", + "src": "96:15:55" + }, + "nativeSrc": "96:15:55", + "nodeType": "YulExpressionStatement", + "src": "96:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "127:1:55", + "nodeType": "YulLiteral", + "src": "127:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "130:4:55", + "nodeType": "YulLiteral", + "src": "130:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "120:6:55", + "nodeType": "YulIdentifier", + "src": "120:6:55" + }, + "nativeSrc": "120:15:55", + "nodeType": "YulFunctionCall", + "src": "120:15:55" + }, + "nativeSrc": "120:15:55", + "nodeType": "YulExpressionStatement", + "src": "120:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "14:127:55", + "nodeType": "YulFunctionDefinition", + "src": "14:127:55" + }, + { + "body": { + "nativeSrc": "212:184:55", + "nodeType": "YulBlock", + "src": "212:184:55", + "statements": [ + { + "nativeSrc": "222:10:55", + "nodeType": "YulVariableDeclaration", + "src": "222:10:55", + "value": { + "kind": "number", + "nativeSrc": "231:1:55", + "nodeType": "YulLiteral", + "src": "231:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "226:1:55", + "nodeType": "YulTypedName", + "src": "226:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "291:63:55", + "nodeType": "YulBlock", + "src": "291:63:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "316:3:55", + "nodeType": "YulIdentifier", + "src": "316:3:55" + }, + { + "name": "i", + "nativeSrc": "321:1:55", + "nodeType": "YulIdentifier", + "src": "321:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "312:3:55", + "nodeType": "YulIdentifier", + "src": "312:3:55" + }, + "nativeSrc": "312:11:55", + "nodeType": "YulFunctionCall", + "src": "312:11:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "335:3:55", + "nodeType": "YulIdentifier", + "src": "335:3:55" + }, + { + "name": "i", + "nativeSrc": "340:1:55", + "nodeType": "YulIdentifier", + "src": "340:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "331:3:55", + "nodeType": "YulIdentifier", + "src": "331:3:55" + }, + "nativeSrc": "331:11:55", + "nodeType": "YulFunctionCall", + "src": "331:11:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "325:5:55", + "nodeType": "YulIdentifier", + "src": "325:5:55" + }, + "nativeSrc": "325:18:55", + "nodeType": "YulFunctionCall", + "src": "325:18:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "305:6:55", + "nodeType": "YulIdentifier", + "src": "305:6:55" + }, + "nativeSrc": "305:39:55", + "nodeType": "YulFunctionCall", + "src": "305:39:55" + }, + "nativeSrc": "305:39:55", + "nodeType": "YulExpressionStatement", + "src": "305:39:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "252:1:55", + "nodeType": "YulIdentifier", + "src": "252:1:55" + }, + { + "name": "length", + "nativeSrc": "255:6:55", + "nodeType": "YulIdentifier", + "src": "255:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "249:2:55", + "nodeType": "YulIdentifier", + "src": "249:2:55" + }, + "nativeSrc": "249:13:55", + "nodeType": "YulFunctionCall", + "src": "249:13:55" + }, + "nativeSrc": "241:113:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "263:19:55", + "nodeType": "YulBlock", + "src": "263:19:55", + "statements": [ + { + "nativeSrc": "265:15:55", + "nodeType": "YulAssignment", + "src": "265:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "274:1:55", + "nodeType": "YulIdentifier", + "src": "274:1:55" + }, + { + "kind": "number", + "nativeSrc": "277:2:55", + "nodeType": "YulLiteral", + "src": "277:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "270:3:55", + "nodeType": "YulIdentifier", + "src": "270:3:55" + }, + "nativeSrc": "270:10:55", + "nodeType": "YulFunctionCall", + "src": "270:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "265:1:55", + "nodeType": "YulIdentifier", + "src": "265:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "245:3:55", + "nodeType": "YulBlock", + "src": "245:3:55", + "statements": [] + }, + "src": "241:113:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "374:3:55", + "nodeType": "YulIdentifier", + "src": "374:3:55" + }, + { + "name": "length", + "nativeSrc": "379:6:55", + "nodeType": "YulIdentifier", + "src": "379:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "370:3:55", + "nodeType": "YulIdentifier", + "src": "370:3:55" + }, + "nativeSrc": "370:16:55", + "nodeType": "YulFunctionCall", + "src": "370:16:55" + }, + { + "kind": "number", + "nativeSrc": "388:1:55", + "nodeType": "YulLiteral", + "src": "388:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "363:6:55", + "nodeType": "YulIdentifier", + "src": "363:6:55" + }, + "nativeSrc": "363:27:55", + "nodeType": "YulFunctionCall", + "src": "363:27:55" + }, + "nativeSrc": "363:27:55", + "nodeType": "YulExpressionStatement", + "src": "363:27:55" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "146:250:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "190:3:55", + "nodeType": "YulTypedName", + "src": "190:3:55", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "195:3:55", + "nodeType": "YulTypedName", + "src": "195:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "200:6:55", + "nodeType": "YulTypedName", + "src": "200:6:55", + "type": "" + } + ], + "src": "146:250:55" + }, + { + "body": { + "nativeSrc": "508:956:55", + "nodeType": "YulBlock", + "src": "508:956:55", + "statements": [ + { + "body": { + "nativeSrc": "554:16:55", + "nodeType": "YulBlock", + "src": "554:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "563:1:55", + "nodeType": "YulLiteral", + "src": "563:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "566:1:55", + "nodeType": "YulLiteral", + "src": "566:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "556:6:55", + "nodeType": "YulIdentifier", + "src": "556:6:55" + }, + "nativeSrc": "556:12:55", + "nodeType": "YulFunctionCall", + "src": "556:12:55" + }, + "nativeSrc": "556:12:55", + "nodeType": "YulExpressionStatement", + "src": "556:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "529:7:55", + "nodeType": "YulIdentifier", + "src": "529:7:55" + }, + { + "name": "headStart", + "nativeSrc": "538:9:55", + "nodeType": "YulIdentifier", + "src": "538:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "525:3:55", + "nodeType": "YulIdentifier", + "src": "525:3:55" + }, + "nativeSrc": "525:23:55", + "nodeType": "YulFunctionCall", + "src": "525:23:55" + }, + { + "kind": "number", + "nativeSrc": "550:2:55", + "nodeType": "YulLiteral", + "src": "550:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "521:3:55", + "nodeType": "YulIdentifier", + "src": "521:3:55" + }, + "nativeSrc": "521:32:55", + "nodeType": "YulFunctionCall", + "src": "521:32:55" + }, + "nativeSrc": "518:52:55", + "nodeType": "YulIf", + "src": "518:52:55" + }, + { + "nativeSrc": "579:29:55", + "nodeType": "YulVariableDeclaration", + "src": "579:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "598:9:55", + "nodeType": "YulIdentifier", + "src": "598:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "592:5:55", + "nodeType": "YulIdentifier", + "src": "592:5:55" + }, + "nativeSrc": "592:16:55", + "nodeType": "YulFunctionCall", + "src": "592:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "583:5:55", + "nodeType": "YulTypedName", + "src": "583:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "671:16:55", + "nodeType": "YulBlock", + "src": "671:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "680:1:55", + "nodeType": "YulLiteral", + "src": "680:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "683:1:55", + "nodeType": "YulLiteral", + "src": "683:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "673:6:55", + "nodeType": "YulIdentifier", + "src": "673:6:55" + }, + "nativeSrc": "673:12:55", + "nodeType": "YulFunctionCall", + "src": "673:12:55" + }, + "nativeSrc": "673:12:55", + "nodeType": "YulExpressionStatement", + "src": "673:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "630:5:55", + "nodeType": "YulIdentifier", + "src": "630:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "641:5:55", + "nodeType": "YulIdentifier", + "src": "641:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "656:3:55", + "nodeType": "YulLiteral", + "src": "656:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "661:1:55", + "nodeType": "YulLiteral", + "src": "661:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "652:3:55", + "nodeType": "YulIdentifier", + "src": "652:3:55" + }, + "nativeSrc": "652:11:55", + "nodeType": "YulFunctionCall", + "src": "652:11:55" + }, + { + "kind": "number", + "nativeSrc": "665:1:55", + "nodeType": "YulLiteral", + "src": "665:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "648:3:55", + "nodeType": "YulIdentifier", + "src": "648:3:55" + }, + "nativeSrc": "648:19:55", + "nodeType": "YulFunctionCall", + "src": "648:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "637:3:55", + "nodeType": "YulIdentifier", + "src": "637:3:55" + }, + "nativeSrc": "637:31:55", + "nodeType": "YulFunctionCall", + "src": "637:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "627:2:55", + "nodeType": "YulIdentifier", + "src": "627:2:55" + }, + "nativeSrc": "627:42:55", + "nodeType": "YulFunctionCall", + "src": "627:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "620:6:55", + "nodeType": "YulIdentifier", + "src": "620:6:55" + }, + "nativeSrc": "620:50:55", + "nodeType": "YulFunctionCall", + "src": "620:50:55" + }, + "nativeSrc": "617:70:55", + "nodeType": "YulIf", + "src": "617:70:55" + }, + { + "nativeSrc": "696:15:55", + "nodeType": "YulAssignment", + "src": "696:15:55", + "value": { + "name": "value", + "nativeSrc": "706:5:55", + "nodeType": "YulIdentifier", + "src": "706:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "696:6:55", + "nodeType": "YulIdentifier", + "src": "696:6:55" + } + ] + }, + { + "nativeSrc": "720:39:55", + "nodeType": "YulVariableDeclaration", + "src": "720:39:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "744:9:55", + "nodeType": "YulIdentifier", + "src": "744:9:55" + }, + { + "kind": "number", + "nativeSrc": "755:2:55", + "nodeType": "YulLiteral", + "src": "755:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "740:3:55", + "nodeType": "YulIdentifier", + "src": "740:3:55" + }, + "nativeSrc": "740:18:55", + "nodeType": "YulFunctionCall", + "src": "740:18:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "734:5:55", + "nodeType": "YulIdentifier", + "src": "734:5:55" + }, + "nativeSrc": "734:25:55", + "nodeType": "YulFunctionCall", + "src": "734:25:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "724:6:55", + "nodeType": "YulTypedName", + "src": "724:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "768:28:55", + "nodeType": "YulVariableDeclaration", + "src": "768:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "786:2:55", + "nodeType": "YulLiteral", + "src": "786:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "790:1:55", + "nodeType": "YulLiteral", + "src": "790:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "782:3:55", + "nodeType": "YulIdentifier", + "src": "782:3:55" + }, + "nativeSrc": "782:10:55", + "nodeType": "YulFunctionCall", + "src": "782:10:55" + }, + { + "kind": "number", + "nativeSrc": "794:1:55", + "nodeType": "YulLiteral", + "src": "794:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "778:3:55", + "nodeType": "YulIdentifier", + "src": "778:3:55" + }, + "nativeSrc": "778:18:55", + "nodeType": "YulFunctionCall", + "src": "778:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "772:2:55", + "nodeType": "YulTypedName", + "src": "772:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "823:16:55", + "nodeType": "YulBlock", + "src": "823:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "832:1:55", + "nodeType": "YulLiteral", + "src": "832:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "835:1:55", + "nodeType": "YulLiteral", + "src": "835:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "825:6:55", + "nodeType": "YulIdentifier", + "src": "825:6:55" + }, + "nativeSrc": "825:12:55", + "nodeType": "YulFunctionCall", + "src": "825:12:55" + }, + "nativeSrc": "825:12:55", + "nodeType": "YulExpressionStatement", + "src": "825:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "811:6:55", + "nodeType": "YulIdentifier", + "src": "811:6:55" + }, + { + "name": "_1", + "nativeSrc": "819:2:55", + "nodeType": "YulIdentifier", + "src": "819:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "808:2:55", + "nodeType": "YulIdentifier", + "src": "808:2:55" + }, + "nativeSrc": "808:14:55", + "nodeType": "YulFunctionCall", + "src": "808:14:55" + }, + "nativeSrc": "805:34:55", + "nodeType": "YulIf", + "src": "805:34:55" + }, + { + "nativeSrc": "848:32:55", + "nodeType": "YulVariableDeclaration", + "src": "848:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "862:9:55", + "nodeType": "YulIdentifier", + "src": "862:9:55" + }, + { + "name": "offset", + "nativeSrc": "873:6:55", + "nodeType": "YulIdentifier", + "src": "873:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "858:3:55", + "nodeType": "YulIdentifier", + "src": "858:3:55" + }, + "nativeSrc": "858:22:55", + "nodeType": "YulFunctionCall", + "src": "858:22:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "852:2:55", + "nodeType": "YulTypedName", + "src": "852:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "928:16:55", + "nodeType": "YulBlock", + "src": "928:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "937:1:55", + "nodeType": "YulLiteral", + "src": "937:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "940:1:55", + "nodeType": "YulLiteral", + "src": "940:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "930:6:55", + "nodeType": "YulIdentifier", + "src": "930:6:55" + }, + "nativeSrc": "930:12:55", + "nodeType": "YulFunctionCall", + "src": "930:12:55" + }, + "nativeSrc": "930:12:55", + "nodeType": "YulExpressionStatement", + "src": "930:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "907:2:55", + "nodeType": "YulIdentifier", + "src": "907:2:55" + }, + { + "kind": "number", + "nativeSrc": "911:4:55", + "nodeType": "YulLiteral", + "src": "911:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "903:3:55", + "nodeType": "YulIdentifier", + "src": "903:3:55" + }, + "nativeSrc": "903:13:55", + "nodeType": "YulFunctionCall", + "src": "903:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "918:7:55", + "nodeType": "YulIdentifier", + "src": "918:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "899:3:55", + "nodeType": "YulIdentifier", + "src": "899:3:55" + }, + "nativeSrc": "899:27:55", + "nodeType": "YulFunctionCall", + "src": "899:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "892:6:55", + "nodeType": "YulIdentifier", + "src": "892:6:55" + }, + "nativeSrc": "892:35:55", + "nodeType": "YulFunctionCall", + "src": "892:35:55" + }, + "nativeSrc": "889:55:55", + "nodeType": "YulIf", + "src": "889:55:55" + }, + { + "nativeSrc": "953:19:55", + "nodeType": "YulVariableDeclaration", + "src": "953:19:55", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "969:2:55", + "nodeType": "YulIdentifier", + "src": "969:2:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "963:5:55", + "nodeType": "YulIdentifier", + "src": "963:5:55" + }, + "nativeSrc": "963:9:55", + "nodeType": "YulFunctionCall", + "src": "963:9:55" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "957:2:55", + "nodeType": "YulTypedName", + "src": "957:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "995:22:55", + "nodeType": "YulBlock", + "src": "995:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "997:16:55", + "nodeType": "YulIdentifier", + "src": "997:16:55" + }, + "nativeSrc": "997:18:55", + "nodeType": "YulFunctionCall", + "src": "997:18:55" + }, + "nativeSrc": "997:18:55", + "nodeType": "YulExpressionStatement", + "src": "997:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "987:2:55", + "nodeType": "YulIdentifier", + "src": "987:2:55" + }, + { + "name": "_1", + "nativeSrc": "991:2:55", + "nodeType": "YulIdentifier", + "src": "991:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "984:2:55", + "nodeType": "YulIdentifier", + "src": "984:2:55" + }, + "nativeSrc": "984:10:55", + "nodeType": "YulFunctionCall", + "src": "984:10:55" + }, + "nativeSrc": "981:36:55", + "nodeType": "YulIf", + "src": "981:36:55" + }, + { + "nativeSrc": "1026:17:55", + "nodeType": "YulVariableDeclaration", + "src": "1026:17:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1040:2:55", + "nodeType": "YulLiteral", + "src": "1040:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1036:3:55", + "nodeType": "YulIdentifier", + "src": "1036:3:55" + }, + "nativeSrc": "1036:7:55", + "nodeType": "YulFunctionCall", + "src": "1036:7:55" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "1030:2:55", + "nodeType": "YulTypedName", + "src": "1030:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1052:23:55", + "nodeType": "YulVariableDeclaration", + "src": "1052:23:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1072:2:55", + "nodeType": "YulLiteral", + "src": "1072:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1066:5:55", + "nodeType": "YulIdentifier", + "src": "1066:5:55" + }, + "nativeSrc": "1066:9:55", + "nodeType": "YulFunctionCall", + "src": "1066:9:55" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1056:6:55", + "nodeType": "YulTypedName", + "src": "1056:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1084:71:55", + "nodeType": "YulVariableDeclaration", + "src": "1084:71:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1106:6:55", + "nodeType": "YulIdentifier", + "src": "1106:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1130:2:55", + "nodeType": "YulIdentifier", + "src": "1130:2:55" + }, + { + "kind": "number", + "nativeSrc": "1134:4:55", + "nodeType": "YulLiteral", + "src": "1134:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1126:3:55", + "nodeType": "YulIdentifier", + "src": "1126:3:55" + }, + "nativeSrc": "1126:13:55", + "nodeType": "YulFunctionCall", + "src": "1126:13:55" + }, + { + "name": "_4", + "nativeSrc": "1141:2:55", + "nodeType": "YulIdentifier", + "src": "1141:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1122:3:55", + "nodeType": "YulIdentifier", + "src": "1122:3:55" + }, + "nativeSrc": "1122:22:55", + "nodeType": "YulFunctionCall", + "src": "1122:22:55" + }, + { + "kind": "number", + "nativeSrc": "1146:2:55", + "nodeType": "YulLiteral", + "src": "1146:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1118:3:55", + "nodeType": "YulIdentifier", + "src": "1118:3:55" + }, + "nativeSrc": "1118:31:55", + "nodeType": "YulFunctionCall", + "src": "1118:31:55" + }, + { + "name": "_4", + "nativeSrc": "1151:2:55", + "nodeType": "YulIdentifier", + "src": "1151:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1114:3:55", + "nodeType": "YulIdentifier", + "src": "1114:3:55" + }, + "nativeSrc": "1114:40:55", + "nodeType": "YulFunctionCall", + "src": "1114:40:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1102:3:55", + "nodeType": "YulIdentifier", + "src": "1102:3:55" + }, + "nativeSrc": "1102:53:55", + "nodeType": "YulFunctionCall", + "src": "1102:53:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1088:10:55", + "nodeType": "YulTypedName", + "src": "1088:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1214:22:55", + "nodeType": "YulBlock", + "src": "1214:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1216:16:55", + "nodeType": "YulIdentifier", + "src": "1216:16:55" + }, + "nativeSrc": "1216:18:55", + "nodeType": "YulFunctionCall", + "src": "1216:18:55" + }, + "nativeSrc": "1216:18:55", + "nodeType": "YulExpressionStatement", + "src": "1216:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1173:10:55", + "nodeType": "YulIdentifier", + "src": "1173:10:55" + }, + { + "name": "_1", + "nativeSrc": "1185:2:55", + "nodeType": "YulIdentifier", + "src": "1185:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1170:2:55", + "nodeType": "YulIdentifier", + "src": "1170:2:55" + }, + "nativeSrc": "1170:18:55", + "nodeType": "YulFunctionCall", + "src": "1170:18:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1193:10:55", + "nodeType": "YulIdentifier", + "src": "1193:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "1205:6:55", + "nodeType": "YulIdentifier", + "src": "1205:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1190:2:55", + "nodeType": "YulIdentifier", + "src": "1190:2:55" + }, + "nativeSrc": "1190:22:55", + "nodeType": "YulFunctionCall", + "src": "1190:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1167:2:55", + "nodeType": "YulIdentifier", + "src": "1167:2:55" + }, + "nativeSrc": "1167:46:55", + "nodeType": "YulFunctionCall", + "src": "1167:46:55" + }, + "nativeSrc": "1164:72:55", + "nodeType": "YulIf", + "src": "1164:72:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1252:2:55", + "nodeType": "YulLiteral", + "src": "1252:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1256:10:55", + "nodeType": "YulIdentifier", + "src": "1256:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1245:6:55", + "nodeType": "YulIdentifier", + "src": "1245:6:55" + }, + "nativeSrc": "1245:22:55", + "nodeType": "YulFunctionCall", + "src": "1245:22:55" + }, + "nativeSrc": "1245:22:55", + "nodeType": "YulExpressionStatement", + "src": "1245:22:55" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1283:6:55", + "nodeType": "YulIdentifier", + "src": "1283:6:55" + }, + { + "name": "_3", + "nativeSrc": "1291:2:55", + "nodeType": "YulIdentifier", + "src": "1291:2:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1276:6:55", + "nodeType": "YulIdentifier", + "src": "1276:6:55" + }, + "nativeSrc": "1276:18:55", + "nodeType": "YulFunctionCall", + "src": "1276:18:55" + }, + "nativeSrc": "1276:18:55", + "nodeType": "YulExpressionStatement", + "src": "1276:18:55" + }, + { + "body": { + "nativeSrc": "1340:16:55", + "nodeType": "YulBlock", + "src": "1340:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1349:1:55", + "nodeType": "YulLiteral", + "src": "1349:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1352:1:55", + "nodeType": "YulLiteral", + "src": "1352:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1342:6:55", + "nodeType": "YulIdentifier", + "src": "1342:6:55" + }, + "nativeSrc": "1342:12:55", + "nodeType": "YulFunctionCall", + "src": "1342:12:55" + }, + "nativeSrc": "1342:12:55", + "nodeType": "YulExpressionStatement", + "src": "1342:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1317:2:55", + "nodeType": "YulIdentifier", + "src": "1317:2:55" + }, + { + "name": "_3", + "nativeSrc": "1321:2:55", + "nodeType": "YulIdentifier", + "src": "1321:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1313:3:55", + "nodeType": "YulIdentifier", + "src": "1313:3:55" + }, + "nativeSrc": "1313:11:55", + "nodeType": "YulFunctionCall", + "src": "1313:11:55" + }, + { + "kind": "number", + "nativeSrc": "1326:2:55", + "nodeType": "YulLiteral", + "src": "1326:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1309:3:55", + "nodeType": "YulIdentifier", + "src": "1309:3:55" + }, + "nativeSrc": "1309:20:55", + "nodeType": "YulFunctionCall", + "src": "1309:20:55" + }, + { + "name": "dataEnd", + "nativeSrc": "1331:7:55", + "nodeType": "YulIdentifier", + "src": "1331:7:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1306:2:55", + "nodeType": "YulIdentifier", + "src": "1306:2:55" + }, + "nativeSrc": "1306:33:55", + "nodeType": "YulFunctionCall", + "src": "1306:33:55" + }, + "nativeSrc": "1303:53:55", + "nodeType": "YulIf", + "src": "1303:53:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1404:2:55", + "nodeType": "YulIdentifier", + "src": "1404:2:55" + }, + { + "kind": "number", + "nativeSrc": "1408:2:55", + "nodeType": "YulLiteral", + "src": "1408:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1400:3:55", + "nodeType": "YulIdentifier", + "src": "1400:3:55" + }, + "nativeSrc": "1400:11:55", + "nodeType": "YulFunctionCall", + "src": "1400:11:55" + }, + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1417:6:55", + "nodeType": "YulIdentifier", + "src": "1417:6:55" + }, + { + "kind": "number", + "nativeSrc": "1425:2:55", + "nodeType": "YulLiteral", + "src": "1425:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1413:3:55", + "nodeType": "YulIdentifier", + "src": "1413:3:55" + }, + "nativeSrc": "1413:15:55", + "nodeType": "YulFunctionCall", + "src": "1413:15:55" + }, + { + "name": "_3", + "nativeSrc": "1430:2:55", + "nodeType": "YulIdentifier", + "src": "1430:2:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1365:34:55", + "nodeType": "YulIdentifier", + "src": "1365:34:55" + }, + "nativeSrc": "1365:68:55", + "nodeType": "YulFunctionCall", + "src": "1365:68:55" + }, + "nativeSrc": "1365:68:55", + "nodeType": "YulExpressionStatement", + "src": "1365:68:55" + }, + { + "nativeSrc": "1442:16:55", + "nodeType": "YulAssignment", + "src": "1442:16:55", + "value": { + "name": "memPtr", + "nativeSrc": "1452:6:55", + "nodeType": "YulIdentifier", + "src": "1452:6:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1442:6:55", + "nodeType": "YulIdentifier", + "src": "1442:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory", + "nativeSrc": "401:1063:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "466:9:55", + "nodeType": "YulTypedName", + "src": "466:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "477:7:55", + "nodeType": "YulTypedName", + "src": "477:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "489:6:55", + "nodeType": "YulTypedName", + "src": "489:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "497:6:55", + "nodeType": "YulTypedName", + "src": "497:6:55", + "type": "" + } + ], + "src": "401:1063:55" + }, + { + "body": { + "nativeSrc": "1570:102:55", + "nodeType": "YulBlock", + "src": "1570:102:55", + "statements": [ + { + "nativeSrc": "1580:26:55", + "nodeType": "YulAssignment", + "src": "1580:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1592:9:55", + "nodeType": "YulIdentifier", + "src": "1592:9:55" + }, + { + "kind": "number", + "nativeSrc": "1603:2:55", + "nodeType": "YulLiteral", + "src": "1603:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1588:3:55", + "nodeType": "YulIdentifier", + "src": "1588:3:55" + }, + "nativeSrc": "1588:18:55", + "nodeType": "YulFunctionCall", + "src": "1588:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1580:4:55", + "nodeType": "YulIdentifier", + "src": "1580:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1622:9:55", + "nodeType": "YulIdentifier", + "src": "1622:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1637:6:55", + "nodeType": "YulIdentifier", + "src": "1637:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1653:3:55", + "nodeType": "YulLiteral", + "src": "1653:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1658:1:55", + "nodeType": "YulLiteral", + "src": "1658:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1649:3:55", + "nodeType": "YulIdentifier", + "src": "1649:3:55" + }, + "nativeSrc": "1649:11:55", + "nodeType": "YulFunctionCall", + "src": "1649:11:55" + }, + { + "kind": "number", + "nativeSrc": "1662:1:55", + "nodeType": "YulLiteral", + "src": "1662:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1645:3:55", + "nodeType": "YulIdentifier", + "src": "1645:3:55" + }, + "nativeSrc": "1645:19:55", + "nodeType": "YulFunctionCall", + "src": "1645:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1633:3:55", + "nodeType": "YulIdentifier", + "src": "1633:3:55" + }, + "nativeSrc": "1633:32:55", + "nodeType": "YulFunctionCall", + "src": "1633:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1615:6:55", + "nodeType": "YulIdentifier", + "src": "1615:6:55" + }, + "nativeSrc": "1615:51:55", + "nodeType": "YulFunctionCall", + "src": "1615:51:55" + }, + "nativeSrc": "1615:51:55", + "nodeType": "YulExpressionStatement", + "src": "1615:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "1469:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1539:9:55", + "nodeType": "YulTypedName", + "src": "1539:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1550:6:55", + "nodeType": "YulTypedName", + "src": "1550:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1561:4:55", + "nodeType": "YulTypedName", + "src": "1561:4:55", + "type": "" + } + ], + "src": "1469:203:55" + }, + { + "body": { + "nativeSrc": "1814:150:55", + "nodeType": "YulBlock", + "src": "1814:150:55", + "statements": [ + { + "nativeSrc": "1824:27:55", + "nodeType": "YulVariableDeclaration", + "src": "1824:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1844:6:55", + "nodeType": "YulIdentifier", + "src": "1844:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1838:5:55", + "nodeType": "YulIdentifier", + "src": "1838:5:55" + }, + "nativeSrc": "1838:13:55", + "nodeType": "YulFunctionCall", + "src": "1838:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1828:6:55", + "nodeType": "YulTypedName", + "src": "1828:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1899:6:55", + "nodeType": "YulIdentifier", + "src": "1899:6:55" + }, + { + "kind": "number", + "nativeSrc": "1907:4:55", + "nodeType": "YulLiteral", + "src": "1907:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1895:3:55", + "nodeType": "YulIdentifier", + "src": "1895:3:55" + }, + "nativeSrc": "1895:17:55", + "nodeType": "YulFunctionCall", + "src": "1895:17:55" + }, + { + "name": "pos", + "nativeSrc": "1914:3:55", + "nodeType": "YulIdentifier", + "src": "1914:3:55" + }, + { + "name": "length", + "nativeSrc": "1919:6:55", + "nodeType": "YulIdentifier", + "src": "1919:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1860:34:55", + "nodeType": "YulIdentifier", + "src": "1860:34:55" + }, + "nativeSrc": "1860:66:55", + "nodeType": "YulFunctionCall", + "src": "1860:66:55" + }, + "nativeSrc": "1860:66:55", + "nodeType": "YulExpressionStatement", + "src": "1860:66:55" + }, + { + "nativeSrc": "1935:23:55", + "nodeType": "YulAssignment", + "src": "1935:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1946:3:55", + "nodeType": "YulIdentifier", + "src": "1946:3:55" + }, + { + "name": "length", + "nativeSrc": "1951:6:55", + "nodeType": "YulIdentifier", + "src": "1951:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1942:3:55", + "nodeType": "YulIdentifier", + "src": "1942:3:55" + }, + "nativeSrc": "1942:16:55", + "nodeType": "YulFunctionCall", + "src": "1942:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1935:3:55", + "nodeType": "YulIdentifier", + "src": "1935:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "1677:287:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1790:3:55", + "nodeType": "YulTypedName", + "src": "1790:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1795:6:55", + "nodeType": "YulTypedName", + "src": "1795:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1806:3:55", + "nodeType": "YulTypedName", + "src": "1806:3:55", + "type": "" + } + ], + "src": "1677:287:55" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "599:1116:18:-:0;;;1080:133;;;;;;;;;;;;;;;;;;:::i;:::-;1154:52;1184:14;1200:5;1154:29;:52::i;:::-;1080:133;;599:1116;;2779:335:19;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:19;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;:::-;;2779:335;;:::o;2960:148::-;3079:18;:16;:18::i;:::-;2779:335;;:::o;2186:281::-;2263:17;-1:-1:-1;;;;;2263:29:19;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:19;;;;;;;;:::i;:::-;;;;;;;;2259:119;1327:66;2387:73;;-1:-1:-1;;;;;;2387:73:19;-1:-1:-1;;;;;2387:73:19;;;;;;;;;;2186:281::o;4106:253:31:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:31;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4213:67:31;;-1:-1:-1;4213:67:31;-1:-1:-1;4297:55:31;4324:6;4213:67;;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:31:o;6598:122:19:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:19;;;;;;;;;;;6644:70;6598:122::o;4625:582:31:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:31;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:31;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:31;4793:408;4625:582;;;;;:::o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:31;;;;;;;;;;;14:127:55;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:55;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:55;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:55;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:55;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1469:203::-;-1:-1:-1;;;;;1633:32:55;;;;1615:51;;1603:2;1588:18;;1469:203::o;1677:287::-;1806:3;1844:6;1838:13;1860:66;1919:6;1914:3;1907:4;1899:6;1895:17;1860:66;:::i;:::-;1942:16;;;;;1677:287;-1:-1:-1;;1677:287:55:o;:::-;599:1116:18;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_3841": { + "entryPoint": null, + "id": 3841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_delegate_3817": { + "entryPoint": 81, + "id": 3817, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_fallback_3833": { + "entryPoint": 12, + "id": 3833, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_implementation_3502": { + "entryPoint": 26, + "id": 3502, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getImplementation_3564": { + "entryPoint": null, + "id": 3564, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "599:1116:18:-:0;;;2649:11:20;:9;:11::i;:::-;599:1116:18;2323:83:20;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1581:132:18:-;1648:7;1674:32;1327:66:19;2035:53;-1:-1:-1;;;;;2035:53:19;;1957:138;1674:32:18;1667:39;;1581:132;:::o;949:895:20:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ERC1967Utils": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "ERC1967InvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e4394a4ffe01967b9fd43a0b90dc6dfc06827b5923fc94ee2cb98884ecc76af64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E NUMBER SWAP5 LOG4 SELFDESTRUCT 0xE0 NOT PUSH8 0xB9FD43A0B90DC6DF 0xC0 PUSH9 0x27B5923FC94EE2CB98 DUP9 0x4E 0xCC PUSH23 0xAF64736F6C634300081800330000000000000000000000 ", + "sourceMap": "449:6273:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:6273:19;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e4394a4ffe01967b9fd43a0b90dc6dfc06827b5923fc94ee2cb98884ecc76af64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E NUMBER SWAP5 LOG4 SELFDESTRUCT 0xE0 NOT PUSH8 0xB9FD43A0B90DC6DF 0xC0 PUSH9 0x27B5923FC94EE2CB98 DUP9 0x4E 0xCC PUSH23 0xAF64736F6C634300081800330000000000000000000000 ", + "sourceMap": "449:6273:19:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "Proxy": { + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "IBeacon": { + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "implementation()": "5c60da1b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3875, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 3881, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 3883, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 3885, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 3887, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "IERC20Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "IERC20Permit": { + "abi": [ + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} doThing(..., value); } function doThing(..., uint256 value) public { token.safeTransferFrom(msg.sender, address(this), value); ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "SafeERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentAllowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestedDecrease", + "type": "uint256" + } + ], + "name": "SafeERC20FailedDecreaseAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c8f1a324f5ae3ae809027795c9a863ce70cc8a169e42709ba8d7588657961e64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC8 CALL LOG3 0x24 CREATE2 0xAE GASPRICE 0xE8 MULMOD MUL PUSH24 0x95C9A863CE70CC8A169E42709BA8D7588657961E64736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "751:5018:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;751:5018:26;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c8f1a324f5ae3ae809027795c9a863ce70cc8a169e42709ba8d7588657961e64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC8 CALL LOG3 0x24 CREATE2 0xAE GASPRICE 0xE8 MULMOD MUL PUSH24 0x95C9A863CE70CC8A169E42709BA8D7588657961E64736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "751:5018:26:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "IERC721": { + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"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\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "IERC721Receiver": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "IERC721Enumerable": { + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "IERC721Metadata": { + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "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": [], + "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": "owner", + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":[],\"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\":\"owner\",\"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\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Address.sol": { + "Address": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aab979471ae8e57e964a5ed1801c32d802d65814926295e14359abfe53ec3a2564736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xB9 PUSH26 0x471AE8E57E964A5ED1801C32D802D65814926295E14359ABFE53 0xEC GASPRICE 0x25 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "195:6066:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:31;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aab979471ae8e57e964a5ed1801c32d802d65814926295e14359abfe53ec3a2564736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xB9 PUSH26 0x471AE8E57E964A5ED1801C32D802D65814926295E14359ABFE53 0xEC GASPRICE 0x25 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "195:6066:31:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "StorageSlot": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122009d9b9688c5c2eb86f551c2713b2714a11b42983be2dad6c62df1214103f813364736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xD9 0xB9 PUSH9 0x8C5C2EB86F551C2713 0xB2 PUSH18 0x4A11B42983BE2DAD6C62DF1214103F813364 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "1245:2685:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1245:2685:33;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122009d9b9688c5c2eb86f551c2713b2714a11b42983be2dad6c62df1214103f813364736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xD9 0xB9 PUSH9 0x8C5C2EB86F551C2713 0xB2 PUSH18 0x4A11B42983BE2DAD6C62DF1214103F813364 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "1245:2685:33:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "Strings": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "StringsInsufficientHexLength", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eef66b47416dada620016a6920d0ecee64155b291d2dd65bd4db0861532dc25c64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE 0xF6 PUSH12 0x47416DADA620016A6920D0EC 0xEE PUSH5 0x155B291D2D 0xD6 JUMPDEST 0xD4 0xDB ADDMOD PUSH2 0x532D 0xC2 TLOAD PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "251:2847:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:34;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eef66b47416dada620016a6920d0ecee64155b291d2dd65bd4db0861532dc25c64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE 0xF6 PUSH12 0x47416DADA620016A6920D0EC 0xEE PUSH5 0x155B291D2D 0xD6 JUMPDEST 0xD4 0xDB ADDMOD PUSH2 0x532D 0xC2 TLOAD PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "251:2847:34:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ECDSA": { + "abi": [ + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7605399db2407f313155b8ebcbce21173f51352843dad8c3e140c306b809f464736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH23 0x5399DB2407F313155B8EBCBCE21173F51352843DAD8C3 0xE1 BLOCKHASH 0xC3 MOD 0xB8 MULMOD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "344:7386:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7386:35;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7605399db2407f313155b8ebcbce21173f51352843dad8c3e140c306b809f464736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH23 0x5399DB2407F313155B8EBCBCE21173F51352843DAD8C3 0xE1 BLOCKHASH 0xC3 MOD 0xB8 MULMOD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "344:7386:35:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "Math": { + "abi": [ + { + "inputs": [], + "name": "MathOverflowedMulDiv", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f3b5faaeab21f1aff43252ecf9e5da3554600bd3b4786c5dd39f75e9358cd84764736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xB5 STATICCALL 0xAE 0xAB 0x21 CALL 0xAF DELEGATECALL ORIGIN MSTORE 0xEC 0xF9 0xE5 0xDA CALLDATALOAD SLOAD PUSH1 0xB 0xD3 0xB4 PUSH25 0x6C5DD39F75E9358CD84764736F6C6343000818003300000000 ", + "sourceMap": "203:14914:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:37;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f3b5faaeab21f1aff43252ecf9e5da3554600bd3b4786c5dd39f75e9358cd84764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xB5 STATICCALL 0xAE 0xAB 0x21 CALL 0xAF DELEGATECALL ORIGIN MSTORE 0xEC 0xF9 0xE5 0xDA CALLDATALOAD SLOAD PUSH1 0xB 0xD3 0xB4 PUSH25 0x6C5DD39F75E9358CD84764736F6C6343000818003300000000 ", + "sourceMap": "203:14914:37:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "SignedMath": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d63ff950c9c2919d592dd7650607e208a3110998ed9ba2f4a0a8030abdad18e64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x63FF950C9C2919D592DD7650607E KECCAK256 DUP11 BALANCE LT SWAP10 DUP15 0xD9 0xBA 0x2F BLOBBASEFEE EXP DUP1 ADDRESS 0xAB 0xDA 0xD1 DUP15 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "216:1047:38:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:38;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d63ff950c9c2919d592dd7650607e208a3110998ed9ba2f4a0a8030abdad18e64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x63FF950C9C2919D592DD7650607E KECCAK256 DUP11 BALANCE LT SWAP10 DUP15 0xD9 0xBA 0x2F BLOBBASEFEE EXP DUP1 ADDRESS 0xAB 0xDA 0xD1 DUP15 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "216:1047:38:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "EnumerableSet": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b3165c3b30e891ceb60ee8f73d486489d33005a0ce16f83322685cd33d19b22764736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 AND TLOAD EXTCODESIZE ADDRESS 0xE8 SWAP2 0xCE 0xB6 0xE 0xE8 0xF7 RETURNDATASIZE BASEFEE PUSH5 0x89D33005A0 0xCE AND 0xF8 CALLER 0x22 PUSH9 0x5CD33D19B22764736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1330:11640:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1330:11640:39;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b3165c3b30e891ceb60ee8f73d486489d33005a0ce16f83322685cd33d19b22764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 AND TLOAD EXTCODESIZE ADDRESS 0xE8 SWAP2 0xCE 0xB6 0xE 0xE8 0xF7 RETURNDATASIZE BASEFEE PUSH5 0x89D33005A0 0xCE AND 0xF8 CALLER 0x22 PUSH9 0x5CD33D19B22764736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1330:11640:39:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/CMAccount.sol": { + "CMAccount": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "latestImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountNoUpgradeNeeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "DepositorNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawableAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "prefundLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PrefundNotSpentYet", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ZeroValueDeposit", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "developerFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ChequeVerified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "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": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BOOKING_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BOT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CHEQUE_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GAS_WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "gasMoney", + "type": "uint256" + } + ], + "name": "addMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "addPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "addService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "addServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "addSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "addWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "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": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service[]", + "name": "services", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "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": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "mintBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "removeMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "removeService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "removeServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "removeSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "removeWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "setGasMoneyWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isSupported", + "type": "bool" + } + ], + "name": "setOffChainPaymentSupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "setServiceCapabilities", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setServiceFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "setServiceRestrictedRate", + "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": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawGasMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_7964": { + "entryPoint": null, + "id": 7964, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_785": { + "entryPoint": 38, + "id": 785, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_816": { + "entryPoint": null, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:55", + "nodeType": "YulBlock", + "src": "0:216:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:55", + "nodeType": "YulBlock", + "src": "113:101:55", + "statements": [ + { + "nativeSrc": "123:26:55", + "nodeType": "YulAssignment", + "src": "123:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:55", + "nodeType": "YulIdentifier", + "src": "135:9:55" + }, + { + "kind": "number", + "nativeSrc": "146:2:55", + "nodeType": "YulLiteral", + "src": "146:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:55", + "nodeType": "YulIdentifier", + "src": "131:3:55" + }, + "nativeSrc": "131:18:55", + "nodeType": "YulFunctionCall", + "src": "131:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:55", + "nodeType": "YulIdentifier", + "src": "123:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:55", + "nodeType": "YulIdentifier", + "src": "165:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:55", + "nodeType": "YulIdentifier", + "src": "180:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:55", + "nodeType": "YulLiteral", + "src": "196:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:55", + "nodeType": "YulLiteral", + "src": "200:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:55", + "nodeType": "YulIdentifier", + "src": "192:3:55" + }, + "nativeSrc": "192:10:55", + "nodeType": "YulFunctionCall", + "src": "192:10:55" + }, + { + "kind": "number", + "nativeSrc": "204:1:55", + "nodeType": "YulLiteral", + "src": "204:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:55", + "nodeType": "YulIdentifier", + "src": "188:3:55" + }, + "nativeSrc": "188:18:55", + "nodeType": "YulFunctionCall", + "src": "188:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:55", + "nodeType": "YulIdentifier", + "src": "176:3:55" + }, + "nativeSrc": "176:31:55", + "nodeType": "YulFunctionCall", + "src": "176:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:55", + "nodeType": "YulIdentifier", + "src": "158:6:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulFunctionCall", + "src": "158:50:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulExpressionStatement", + "src": "158:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:55", + "nodeType": "YulTypedName", + "src": "82:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:55", + "nodeType": "YulTypedName", + "src": "93:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:55", + "nodeType": "YulTypedName", + "src": "104:4:55", + "type": "" + } + ], + "src": "14:200:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4747 + }, + { + "length": 20, + "start": 6032 + } + ] + } + }, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614f6662000104600039600081816128fc015281816129250152612c7b0152614f666000f3fe6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613ee7565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fbb565b3480156103b457600080fd5b506103ca600080516020614ed183398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613fce565b34801561040657600080fd5b506104256104153660046140ea565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614155565b610e48565b34801561046a57600080fd5b5061047e610479366004614189565b610e56565b005b34801561048c57600080fd5b5061047e61049b366004614268565b610f03565b3480156104ac57600080fd5b506103ca600080516020614ef183398151915281565b3480156104ce57600080fd5b506104e26104dd36600461429c565b610f64565b60405161037d929190614337565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614350565b611145565b34801561053157600080fd5b5061047e610540366004614350565b611165565b34801561055157600080fd5b5061047e610560366004614369565b611201565b34801561057157600080fd5b5061039b610580366004614155565b611223565b34801561059157600080fd5b506103ca600080516020614e9183398151915281565b3480156105b357600080fd5b5061047e6105c2366004614399565b611231565b3480156105d357600080fd5b5061047e6105e2366004614369565b6113ed565b3480156105f357600080fd5b506103ca600080516020614df183398151915281565b34801561061557600080fd5b5061047e610624366004614268565b611420565b34801561063557600080fd5b5061047e610644366004614401565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614453565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144c8565b6114e3565b61047e6106ac366004614536565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d9190614585565b3480156106df57600080fd5b5061047e6106ee366004614599565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145c5565b611672565b34801561073457600080fd5b5061047e610743366004614350565b6116fe565b34801561075457600080fd5b5061039b610763366004614350565b611739565b34801561077457600080fd5b506103ca600080516020614e1183398151915281565b34801561079657600080fd5b5061047e6107a536600461429c565b611841565b3480156107b657600080fd5b506107bf611a2a565b60405161037d92919061462e565b3480156107d957600080fd5b5061047e6107e836600461463c565b611a4c565b3480156107f957600080fd5b5061047e610808366004614659565b611a6d565b34801561081957600080fd5b5061047e61082836600461467b565b611a8f565b34801561083957600080fd5b5061047e61084836600461463c565b611ab9565b34801561085957600080fd5b50610862611ada565b60405161037d929190614752565b34801561087c57600080fd5b506103ca600080516020614f1183398151915281565b34801561089e57600080fd5b506108b26108ad36600461463c565b611c9f565b60405161037d91906147c4565b3480156108cb57600080fd5b506103ca600080516020614eb183398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461467b565b611d84565b34801561090d57600080fd5b5061037161091c366004614350565b611dae565b34801561092d57600080fd5b506106c661093c366004614659565b611ddf565b34801561094d57600080fd5b5061037161095c366004614369565b611e0d565b34801561096d57600080fd5b5061098161097c3660046147d7565b611e43565b60405161037d9493929190614805565b34801561099d57600080fd5b5061047e6109ac366004614189565b611e9a565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614820565b611eed565b3480156109f257600080fd5b5061047e610a0136600461483d565b611f0e565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614155565b611f38565b348015610a6357600080fd5b506106c6611f46565b348015610a7857600080fd5b506103ca611f61565b348015610a8d57600080fd5b5061047e610a9c36600461463c565b611f76565b348015610aad57600080fd5b506103ca610abc3660046144c8565b612011565b348015610acd57600080fd5b506103ca610adc366004614350565b61204d565b348015610aed57600080fd5b5061047e610afc366004614536565b612079565b348015610b0d57600080fd5b506103ca600080516020614e7183398151915281565b348015610b2f57600080fd5b50610b3861209b565b60405161037d9190614883565b348015610b5157600080fd5b5061047e610b60366004614369565b6120b5565b348015610b7157600080fd5b50610b85610b80366004614350565b6120d1565b60405161037d91906148c4565b348015610b9e57600080fd5b50610371610bad36600461463c565b6121fa565b348015610bbe57600080fd5b5061047e610bcd36600461463c565b612214565b348015610bde57600080fd5b506103ca612235565b348015610bf357600080fd5b50610b3861224a565b348015610c0857600080fd5b506103ca610c17366004614350565b612264565b348015610c2857600080fd5b5061047e610c373660046148d7565b61228f565b348015610c4857600080fd5b506103ca6122b9565b348015610c5d57600080fd5b506107bf610c6c36600461463c565b6122c4565b348015610c7d57600080fd5b5061047e610c8c366004614599565b6122ff565b348015610c9d57600080fd5b5061047e610cac366004614155565b612387565b348015610cbd57600080fd5b506103ca600080516020614e3183398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123b0565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d27614027565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f46565b6001600160a01b0316635a81a626848381518110610d9157610d91614930565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc9190810190614946565b828281518110610e0e57610e0e614930565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123e5565b9050610e4281600901612409565b91505090565b6000610cf8610c1783612416565b600080516020614eb1833981519152610e6e8161248c565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e71833981519152610f1b8161248c565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614930565b6020026020010151612416565b9050610f5681612496565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f929190614585565b60405180910390fd5b610fa3611f46565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce9190614585565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149b3565b61102e5788604051633f2c64af60e01b8152600401610f929190614585565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a61250d565b915061106c826121fa565b61108b578160405163248d101d60e11b8152600401610f929190614585565b6000611095612539565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a9160040161462e565b8054891161110d578054604051632256490160e11b8152610f92918b9160040161462e565b600181015461111c90896149e6565b925050509850989650505050505050565b6000806111386123e5565b6003015460ff1692915050565b60008061115061255d565b60009384526020525050604090206001015490565b61116d612581565b600080516020614f118339815191526111858161248c565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c5929190614337565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125b7565b50565b61120a82611145565b6112138161248c565b61121d83836125c8565b50505050565b6060610cf861076383612416565b600061123b61260a565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db61262e565b6112e361262e565b6112eb612638565b6112f66000886125c8565b5061130f600080516020614e71833981519152886125c8565b50611328600080516020614e91833981519152886125c8565b50611341600080516020614e31833981519152876125c8565b50600061134c6126d2565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e800006201518061139882826126f6565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612719565b600080516020614e718339815191526114388161248c565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614930565b905061146681612752565b5060010161143b565b600080516020614e718339815191526114878161248c565b610f5f61149384612416565b836127c0565b606060006114a56123e5565b9050610e4281612409565b600080516020614e718339815191526114c88161248c565b6114dc6114d486612416565b85848661281b565b5050505050565b60408051600080516020614ed183398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d6128f1565b6115768261297f565b6115808282612ac2565b5050565b60008061158f6126d2565b600101546001600160a01b031692915050565b600080516020614e918339815191526115ba8161248c565b6115c382612b76565b6115db600080516020614e11833981519152846125c8565b506115f4600080516020614f11833981519152846125c8565b5061160d600080516020614df1833981519152846125c8565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bd9565b600061165f612c70565b50600080516020614e5183398151915290565b600080516020614f1183398151915261168a8161248c565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d2969594939291906149f9565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b611706612581565b600080516020614df183398151915261171e8161248c565b61172782612b76565b61173082612cb9565b506111fe6125b7565b606060006117456123e5565b90506117518382612dee565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a43565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a43565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b611849612581565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e18565b600061271061187b611f46565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614a7d565b6118e69084614a96565b6118f09190614aad565b905060006118fe82846149e6565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612539565b9050838160010160008282546119399190614acf565b9091555050505b6119bc8261194c611f46565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614ae2565b6001600160a01b031690612bd9565b6119cf6001600160a01b038c1682612bd9565b896001600160a01b0316846001600160a01b03167f7518bccc58ad7b6eb0ba4b9e696d83bfc6252df80a4e9cf24e64b10be21ecde48b8486604051611a1693929190614aff565b60405180910390a350505050610ef96125b7565b6000806000611a37612e83565b90508060020154816003015492509250509091565b600080516020614e71833981519152611a648161248c565b61158082612ea7565b600080516020614e91833981519152611a858161248c565b610f5f8383612f13565b600080516020614e71833981519152611aa78161248c565b610f5f611ab384612416565b83612f60565b600080516020614e71833981519152611ad18161248c565b61158082612fd6565b6060806000611ae7611499565b9050600081516001600160401b03811115611b0457611b04614027565b604051908082528060200260200182016040528015611b3757816020015b6060815260200190600190039081611b225790505b509050600082516001600160401b03811115611b5557611b55614027565b604051908082528060200260200182016040528015611b8e57816020015b611b7b613de8565b815260200190600190039081611b735790505b50905060005b8351811015611c9457611ba5611f46565b6001600160a01b0316635a81a626858381518110611bc557611bc5614930565b60200260200101516040518263ffffffff1660e01b8152600401611beb91815260200190565b600060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c309190810190614946565b838281518110611c4257611c42614930565b6020026020010181905250611c6f848281518110611c6257611c62614930565b60200260200101516120d1565b828281518110611c8157611c81614930565b6020908102919091010152600101611b94565b509094909350915050565b60606000611cab6123e5565b9050611cba6006820184613042565b611cd9578260405163ba650b5f60e01b8152600401610f929190614585565b6001600160a01b038316600090815260088201602052604090208054611cfe90614a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2a90614a43565b8015611d775780601f10611d4c57610100808354040283529160200191611d77565b820191906000526020600020905b815481529060010190602001808311611d5a57829003601f168201915b5050505050915050919050565b600080516020614e71833981519152611d9c8161248c565b610f5f611da884612416565b83613057565b600080611db96123e5565b9050611dc58382612dee565b600092835260020160205250604090206001015460ff1690565b600080611dea6131bf565b6000858152602082905260409020909150611e0590846131e3565b949350505050565b600080611e1861255d565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e53612539565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614eb1833981519152611eb28161248c565b6001600160a01b038316611ed957604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b03851684846131ef565b600080516020614e71833981519152611f058161248c565b61158082613247565b600080516020614e71833981519152611f268161248c565b610f5f611f3284612416565b8361329e565b6000610cf861091c83612416565b600080611f516126d2565b546001600160a01b031692915050565b600080611f6c6126d2565b6002015492915050565b600080516020614e91833981519152611f8e8161248c565b611fa6600080516020614e1183398151915283612719565b50611fbf600080516020614f1183398151915283612719565b50611fd8600080516020614df183398151915283612719565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b600061201b6122b9565b61202a898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120586131bf565b60008481526020829052604090209091506120729061330b565b9392505050565b600080516020614e718339815191526120918161248c565b610f5f8383613315565b606060006120a76123e5565b9050610e4260048201612409565b6120be82611145565b6120c78161248c565b61121d8383612719565b6120d9613de8565b60006120e36123e5565b90506120ef8382612dee565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156121eb57838290600052602060002001805461215e90614a43565b80601f016020809104026020016040519081016040528092919081815260200182805461218a90614a43565b80156121d75780601f106121ac576101008083540402835291602001916121d7565b820191906000526020600020905b8154815290600101906020018083116121ba57829003601f168201915b50505050508152602001906001019061213f565b50505091525090949350505050565b6000610cf8600080516020614e1183398151915283611e0d565b600080516020614e7183398151915261222c8161248c565b611580826133b1565b600080612240612539565b6001015492915050565b606060006122566123e5565b9050610e4281600601612409565b60008061226f6123e5565b905061227b8382612dee565b600092835260020160205250604090205490565b600080516020614e718339815191526122a78161248c565b610f5f6122b384612416565b8361344a565b600080611f6c612539565b60008060006122d1612e83565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612307612581565b600080516020614eb183398151915261231f8161248c565b61232882612b76565b61233b6001600160a01b03841683612bd9565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161237691815260200190565b60405180910390a2506115806125b7565b600080516020614e7183398151915261239f8161248c565b6115806123ab83612416565b6134b9565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061207283613554565b6000612420611f46565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161244b91906147c4565b602060405180830381865afa158015612468573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614a7d565b6111fe81336135b0565b60006124a06123e5565b905060006124b160098301846135db565b9050806124d457604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b60008061251f8a8a8a8a8a8a8a612011565b905061252b81846135e7565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600061258b613611565b8054909150600119016125b157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125c1613611565b6001905550565b6000806125d36131bf565b905060006125e18585613635565b90508015611e0557600085815260208390526040902061260190856136d6565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6126366136eb565b565b6126406136eb565b600061264a612539565b6040519091506126b290600080516020614ef1833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614805565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b6126fe6136eb565b6000612708612e83565b600281019390935550600390910155565b6000806127246131bf565b905060006127328585613710565b90508015611e055760008581526020839052604090206126019085613788565b600061275c6123e5565b9050600061276d600983018461379d565b90508061279057604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612500565b60006127ca6123e5565b90506127d68382612dee565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b19789790612500908590859061462e565b60006128256123e5565b9050600061283382876135db565b905080612855576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128b3938501929190910190613e0b565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061296157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129556137a9565b6001600160a01b031614155b156126365760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e318339815191526129978161248c565b60006129a1611f46565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a029190614ae2565b90506000612a0e6137a9565b9050836001600160a01b0316816001600160a01b031603612a465780846040516382afabc160e01b8152600401610f92929190614b15565b816001600160a01b0316846001600160a01b031614612a7c57818460405163699a021f60e11b8152600401610f92929190614b15565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b1c575060408051601f3d908101601f19168201909252612b1991810190614a7d565b60015b612b3b5781604051634c9c8ce360e01b8152600401610f929190614585565b600080516020614e518339815191528114612b6c57604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137c5565b6000612b80611f61565b90506000612b8c612235565b905081811015610f5f576000612ba282846149e6565b90506000612bb082476149e6565b9050808511156114dc578082866040516344c8760560e11b8152600401610f9293929190614aff565b80471015612bfc573060405163cd78605960e01b8152600401610f929190614585565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c49576040519150601f19603f3d011682016040523d82523d6000602084013e612c4e565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126365760405163703e46dd60e11b815260040160405180910390fd5b6000612cc3612e83565b90508060020154821115612cf257806002015482604051631728bc5b60e31b8152600401610f9292919061462e565b6003810154336000908152602083905260409020544291612d1291614acf565b811115612d3a5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d5c908590614acf565b1115612d835781600201548360405163d54b188760e01b8152600401610f9292919061462e565b33600090815260018301602052604081208054859290612da4908490614acf565b90915550612db490503384612bd9565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612df8818361381b565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e22612539565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612eb16123e5565b90506000612ec260048301846136d6565b905080612ee45782604051632872fbf960e11b8152600401610f929190614585565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f836040516125009190614585565b6000612f1d612e83565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e90612500908590859061462e565b6000612f6a6123e5565b9050612f768382612dee565b600083815260028083016020908152604083209091018054600181018255908352912001612fa48382614b94565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612500929190614c4d565b6000612fe06123e5565b90506000612ff16004830184613788565b9050806130135782604051631532e67160e21b8152600401610f929190614585565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af2836040516125009190614585565b6000612072836001600160a01b038416613823565b60006130616123e5565b905061306d8382612dee565b600083815260028083016020526040822001905b81548110156114dc578360405160200161309b9190614c66565b604051602081830303815290604052805190602001208282815481106130c3576130c3614930565b906000526020600020016040516020016130dd9190614c82565b60405160208183030381529060405280519060200120036131b75781548290613108906001906149e6565b8154811061311857613118614930565b9060005260206000200182828154811061313457613134614930565b90600052602060002001908161314a9190614cf8565b508180548061315b5761315b614dc4565b6001900381819060005260206000200160006131779190613e61565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131aa929190614c4d565b60405180910390a16114dc565b600101613081565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b6000612072838361383b565b610f5f83846001600160a01b031663a9059cbb8585604051602401613215929190614337565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613865565b60006132516123e5565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132a86123e5565b90506132b48382612dee565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612500565b6000610cf8825490565b600061331f6123e5565b9050600061333060068301856136d6565b9050806133525783604051631a6107e360e31b8152600401610f929190614585565b6001600160a01b038416600090815260088301602052604090206133768482614b94565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133bb6123e5565b905060006133cc6006830184613788565b9050806133ee578260405163ba650b5f60e01b8152600401610f929190614585565b6001600160a01b0383166000908152600883016020526040812061341191613e61565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134546123e5565b90506134608382612dee565b6000838152600280830160209081526040909220845161348893919092019190850190613e0b565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612500565b60006134c36123e5565b905060006134d1828461379d565b9050806134f457604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061352290830182613e9b565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612500565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135a457602002820191906000526020600020905b815481526020019060010190808311613590575b50505050509050919050565b6135ba8282611e0d565b61158057808260405163e2517d3f60e01b8152600401610f92929190614337565b600061207283836138bf565b6000806000806135f78686613909565b9250925092506136078282613956565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60008061364061255d565b905061364c8484611e0d565b6136cc576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136823390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b6000612072836001600160a01b0384166138bf565b6136f3613a0f565b61263657604051631afcd79f60e31b815260040160405180910390fd5b60008061371b61255d565b90506137278484611e0d565b156136cc576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b6000612072836001600160a01b038416613a29565b60006120728383613a29565b600080516020614e51833981519152546001600160a01b031690565b6137ce82613b12565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561381357610f5f8282613b6e565b611580613be4565b600061207283835b60009081526001919091016020526040902054151590565b600082600001828154811061385257613852614930565b9060005260206000200154905092915050565b600061387a6001600160a01b03841683613c03565b9050805160001415801561389f57508080602001905181019061389d91906149b3565b155b15610f5f5782604051635274afe760e01b8152600401610f929190614585565b60006138cb8383613823565b61390157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139435760208401516040850151606086015160001a61393588828585613c11565b95509550955050505061394f565b50508151600091506002905b9250925092565b600082600381111561396a5761396a614dda565b03613973575050565b600182600381111561398757613987614dda565b036139a55760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139b9576139b9614dda565b036139da5760405163fce698f760e01b815260048101829052602401610f92565b60038260038111156139ee576139ee614dda565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a1961260a565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136cc576000613a4d6001836149e6565b8554909150600090613a61906001906149e6565b9050808214613ac6576000866000018281548110613a8157613a81614930565b9060005260206000200154905080876000018481548110613aa457613aa4614930565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ad757613ad7614dc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b3f5780604051634c9c8ce360e01b8152600401610f929190614585565b600080516020614e5183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613b8b9190614c66565b600060405180830381855af49150503d8060008114613bc6576040519150601f19603f3d011682016040523d82523d6000602084013e613bcb565b606091505b5091509150613bdb858383613cd6565b95945050505050565b34156126365760405163b398979f60e01b815260040160405180910390fd5b606061207283836000613d22565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c425750600091506003905082613ccc565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613c96573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613cc257506000925060019150829050613ccc565b9250600091508190505b9450945094915050565b606082613ceb57613ce682613dbf565b612072565b8151158015613d0257506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f929190614585565b606081471015613d47573060405163cd78605960e01b8152600401610f929190614585565b600080856001600160a01b03168486604051613d639190614c66565b60006040518083038185875af1925050503d8060008114613da0576040519150601f19603f3d011682016040523d82523d6000602084013e613da5565b606091505b5091509150613db5868383613cd6565b9695505050505050565b805115613dcf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e51579160200282015b82811115613e515782518290613e419082614b94565b5091602001919060010190613e2b565b50613e5d929150613eb5565b5090565b508054613e6d90614a43565b6000825580601f10613e7d575050565b601f0160209004906000526020600020908101906111fe9190613ed2565b50805460008255906000526020600020908101906111fe91905b80821115613e5d576000613ec98282613e61565b50600101613eb5565b5b80821115613e5d5760008155600101613ed3565b600060208284031215613ef957600080fd5b81356001600160e01b03198116811461207257600080fd5b60005b83811015613f2c578181015183820152602001613f14565b50506000910152565b60008151808452613f4d816020860160208601613f11565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fae57601f19868403018952613f9c838351613f35565b98840198925090830190600101613f80565b5090979650505050505050565b6020815260006120726020830184613f61565b6020808252825182820181905260009190848201906040850190845b8181101561400657835183529284019291840191600101613fea565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561406557614065614027565b604052919050565b60006001600160401b0382111561408657614086614027565b50601f01601f191660200190565b600082601f8301126140a557600080fd5b81356140b86140b38261406d565b61403d565b8181528460208386010111156140cd57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561410057600080fd5b843561410b81614012565b9350602085013561411b81614012565b92506040850135915060608501356001600160401b0381111561413d57600080fd5b61414987828801614094565b91505092959194509250565b60006020828403121561416757600080fd5b81356001600160401b0381111561417d57600080fd5b611e0584828501614094565b60008060006060848603121561419e57600080fd5b83356141a981614012565b925060208401356141b981614012565b929592945050506040919091013590565b600082601f8301126141db57600080fd5b813560206001600160401b03808311156141f7576141f7614027565b8260051b61420683820161403d565b938452858101830193838101908886111561422057600080fd5b84880192505b8583101561425c5782358481111561423e5760008081fd5b61424c8a87838c0101614094565b8352509184019190840190614226565b98975050505050505050565b60006020828403121561427a57600080fd5b81356001600160401b0381111561429057600080fd5b611e05848285016141ca565b600080600080600080600080610100898b0312156142b957600080fd5b88356142c481614012565b975060208901356142d481614012565b965060408901356142e481614012565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561431b57600080fd5b6143278b828c01614094565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561436257600080fd5b5035919050565b6000806040838503121561437c57600080fd5b82359150602083013561438e81614012565b809150509250929050565b600080600080600060a086880312156143b157600080fd5b85356143bc81614012565b945060208601356143cc81614012565b93506040860135925060608601356143e381614012565b915060808601356143f381614012565b809150509295509295909350565b6000806040838503121561441457600080fd5b82356001600160401b0381111561442a57600080fd5b61443685828601614094565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561446957600080fd5b84356001600160401b038082111561448057600080fd5b61448c88838901614094565b955060208701359450604087013591506144a582614445565b909250606086013590808211156144bb57600080fd5b50614149878288016141ca565b600080600080600080600060e0888a0312156144e357600080fd5b87356144ee81614012565b965060208801356144fe81614012565b9550604088013561450e81614012565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561454957600080fd5b823561455481614012565b915060208301356001600160401b0381111561456f57600080fd5b61457b85828601614094565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145ac57600080fd5b82356145b781614012565b946020939093013593505050565b600080600080600060a086880312156145dd57600080fd5b85356145e881614012565b945060208601356001600160401b0381111561460357600080fd5b61460f88828901614094565b945050604086013592506060860135915060808601356143f381614012565b918252602082015260400190565b60006020828403121561464e57600080fd5b813561207281614012565b6000806040838503121561466c57600080fd5b50508035926020909101359150565b6000806040838503121561468e57600080fd5b82356001600160401b03808211156146a557600080fd5b6146b186838701614094565b935060208501359150808211156146c757600080fd5b5061457b85828601614094565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561474557607f19898703018352614733868551613f35565b95509284019291840191600101614717565b5093979650505050505050565b6040815260006147656040830185613f61565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147b557601f198784030185526147a38383516146d4565b94860194925090850190600101614787565b50909998505050505050505050565b6020815260006120726020830184613f35565b600080604083850312156147ea57600080fd5b82356147f581614012565b9150602083013561438e81614012565b93845260208401929092526040830152606082015260800190565b60006020828403121561483257600080fd5b813561207281614445565b6000806040838503121561485057600080fd5b82356001600160401b0381111561486657600080fd5b61487285828601614094565b925050602083013561438e81614445565b6020808252825182820181905260009190848201906040850190845b818110156140065783516001600160a01b03168352928401929184019160010161489f565b60208152600061207260208301846146d4565b600080604083850312156148ea57600080fd5b82356001600160401b038082111561490157600080fd5b61490d86838701614094565b9350602085013591508082111561492357600080fd5b5061457b858286016141ca565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561495857600080fd5b81516001600160401b0381111561496e57600080fd5b8201601f8101841361497f57600080fd5b805161498d6140b38261406d565b8181528560208385010111156149a257600080fd5b613bdb826020830160208601613f11565b6000602082840312156149c557600080fd5b815161207281614445565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149d0565b600060018060a01b038089168352808816602084015260c06040840152614a2360c0840188613f35565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a5757607f821691505b602082108103614a7757634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614a8f57600080fd5b5051919050565b8082028115828204841417610cf857610cf86149d0565b600082614aca57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149d0565b600060208284031215614af457600080fd5b815161207281614012565b9283526020830191909152604082015260600190565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b585750805b601f850160051c820191505b81811015614b7757828155600101614b64565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bad57614bad614027565b614bc181614bbb8454614a43565b84614b2f565b602080601f831160018114614bf05760008415614bde5750858301515b614be88582614b7f565b865550614b77565b600085815260208120601f198616915b82811015614c1f57888601518255948401946001909101908401614c00565b5085821015614c3d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e056040830184613f35565b60008251614c78818460208701613f11565b9190910192915050565b6000808354614c9081614a43565b60018281168015614ca85760018114614cbd57614cec565b60ff1984168752821515830287019450614cec565b8760005260208060002060005b85811015614ce35781548a820152908401908201614cca565b50505082870194505b50929695505050505050565b818103614d03575050565b614d0d8254614a43565b6001600160401b03811115614d2457614d24614027565b614d3281614bbb8454614a43565b6000601f821160018114614d605760008315614d4e5750848201545b614d588482614b7f565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614d9a5782860154825560019586019590910190602001614d7a565b5085831015614c3d5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa264697066735822122042c60736c4d404050dfb14a8d20fdec352198d25405f004f1e1ad2eee7e75d9e64736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x4F66 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x28FC ADD MSTORE DUP2 DUP2 PUSH2 0x2925 ADD MSTORE PUSH2 0x2C7B ADD MSTORE PUSH2 0x4F66 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x345 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x4C2 JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x26687C9F EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x6D3 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x58E5CAE0 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x7ED JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x892 JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x8E1 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x901 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x921 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x941 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x961 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0x991 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x9B1 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0x9C6 JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0x9E6 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xA6C JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xAC1 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xAE1 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xB23 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xB65 JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xB92 JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xBB2 JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xBD2 JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xBFC JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xC3C JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x34C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE7 JUMP JUMPDEST PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0xCFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4ED1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x40EA JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0xE48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x4189 JUMP JUMPDEST PUSH2 0xE56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x49B CALLDATASIZE PUSH1 0x4 PUSH2 0x4268 JUMP JUMPDEST PUSH2 0xF03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E2 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x429C JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x1201 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4399 JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x4268 JUMP JUMPDEST PUSH2 0x1420 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x4401 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x4453 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x6AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x4599 JUMP JUMPDEST PUSH2 0x15A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x45C5 JUMP JUMPDEST PUSH2 0x1672 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x16FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x429C JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1A4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x808 CALLDATASIZE PUSH1 0x4 PUSH2 0x4659 JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x828 CALLDATASIZE PUSH1 0x4 PUSH2 0x467B JUMP JUMPDEST PUSH2 0x1A8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x848 CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1AB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x862 PUSH2 0x1ADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4752 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH2 0x8AD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x47C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x8FC CALLDATASIZE PUSH1 0x4 PUSH2 0x467B JUMP JUMPDEST PUSH2 0x1D84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x91C CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1DAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x93C CALLDATASIZE PUSH1 0x4 PUSH2 0x4659 JUMP JUMPDEST PUSH2 0x1DDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x95C CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x1E0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x97C CALLDATASIZE PUSH1 0x4 PUSH2 0x47D7 JUMP JUMPDEST PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4805 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4189 JUMP JUMPDEST PUSH2 0x1E9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4820 JUMP JUMPDEST PUSH2 0x1EED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA01 CALLDATASIZE PUSH1 0x4 PUSH2 0x483D JUMP JUMPDEST PUSH2 0x1F0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xA52 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x1F38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1F46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1F61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA9C CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1F76 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xABC CALLDATASIZE PUSH1 0x4 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x2011 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xADC CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x204D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xAFC CALLDATASIZE PUSH1 0x4 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x2079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x209B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xB60 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x20B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB85 PUSH2 0xB80 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x20D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xBAD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x21FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x2214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x2235 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x224A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xC17 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x2264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D7 JUMP JUMPDEST PUSH2 0x228F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x22B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0xC6C CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x22C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC8C CALLDATASIZE PUSH1 0x4 PUSH2 0x4599 JUMP JUMPDEST PUSH2 0x22FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xCAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x2387 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH2 0xCF8 DUP3 PUSH2 0x23B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD0A PUSH2 0xE28 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xD27 JUMPI PUSH2 0xD27 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD5A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD45 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE21 JUMPI PUSH2 0xD71 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD91 JUMPI PUSH2 0xD91 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xDFC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4946 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE0E JUMPI PUSH2 0xE0E PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD60 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE34 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x9 ADD PUSH2 0x2409 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0xC17 DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE6E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xF1B DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0xF4B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2416 JUMP JUMPDEST SWAP1 POP PUSH2 0xF56 DUP2 PUSH2 0x2496 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0xF9B JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA3 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100F SWAP2 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0x102E JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x1061 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x250D JUMP JUMPDEST SWAP2 POP PUSH2 0x106C DUP3 PUSH2 0x21FA JUMP JUMPDEST PUSH2 0x108B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1095 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x462E JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x110D JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x462E JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x111C SWAP1 DUP10 PUSH2 0x49E6 JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1138 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1150 PUSH2 0x255D JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x116D PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1185 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH20 0x0 PUSH4 0x1B29E1BA PUSH2 0x11A7 PUSH2 0x1584 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11C5 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11FE PUSH2 0x25B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x120A DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1213 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x25C8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCF8 PUSH2 0x763 DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B PUSH2 0x260A JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1262 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x127E JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x128C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x12D3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x12DB PUSH2 0x262E JUMP JUMPDEST PUSH2 0x12E3 PUSH2 0x262E JUMP JUMPDEST PUSH2 0x12EB PUSH2 0x2638 JUMP JUMPDEST PUSH2 0x12F6 PUSH1 0x0 DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x130F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x1341 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x134C PUSH2 0x26D2 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x1398 DUP3 DUP3 PUSH2 0x26F6 JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x13E1 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1416 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF5F DUP3 DUP3 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1438 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x145B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4930 JUMP JUMPDEST SWAP1 POP PUSH2 0x1466 DUP2 PUSH2 0x2752 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x143B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1493 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x14A5 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH2 0x2409 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x14C8 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14D4 DUP7 PUSH2 0x2416 JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x281B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4ED1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x156D PUSH2 0x28F1 JUMP JUMPDEST PUSH2 0x1576 DUP3 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x1580 DUP3 DUP3 PUSH2 0x2AC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x158F PUSH2 0x26D2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x15BA DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x15C3 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x15F4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x160D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0xF5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165F PUSH2 0x2C70 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x168A DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH20 0x0 PUSH4 0x53EA54C5 PUSH2 0x16AC PUSH2 0x1584 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1706 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x171E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1727 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x1730 DUP3 PUSH2 0x2CB9 JUMP JUMPDEST POP PUSH2 0x11FE PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1745 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1751 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1835 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x17A8 SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x17D4 SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1821 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x17F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1821 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1804 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1849 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x185C DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xF64 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x186E DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x187B PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18DC SWAP2 SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH2 0x18E6 SWAP1 DUP5 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x18F0 SWAP2 SWAP1 PUSH2 0x4AAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FE DUP3 DUP5 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1940 JUMPI PUSH1 0x0 PUSH2 0x1923 PUSH2 0x2539 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1939 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x19BC DUP3 PUSH2 0x194C PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x4AE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x19CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x2BD9 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7518BCCC58AD7B6EB0BA4B9E696D83BFC6252DF80A4E9CF24E64B10BE21ECDE4 DUP12 DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A16 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xEF9 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A37 PUSH2 0x2E83 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A64 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A85 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x2F13 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AA7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1AB3 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x2F60 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AD1 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2FD6 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1AE7 PUSH2 0x1499 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B04 JUMPI PUSH2 0x1B04 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B37 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B22 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B55 JUMPI PUSH2 0x1B55 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B8E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7B PUSH2 0x3DE8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B73 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1C94 JUMPI PUSH2 0x1BA5 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BC5 JUMPI PUSH2 0x1BC5 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BEB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C30 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4946 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C42 JUMPI PUSH2 0x1C42 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x1C6F DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C62 JUMPI PUSH2 0x1C62 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x20D1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C81 JUMPI PUSH2 0x1C81 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1B94 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1CAB PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CBA PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x3042 JUMP JUMPDEST PUSH2 0x1CD9 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1CFE SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1D2A SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D77 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D4C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D77 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D5A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D9C DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1DA8 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x3057 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DB9 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC5 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DEA PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1E05 SWAP1 DUP5 PUSH2 0x31E3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E18 PUSH2 0x255D JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E53 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1EB2 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1ED9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x31EF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F05 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F26 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1F32 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x329E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0x91C DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F51 PUSH2 0x26D2 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6C PUSH2 0x26D2 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F8E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1FA6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH2 0x1FBF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH2 0x1FD8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x201B PUSH2 0x22B9 JUMP JUMPDEST PUSH2 0x202A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x14E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2058 PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2072 SWAP1 PUSH2 0x330B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2091 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x3315 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20A7 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH1 0x4 DUP3 ADD PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x20BE DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x20C7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x2719 JUMP JUMPDEST PUSH2 0x20D9 PUSH2 0x3DE8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20E3 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x20EF DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x21EB JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x215E SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x218A SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x21D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x21AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x21D7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x21BA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x213F JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x1E0D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x222C DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x33B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2240 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2256 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x6 ADD PUSH2 0x2409 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x226F PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x227B DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22A7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x22B3 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x344A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6C PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22D1 PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2307 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x231F DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x2328 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x233B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BD9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2376 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1580 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x239F DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x23AB DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH2 0x34B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xCF8 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH2 0x3554 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2420 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x244B SWAP2 SWAP1 PUSH2 0x47C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCF8 SWAP2 SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH2 0x11FE DUP2 CALLER PUSH2 0x35B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24A0 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B1 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x35DB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x24D4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x7ACACFD576383587962277516962C289D19F807BE443F4E303AB45ACE24931AC SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x251F DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2011 JUMP JUMPDEST SWAP1 POP PUSH2 0x252B DUP2 DUP5 PUSH2 0x35E7 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258B PUSH2 0x3611 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x25B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25C1 PUSH2 0x3611 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25D3 PUSH2 0x31BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25E1 DUP6 DUP6 PUSH2 0x3635 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E05 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2601 SWAP1 DUP6 PUSH2 0x36D6 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2636 PUSH2 0x36EB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2640 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264A PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x26B2 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4805 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x26FE PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2708 PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2724 PUSH2 0x31BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2732 DUP6 DUP6 PUSH2 0x3710 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E05 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2601 SWAP1 DUP6 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275C PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x276D PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x379D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2790 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF0DD3DE472DDCD75AE2C17728A45801355FB6DD8615A7C53C15504B4279C09BE SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27CA PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x27D6 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE MLOAD PUSH32 0x8DB4DCEEAE8D620782D356DEC6A0148E893FF28620319F10F53DD2232B197897 SWAP1 PUSH2 0x2500 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2825 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2833 DUP3 DUP8 PUSH2 0x35DB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2855 JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x28B3 SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3E0B JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE PUSH32 0x8F531E5EDE07D5741FD086BB787ED399A64704EB757B87CC80CF6635B274E5B5 SWAP2 POP PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2961 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2955 PUSH2 0x37A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2997 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A1 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A02 SWAP2 SWAP1 PUSH2 0x4AE2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A0E PUSH2 0x37A9 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A46 JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B15 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A7C JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B15 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2B1C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2B19 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2B3B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2B6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B80 PUSH2 0x1F61 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B8C PUSH2 0x2235 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x2BA2 DUP3 DUP5 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BB0 DUP3 SELFBALANCE PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x14DC JUMPI DUP1 DUP3 DUP7 PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFF JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2BFC JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CC3 PUSH2 0x2E83 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x2CF2 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x2D12 SWAP2 PUSH2 0x4ACF JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x2D3A JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D5C SWAP1 DUP6 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST GT ISZERO PUSH2 0x2D83 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x2DA4 SWAP1 DUP5 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2DB4 SWAP1 POP CALLER DUP5 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x2DF8 DUP2 DUP4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E22 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EB1 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EC2 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x36D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2EE4 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F1D PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x2500 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F6A PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F76 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x2FA4 DUP4 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP PUSH32 0x1CD139430ED537AB9E8086952076CCE01EDD5BA6E30907AF0FFE3709FD3139E6 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP3 SWAP2 SWAP1 PUSH2 0x4C4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE0 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FF1 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3788 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3013 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3823 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3061 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x306D DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x14DC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x309B SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x30C3 JUMPI PUSH2 0x30C3 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x30DD SWAP2 SWAP1 PUSH2 0x4C82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x31B7 JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x3108 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x49E6 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x3118 JUMPI PUSH2 0x3118 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3134 JUMPI PUSH2 0x3134 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x314A SWAP2 SWAP1 PUSH2 0x4CF8 JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x315B JUMPI PUSH2 0x315B PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x3177 SWAP2 SWAP1 PUSH2 0x3E61 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xFC8D82C9E7E7938446DA05458183EFA5916C443A2BAB87F97F94A8D47742B014 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31AA SWAP3 SWAP2 SWAP1 PUSH2 0x4C4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3081 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x383B JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3215 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3251 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A8 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x32B4 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1B76230B39D2D0C1A2A77A90C170190D2280796ED56B280177256CE39DF1A664 SWAP2 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x331F PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3330 PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x36D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3352 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3376 DUP5 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33BB PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33CC PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x3788 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x33EE JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3411 SWAP2 PUSH2 0x3E61 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3454 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x3460 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x3488 SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3E0B JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xA616BFC5BB0E46C6CAD727E1B55E3685067E1296D962A7F37017874A27AA0098 SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C3 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34D1 DUP3 DUP5 PUSH2 0x379D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x34F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3522 SWAP1 DUP4 ADD DUP3 PUSH2 0x3E9B JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x94DA5EECA10D4D6EE8455F99240C10B0C74B0CF5BF754AFB81C81E2704B9C427 SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x35A4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3590 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35BA DUP3 DUP3 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x1580 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x38BF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x35F7 DUP7 DUP7 PUSH2 0x3909 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3607 DUP3 DUP3 PUSH2 0x3956 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3640 PUSH2 0x255D JUMP JUMPDEST SWAP1 POP PUSH2 0x364C DUP5 DUP5 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x36CC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x3682 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x38BF JUMP JUMPDEST PUSH2 0x36F3 PUSH2 0x3A0F JUMP JUMPDEST PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371B PUSH2 0x255D JUMP JUMPDEST SWAP1 POP PUSH2 0x3727 DUP5 DUP5 PUSH2 0x1E0D JUMP JUMPDEST ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x37CE DUP3 PUSH2 0x3B12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3813 JUMPI PUSH2 0xF5F DUP3 DUP3 PUSH2 0x3B6E JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x3BE4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x387A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3C03 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x389F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x389D SWAP2 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF5F JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38CB DUP4 DUP4 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x3901 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xCF8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3943 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3935 DUP9 DUP3 DUP6 DUP6 PUSH2 0x3C11 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x394F JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x396A JUMPI PUSH2 0x396A PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x3973 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3987 JUMPI PUSH2 0x3987 PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x39A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39B9 JUMPI PUSH2 0x39B9 PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x39DA JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39EE JUMPI PUSH2 0x39EE PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A19 PUSH2 0x260A JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 PUSH2 0x3A4D PUSH1 0x1 DUP4 PUSH2 0x49E6 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3A61 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3AC6 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3A81 JUMPI PUSH2 0x3A81 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3AA4 JUMPI PUSH2 0x3AA4 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x3AD7 JUMPI PUSH2 0x3AD7 PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xCF8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x3B3F JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3B8B SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BC6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BCB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BDB DUP6 DUP4 DUP4 PUSH2 0x3CD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x2072 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3D22 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x3C42 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x3CCC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3CC2 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x3CCC JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3CEB JUMPI PUSH2 0x3CE6 DUP3 PUSH2 0x3DBF JUMP JUMPDEST PUSH2 0x2072 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D02 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xE21 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x3D47 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3D63 SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3DB5 DUP7 DUP4 DUP4 PUSH2 0x3CD6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3DCF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x3E51 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3E51 JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x3E41 SWAP1 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3E2B JUMP JUMPDEST POP PUSH2 0x3E5D SWAP3 SWAP2 POP PUSH2 0x3EB5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x3E6D SWAP1 PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x3E7D JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 PUSH2 0x3ED2 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 PUSH2 0x3EC9 DUP3 DUP3 PUSH2 0x3E61 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3EB5 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3ED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F14 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F4D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F11 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3FAE JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x3F9C DUP4 DUP4 MLOAD PUSH2 0x3F35 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3F80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F61 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4006 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3FEA JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4065 JUMPI PUSH2 0x4065 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4086 JUMPI PUSH2 0x4086 PUSH2 0x4027 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x40B8 PUSH2 0x40B3 DUP3 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x403D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x40CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x410B DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x411B DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x413D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4149 DUP8 DUP3 DUP9 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x417D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E05 DUP5 DUP3 DUP6 ADD PUSH2 0x4094 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x419E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x41A9 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x41B9 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x41DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x41F7 JUMPI PUSH2 0x41F7 PUSH2 0x4027 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x4206 DUP4 DUP3 ADD PUSH2 0x403D JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x4220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x425C JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x423E JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x424C DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x4094 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4226 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x427A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E05 DUP5 DUP3 DUP6 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x42B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x42C4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x42D4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x42E4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x431B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4327 DUP12 DUP3 DUP13 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x437C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4012 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x43B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x43BC DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x43CC DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x43E3 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x43F3 DUP2 PUSH2 0x4012 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x442A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4436 DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448C DUP9 DUP4 DUP10 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x44A5 DUP3 PUSH2 0x4445 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x44BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4149 DUP8 DUP3 DUP9 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x44E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x44EE DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x44FE DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x450E DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4554 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x456F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45B7 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x45E8 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x460F DUP9 DUP3 DUP10 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x43F3 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x464E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2072 DUP2 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x466C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x468E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46B1 DUP7 DUP4 DUP8 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x46C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4745 JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4733 DUP7 DUP6 MLOAD PUSH2 0x3F35 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4717 JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4765 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F61 JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B5 JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x47A3 DUP4 DUP4 MLOAD PUSH2 0x46D4 JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4787 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47F5 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2072 DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4872 DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4006 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x489F JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x48EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x490D DUP7 DUP4 DUP8 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x496E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x497F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x498D PUSH2 0x40B3 DUP3 PUSH2 0x406D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x49A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BDB DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F11 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2072 DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4A23 PUSH1 0xC0 DUP5 ADD DUP9 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x80 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 AND PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A57 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A77 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4ACA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2072 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4B58 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4B77 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B64 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BAD JUMPI PUSH2 0x4BAD PUSH2 0x4027 JUMP JUMPDEST PUSH2 0x4BC1 DUP2 PUSH2 0x4BBB DUP5 SLOAD PUSH2 0x4A43 JUMP JUMPDEST DUP5 PUSH2 0x4B2F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4BF0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x4BDE JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x4BE8 DUP6 DUP3 PUSH2 0x4B7F JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x4B77 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C1F JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4C00 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x4C3D JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E05 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4C78 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F11 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x4C90 DUP2 PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x4CA8 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4CBD JUMPI PUSH2 0x4CEC JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4CEC JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4CE3 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x4CCA JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x4D03 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4D0D DUP3 SLOAD PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4D24 JUMPI PUSH2 0x4D24 PUSH2 0x4027 JUMP JUMPDEST PUSH2 0x4D32 DUP2 PUSH2 0x4BBB DUP5 SLOAD PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4D60 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x4D4E JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x4D58 DUP5 DUP3 PUSH2 0x4B7F JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D9A JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4D7A JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x4C3D JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x735822122042C6 SMOD CALLDATASIZE 0xC4 0xD4 DIV SDIV 0xD 0xFB EQ 0xA8 0xD2 0xF 0xDE 0xC3 MSTORE NOT DUP14 0x25 BLOCKHASH PUSH0 STOP 0x4F 0x1E BYTE 0xD2 0xEE 0xE7 0xE7 TSTORE SWAP15 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "2613:24241:40:-:0;;;1171:4:3;1128:48;;7774:53:40;;;;;;;;;-1:-1:-1;7798:22:40;:20;:22::i;:::-;2613:24241;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:55;;;8087:29:2;;146:2:55;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:55:-;2613:24241:40;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@BOOKING_OPERATOR_ROLE_7861": { + "entryPoint": null, + "id": 7861, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@BOT_ADMIN_ROLE_7837": { + "entryPoint": null, + "id": 7837, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@CHEQUE_OPERATOR_ROLE_7843": { + "entryPoint": null, + "id": 7843, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DOMAIN_TYPEHASH_9013": { + "entryPoint": null, + "id": 9013, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@GAS_WITHDRAWER_ROLE_7849": { + "entryPoint": null, + "id": 7849, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MESSENGER_CHEQUE_TYPEHASH_9009": { + "entryPoint": null, + "id": 9009, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_ADMIN_ROLE_7867": { + "entryPoint": null, + "id": 7867, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_7831": { + "entryPoint": null, + "id": 7831, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_841": { + "entryPoint": null, + "id": 841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@WITHDRAWER_ROLE_7855": { + "entryPoint": null, + "id": 7855, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_8050": { + "entryPoint": null, + "id": 8050, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 9774, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ChequeManager_init_9162": { + "entryPoint": 9784, + "id": 9162, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__GasMoneyManager_init_9747": { + "entryPoint": 9974, + "id": 9747, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_871": { + "entryPoint": null, + "id": 871, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addPublicKey_12781": { + "entryPoint": 13077, + "id": 12781, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addServiceCapability_12294": { + "entryPoint": 12128, + "id": 12294, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addService_12118": { + "entryPoint": 10267, + "id": 12118, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_addSupportedToken_12642": { + "entryPoint": 11943, + "id": 12642, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_addWantedService_12556": { + "entryPoint": 9366, + "id": 12556, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_7212": { + "entryPoint": 14527, + "id": 7212, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_7346": { + "entryPoint": 14395, + "id": 7346, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_8150": { + "entryPoint": 10623, + "id": 8150, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_callOptionalReturn_4747": { + "entryPoint": 14437, + "id": 4747, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkInitializing_739": { + "entryPoint": 14059, + "id": 739, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3805": { + "entryPoint": 15332, + "id": 3805, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_947": { + "entryPoint": 11376, + "id": 947, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkPrefundSpent_8214": { + "entryPoint": 11126, + "id": 8214, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkProxy_931": { + "entryPoint": 10481, + "id": 931, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 9356, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 13744, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkServiceExists_12523": { + "entryPoint": 11758, + "id": 12523, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_7315": { + "entryPoint": 14371, + "id": 7315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 12735, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 9565, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountStorage_7889": { + "entryPoint": 9938, + "id": 7889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getChequeManagerStorage_9066": { + "entryPoint": 9529, + "id": 9066, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getGasMoneyStorage_9693": { + "entryPoint": 11907, + "id": 9693, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_816": { + "entryPoint": 9738, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPartnerConfigurationStorage_11954": { + "entryPoint": 9189, + "id": 11954, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3036": { + "entryPoint": 13841, + "id": 3036, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 13877, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_522": { + "entryPoint": 9672, + "id": 522, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_807": { + "entryPoint": 14863, + "id": 807, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_7329": { + "entryPoint": null, + "id": 7329, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2814": { + "entryPoint": null, + "id": 2814, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3118": { + "entryPoint": 9655, + "id": 3118, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3102": { + "entryPoint": 9601, + "id": 3102, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_removePublicKey_12820": { + "entryPoint": 13233, + "id": 12820, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeServiceCapability_12377": { + "entryPoint": 12375, + "id": 12377, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_removeService_12157": { + "entryPoint": 13497, + "id": 12157, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeSupportedToken_12676": { + "entryPoint": 12246, + "id": 12676, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeWantedService_12589": { + "entryPoint": 10066, + "id": 12589, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_7296": { + "entryPoint": 14889, + "id": 7296, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revert_5244": { + "entryPoint": 15807, + "id": 5244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 14096, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_562": { + "entryPoint": 10009, + "id": 562, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setGasMoneyWithdrawal_9881": { + "entryPoint": 12051, + "id": 9881, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setImplementation_3591": { + "entryPoint": 15122, + "id": 3591, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setOffChainPaymentSupported_12721": { + "entryPoint": 12871, + "id": 12721, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setServiceCapabilities_12259": { + "entryPoint": 13386, + "id": 12259, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceFee_12191": { + "entryPoint": 10176, + "id": 12191, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceRestrictedRate_12225": { + "entryPoint": 12958, + "id": 12225, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_throwError_5987": { + "entryPoint": 14678, + "id": 5987, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_998": { + "entryPoint": 10946, + "id": 998, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_7360": { + "entryPoint": 13652, + "id": 7360, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_withdrawGasMoney_9849": { + "entryPoint": 11449, + "id": 9849, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addMessengerBot_8915": { + "entryPoint": 5538, + "id": 8915, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addPublicKey_8858": { + "entryPoint": 8313, + "id": 8858, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addServiceCapability_8502": { + "entryPoint": 6799, + "id": 8502, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addService_8409": { + "entryPoint": 5296, + "id": 8409, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@addSupportedToken_8827": { + "entryPoint": 6732, + "id": 8827, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addWantedServices_8706": { + "entryPoint": 3843, + "id": 8706, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_7382": { + "entryPoint": 13787, + "id": 7382, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_7512": { + "entryPoint": 14038, + "id": 7512, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_7608": { + "entryPoint": 12771, + "id": 7608, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@buyBookingToken_8294": { + "entryPoint": 4453, + "id": 8294, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@cashInCheque_9544": { + "entryPoint": 6209, + "id": 9544, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@contains_7418": { + "entryPoint": 14363, + "id": 7418, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_7566": { + "entryPoint": 12354, + "id": 7566, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionCallWithValue_5112": { + "entryPoint": 15650, + "id": 5112, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@functionCall_5066": { + "entryPoint": 15363, + "id": 5066, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5164": { + "entryPoint": 15214, + "id": 5164, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllServiceHashes_12396": { + "entryPoint": 5273, + "id": 12396, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_8083": { + "entryPoint": 5508, + "id": 8083, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDomainSeparator_9178": { + "entryPoint": 8889, + "id": 9178, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getGasMoneyWithdrawalForAccount_9929": { + "entryPoint": 8900, + "id": 9929, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@getGasMoneyWithdrawal_9902": { + "entryPoint": 6698, + "id": 9902, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getImplementation_3564": { + "entryPoint": 14249, + "id": 3564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getLastCashIn_9587": { + "entryPoint": 7747, + "id": 9587, + "parameterSlots": 2, + "returnSlots": 4 + }, + "@getManagerAddress_8067": { + "entryPoint": 8006, + "id": 8067, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_8099": { + "entryPoint": 8033, + "id": 8099, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPublicKey_12871": { + "entryPoint": 7327, + "id": 12871, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getPublicKeysAddresses_12839": { + "entryPoint": 8778, + "id": 12839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 4421, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 8269, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 7647, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getServiceCapabilities_12501": { + "entryPoint": 5945, + "id": 12501, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceCapabilities_8670": { + "entryPoint": 4643, + "id": 8670, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_12448": { + "entryPoint": 8804, + "id": 12448, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_8639": { + "entryPoint": 3656, + "id": 8639, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceHash_8538": { + "entryPoint": 9238, + "id": 8538, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_12474": { + "entryPoint": 7598, + "id": 12474, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_8654": { + "entryPoint": 7992, + "id": 8654, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getService_12422": { + "entryPoint": 8401, + "id": 12422, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getSupportedServices_8624": { + "entryPoint": 6874, + "id": 8624, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getSupportedTokens_12696": { + "entryPoint": 8347, + "id": 12696, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getTotalChequePayments_9641": { + "entryPoint": 8757, + "id": 9641, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServiceHashes_12608": { + "entryPoint": 3624, + "id": 12608, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServices_8799": { + "entryPoint": 3326, + "id": 8799, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 4609, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 7693, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@hashMessengerCheque_9213": { + "entryPoint": 5347, + "id": 9213, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@hashTypedDataV4_9252": { + "entryPoint": 8209, + "id": 9252, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@initialize_8046": { + "entryPoint": 4657, + "id": 8046, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@isBotAllowed_8165": { + "entryPoint": 8698, + "id": 8165, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_7581": { + "entryPoint": 13067, + "id": 7581, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mintBookingToken_8274": { + "entryPoint": 5746, + "id": 8274, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@offChainPaymentSupported_12738": { + "entryPoint": 4397, + "id": 12738, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@onERC721Received_8313": { + "entryPoint": null, + "id": 8313, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@proxiableUUID_889": { + "entryPoint": 5717, + "id": 889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@recoverSigner_9296": { + "entryPoint": 9485, + "id": 9296, + "parameterSlots": 8, + "returnSlots": 1 + }, + "@recover_5744": { + "entryPoint": 13799, + "id": 5744, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@removeMessengerBot_8944": { + "entryPoint": 8054, + "id": 8944, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removePublicKey_8872": { + "entryPoint": 8724, + "id": 8872, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeServiceCapability_8521": { + "entryPoint": 7556, + "id": 8521, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@removeService_8425": { + "entryPoint": 9095, + "id": 8425, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeSupportedToken_8841": { + "entryPoint": 6841, + "id": 8841, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeWantedServices_8742": { + "entryPoint": 5152, + "id": 8742, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_7400": { + "entryPoint": 14237, + "id": 7400, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_7539": { + "entryPoint": 14216, + "id": 7539, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 5101, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 8373, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransfer_4557": { + "entryPoint": 12783, + "id": 4557, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@sendValue_5049": { + "entryPoint": 11225, + "id": 5049, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setGasMoneyWithdrawal_8981": { + "entryPoint": 6765, + "id": 8981, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setLastCashIn_9625": { + "entryPoint": 11800, + "id": 9625, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@setOffChainPaymentSupported_8813": { + "entryPoint": 7917, + "id": 8813, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setServiceCapabilities_8483": { + "entryPoint": 8847, + "id": 8483, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceFee_8444": { + "entryPoint": 5231, + "id": 8444, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceRestrictedRate_8463": { + "entryPoint": 7950, + "id": 8463, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@supportsInterface_3176": { + "entryPoint": null, + "id": 3176, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 3283, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 9136, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@transferERC20_8346": { + "entryPoint": 7834, + "id": 8346, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@transferERC721_8383": { + "entryPoint": 3670, + "id": 8383, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@tryRecover_5714": { + "entryPoint": 14601, + "id": 5714, + "parameterSlots": 2, + "returnSlots": 3 + }, + "@tryRecover_5902": { + "entryPoint": 15377, + "id": 5902, + "parameterSlots": 4, + "returnSlots": 3 + }, + "@upgradeToAndCall_3625": { + "entryPoint": 14277, + "id": 3625, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_909": { + "entryPoint": 5477, + "id": 909, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_7481": { + "entryPoint": 9225, + "id": 7481, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@values_7638": { + "entryPoint": null, + "id": 7638, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5204": { + "entryPoint": 15574, + "id": 5204, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@verifyCheque_9431": { + "entryPoint": 3940, + "id": 9431, + "parameterSlots": 8, + "returnSlots": 2 + }, + "@withdrawGasMoney_8964": { + "entryPoint": 5886, + "id": 8964, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@withdraw_8243": { + "entryPoint": 8959, + "id": 8243, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_array_string_dyn": { + "entryPoint": 16842, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 16532, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 17980, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 19170, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_payablet_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 18391, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 17608, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": { + "entryPoint": 17052, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address": { + "entryPoint": 17305, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 16618, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 17718, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445": { + "entryPoint": 17861, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 17817, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 17000, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool": { + "entryPoint": 18464, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 18867, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 17232, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 17257, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 16103, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$4445t_addresst_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC721_$4914t_addresst_uint256": { + "entryPoint": 16777, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 16725, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr_fromMemory": { + "entryPoint": 18758, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 18647, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_bool": { + "entryPoint": 18493, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 18043, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256": { + "entryPoint": 17409, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 17491, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 19069, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 18009, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_array_string_dyn": { + "entryPoint": 16225, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 16181, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_struct_Service": { + "entryPoint": 18132, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 19558, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 19586, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 17797, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 19221, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed": { + "entryPoint": 18937, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 17207, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 18563, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 16334, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 16315, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 18258, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 19533, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 18372, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_Service_$11914_memory_ptr__to_t_struct$_Service_$11914_memory_ptr__fromStack_reversed": { + "entryPoint": 18628, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 17966, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 19199, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 18437, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 16445, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 16493, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 19151, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 19117, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 19094, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 18918, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 19247, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 19348, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage": { + "entryPoint": 19704, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 16145, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 19011, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 19327, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 18896, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 19930, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 19908, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 18736, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 16423, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 16402, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 17477, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:36351:55", + "nodeType": "YulBlock", + "src": "0:36351:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "83:217:55", + "nodeType": "YulBlock", + "src": "83:217:55", + "statements": [ + { + "body": { + "nativeSrc": "129:16:55", + "nodeType": "YulBlock", + "src": "129:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138:1:55", + "nodeType": "YulLiteral", + "src": "138:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "141:1:55", + "nodeType": "YulLiteral", + "src": "141:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "131:6:55", + "nodeType": "YulIdentifier", + "src": "131:6:55" + }, + "nativeSrc": "131:12:55", + "nodeType": "YulFunctionCall", + "src": "131:12:55" + }, + "nativeSrc": "131:12:55", + "nodeType": "YulExpressionStatement", + "src": "131:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "104:7:55", + "nodeType": "YulIdentifier", + "src": "104:7:55" + }, + { + "name": "headStart", + "nativeSrc": "113:9:55", + "nodeType": "YulIdentifier", + "src": "113:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:55", + "nodeType": "YulIdentifier", + "src": "100:3:55" + }, + "nativeSrc": "100:23:55", + "nodeType": "YulFunctionCall", + "src": "100:23:55" + }, + { + "kind": "number", + "nativeSrc": "125:2:55", + "nodeType": "YulLiteral", + "src": "125:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "96:3:55", + "nodeType": "YulIdentifier", + "src": "96:3:55" + }, + "nativeSrc": "96:32:55", + "nodeType": "YulFunctionCall", + "src": "96:32:55" + }, + "nativeSrc": "93:52:55", + "nodeType": "YulIf", + "src": "93:52:55" + }, + { + "nativeSrc": "154:36:55", + "nodeType": "YulVariableDeclaration", + "src": "154:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "180:9:55", + "nodeType": "YulIdentifier", + "src": "180:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "167:12:55", + "nodeType": "YulIdentifier", + "src": "167:12:55" + }, + "nativeSrc": "167:23:55", + "nodeType": "YulFunctionCall", + "src": "167:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "158:5:55", + "nodeType": "YulTypedName", + "src": "158:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "254:16:55", + "nodeType": "YulBlock", + "src": "254:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "263:1:55", + "nodeType": "YulLiteral", + "src": "263:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "266:1:55", + "nodeType": "YulLiteral", + "src": "266:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "256:6:55", + "nodeType": "YulIdentifier", + "src": "256:6:55" + }, + "nativeSrc": "256:12:55", + "nodeType": "YulFunctionCall", + "src": "256:12:55" + }, + "nativeSrc": "256:12:55", + "nodeType": "YulExpressionStatement", + "src": "256:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "212:5:55", + "nodeType": "YulIdentifier", + "src": "212:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "223:5:55", + "nodeType": "YulIdentifier", + "src": "223:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "234:3:55", + "nodeType": "YulLiteral", + "src": "234:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "239:10:55", + "nodeType": "YulLiteral", + "src": "239:10:55", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "230:3:55", + "nodeType": "YulIdentifier", + "src": "230:3:55" + }, + "nativeSrc": "230:20:55", + "nodeType": "YulFunctionCall", + "src": "230:20:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "219:3:55", + "nodeType": "YulIdentifier", + "src": "219:3:55" + }, + "nativeSrc": "219:32:55", + "nodeType": "YulFunctionCall", + "src": "219:32:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "209:2:55", + "nodeType": "YulIdentifier", + "src": "209:2:55" + }, + "nativeSrc": "209:43:55", + "nodeType": "YulFunctionCall", + "src": "209:43:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "202:6:55", + "nodeType": "YulIdentifier", + "src": "202:6:55" + }, + "nativeSrc": "202:51:55", + "nodeType": "YulFunctionCall", + "src": "202:51:55" + }, + "nativeSrc": "199:71:55", + "nodeType": "YulIf", + "src": "199:71:55" + }, + { + "nativeSrc": "279:15:55", + "nodeType": "YulAssignment", + "src": "279:15:55", + "value": { + "name": "value", + "nativeSrc": "289:5:55", + "nodeType": "YulIdentifier", + "src": "289:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "279:6:55", + "nodeType": "YulIdentifier", + "src": "279:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "14:286:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "49:9:55", + "nodeType": "YulTypedName", + "src": "49:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "60:7:55", + "nodeType": "YulTypedName", + "src": "60:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "72:6:55", + "nodeType": "YulTypedName", + "src": "72:6:55", + "type": "" + } + ], + "src": "14:286:55" + }, + { + "body": { + "nativeSrc": "400:92:55", + "nodeType": "YulBlock", + "src": "400:92:55", + "statements": [ + { + "nativeSrc": "410:26:55", + "nodeType": "YulAssignment", + "src": "410:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "422:9:55", + "nodeType": "YulIdentifier", + "src": "422:9:55" + }, + { + "kind": "number", + "nativeSrc": "433:2:55", + "nodeType": "YulLiteral", + "src": "433:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "418:3:55", + "nodeType": "YulIdentifier", + "src": "418:3:55" + }, + "nativeSrc": "418:18:55", + "nodeType": "YulFunctionCall", + "src": "418:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "410:4:55", + "nodeType": "YulIdentifier", + "src": "410:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "452:9:55", + "nodeType": "YulIdentifier", + "src": "452:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "477:6:55", + "nodeType": "YulIdentifier", + "src": "477:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "470:6:55", + "nodeType": "YulIdentifier", + "src": "470:6:55" + }, + "nativeSrc": "470:14:55", + "nodeType": "YulFunctionCall", + "src": "470:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "463:6:55", + "nodeType": "YulIdentifier", + "src": "463:6:55" + }, + "nativeSrc": "463:22:55", + "nodeType": "YulFunctionCall", + "src": "463:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "445:6:55", + "nodeType": "YulIdentifier", + "src": "445:6:55" + }, + "nativeSrc": "445:41:55", + "nodeType": "YulFunctionCall", + "src": "445:41:55" + }, + "nativeSrc": "445:41:55", + "nodeType": "YulExpressionStatement", + "src": "445:41:55" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "305:187:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "369:9:55", + "nodeType": "YulTypedName", + "src": "369:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "380:6:55", + "nodeType": "YulTypedName", + "src": "380:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "391:4:55", + "nodeType": "YulTypedName", + "src": "391:4:55", + "type": "" + } + ], + "src": "305:187:55" + }, + { + "body": { + "nativeSrc": "563:184:55", + "nodeType": "YulBlock", + "src": "563:184:55", + "statements": [ + { + "nativeSrc": "573:10:55", + "nodeType": "YulVariableDeclaration", + "src": "573:10:55", + "value": { + "kind": "number", + "nativeSrc": "582:1:55", + "nodeType": "YulLiteral", + "src": "582:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "577:1:55", + "nodeType": "YulTypedName", + "src": "577:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "642:63:55", + "nodeType": "YulBlock", + "src": "642:63:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "667:3:55", + "nodeType": "YulIdentifier", + "src": "667:3:55" + }, + { + "name": "i", + "nativeSrc": "672:1:55", + "nodeType": "YulIdentifier", + "src": "672:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "663:3:55", + "nodeType": "YulIdentifier", + "src": "663:3:55" + }, + "nativeSrc": "663:11:55", + "nodeType": "YulFunctionCall", + "src": "663:11:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "686:3:55", + "nodeType": "YulIdentifier", + "src": "686:3:55" + }, + { + "name": "i", + "nativeSrc": "691:1:55", + "nodeType": "YulIdentifier", + "src": "691:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "682:3:55", + "nodeType": "YulIdentifier", + "src": "682:3:55" + }, + "nativeSrc": "682:11:55", + "nodeType": "YulFunctionCall", + "src": "682:11:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "676:5:55", + "nodeType": "YulIdentifier", + "src": "676:5:55" + }, + "nativeSrc": "676:18:55", + "nodeType": "YulFunctionCall", + "src": "676:18:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "656:6:55", + "nodeType": "YulIdentifier", + "src": "656:6:55" + }, + "nativeSrc": "656:39:55", + "nodeType": "YulFunctionCall", + "src": "656:39:55" + }, + "nativeSrc": "656:39:55", + "nodeType": "YulExpressionStatement", + "src": "656:39:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "603:1:55", + "nodeType": "YulIdentifier", + "src": "603:1:55" + }, + { + "name": "length", + "nativeSrc": "606:6:55", + "nodeType": "YulIdentifier", + "src": "606:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "600:2:55", + "nodeType": "YulIdentifier", + "src": "600:2:55" + }, + "nativeSrc": "600:13:55", + "nodeType": "YulFunctionCall", + "src": "600:13:55" + }, + "nativeSrc": "592:113:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "614:19:55", + "nodeType": "YulBlock", + "src": "614:19:55", + "statements": [ + { + "nativeSrc": "616:15:55", + "nodeType": "YulAssignment", + "src": "616:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "625:1:55", + "nodeType": "YulIdentifier", + "src": "625:1:55" + }, + { + "kind": "number", + "nativeSrc": "628:2:55", + "nodeType": "YulLiteral", + "src": "628:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "621:3:55", + "nodeType": "YulIdentifier", + "src": "621:3:55" + }, + "nativeSrc": "621:10:55", + "nodeType": "YulFunctionCall", + "src": "621:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "616:1:55", + "nodeType": "YulIdentifier", + "src": "616:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "596:3:55", + "nodeType": "YulBlock", + "src": "596:3:55", + "statements": [] + }, + "src": "592:113:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "725:3:55", + "nodeType": "YulIdentifier", + "src": "725:3:55" + }, + { + "name": "length", + "nativeSrc": "730:6:55", + "nodeType": "YulIdentifier", + "src": "730:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "721:3:55", + "nodeType": "YulIdentifier", + "src": "721:3:55" + }, + "nativeSrc": "721:16:55", + "nodeType": "YulFunctionCall", + "src": "721:16:55" + }, + { + "kind": "number", + "nativeSrc": "739:1:55", + "nodeType": "YulLiteral", + "src": "739:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "714:6:55", + "nodeType": "YulIdentifier", + "src": "714:6:55" + }, + "nativeSrc": "714:27:55", + "nodeType": "YulFunctionCall", + "src": "714:27:55" + }, + "nativeSrc": "714:27:55", + "nodeType": "YulExpressionStatement", + "src": "714:27:55" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "497:250:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "541:3:55", + "nodeType": "YulTypedName", + "src": "541:3:55", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "546:3:55", + "nodeType": "YulTypedName", + "src": "546:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "551:6:55", + "nodeType": "YulTypedName", + "src": "551:6:55", + "type": "" + } + ], + "src": "497:250:55" + }, + { + "body": { + "nativeSrc": "802:221:55", + "nodeType": "YulBlock", + "src": "802:221:55", + "statements": [ + { + "nativeSrc": "812:26:55", + "nodeType": "YulVariableDeclaration", + "src": "812:26:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "832:5:55", + "nodeType": "YulIdentifier", + "src": "832:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "826:5:55", + "nodeType": "YulIdentifier", + "src": "826:5:55" + }, + "nativeSrc": "826:12:55", + "nodeType": "YulFunctionCall", + "src": "826:12:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "816:6:55", + "nodeType": "YulTypedName", + "src": "816:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "854:3:55", + "nodeType": "YulIdentifier", + "src": "854:3:55" + }, + { + "name": "length", + "nativeSrc": "859:6:55", + "nodeType": "YulIdentifier", + "src": "859:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "847:6:55", + "nodeType": "YulIdentifier", + "src": "847:6:55" + }, + "nativeSrc": "847:19:55", + "nodeType": "YulFunctionCall", + "src": "847:19:55" + }, + "nativeSrc": "847:19:55", + "nodeType": "YulExpressionStatement", + "src": "847:19:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "914:5:55", + "nodeType": "YulIdentifier", + "src": "914:5:55" + }, + { + "kind": "number", + "nativeSrc": "921:4:55", + "nodeType": "YulLiteral", + "src": "921:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "910:3:55", + "nodeType": "YulIdentifier", + "src": "910:3:55" + }, + "nativeSrc": "910:16:55", + "nodeType": "YulFunctionCall", + "src": "910:16:55" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "932:3:55", + "nodeType": "YulIdentifier", + "src": "932:3:55" + }, + { + "kind": "number", + "nativeSrc": "937:4:55", + "nodeType": "YulLiteral", + "src": "937:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "928:3:55", + "nodeType": "YulIdentifier", + "src": "928:3:55" + }, + "nativeSrc": "928:14:55", + "nodeType": "YulFunctionCall", + "src": "928:14:55" + }, + { + "name": "length", + "nativeSrc": "944:6:55", + "nodeType": "YulIdentifier", + "src": "944:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "875:34:55", + "nodeType": "YulIdentifier", + "src": "875:34:55" + }, + "nativeSrc": "875:76:55", + "nodeType": "YulFunctionCall", + "src": "875:76:55" + }, + "nativeSrc": "875:76:55", + "nodeType": "YulExpressionStatement", + "src": "875:76:55" + }, + { + "nativeSrc": "960:57:55", + "nodeType": "YulAssignment", + "src": "960:57:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "975:3:55", + "nodeType": "YulIdentifier", + "src": "975:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "988:6:55", + "nodeType": "YulIdentifier", + "src": "988:6:55" + }, + { + "kind": "number", + "nativeSrc": "996:2:55", + "nodeType": "YulLiteral", + "src": "996:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "984:3:55", + "nodeType": "YulIdentifier", + "src": "984:3:55" + }, + "nativeSrc": "984:15:55", + "nodeType": "YulFunctionCall", + "src": "984:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1005:2:55", + "nodeType": "YulLiteral", + "src": "1005:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1001:3:55", + "nodeType": "YulIdentifier", + "src": "1001:3:55" + }, + "nativeSrc": "1001:7:55", + "nodeType": "YulFunctionCall", + "src": "1001:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "980:3:55", + "nodeType": "YulIdentifier", + "src": "980:3:55" + }, + "nativeSrc": "980:29:55", + "nodeType": "YulFunctionCall", + "src": "980:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "971:3:55", + "nodeType": "YulIdentifier", + "src": "971:3:55" + }, + "nativeSrc": "971:39:55", + "nodeType": "YulFunctionCall", + "src": "971:39:55" + }, + { + "kind": "number", + "nativeSrc": "1012:4:55", + "nodeType": "YulLiteral", + "src": "1012:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "967:3:55", + "nodeType": "YulIdentifier", + "src": "967:3:55" + }, + "nativeSrc": "967:50:55", + "nodeType": "YulFunctionCall", + "src": "967:50:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "960:3:55", + "nodeType": "YulIdentifier", + "src": "960:3:55" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "752:271:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "779:5:55", + "nodeType": "YulTypedName", + "src": "779:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "786:3:55", + "nodeType": "YulTypedName", + "src": "786:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "794:3:55", + "nodeType": "YulTypedName", + "src": "794:3:55", + "type": "" + } + ], + "src": "752:271:55" + }, + { + "body": { + "nativeSrc": "1088:538:55", + "nodeType": "YulBlock", + "src": "1088:538:55", + "statements": [ + { + "nativeSrc": "1098:16:55", + "nodeType": "YulVariableDeclaration", + "src": "1098:16:55", + "value": { + "name": "pos", + "nativeSrc": "1111:3:55", + "nodeType": "YulIdentifier", + "src": "1111:3:55" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "1102:5:55", + "nodeType": "YulTypedName", + "src": "1102:5:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1123:26:55", + "nodeType": "YulVariableDeclaration", + "src": "1123:26:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1143:5:55", + "nodeType": "YulIdentifier", + "src": "1143:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1137:5:55", + "nodeType": "YulIdentifier", + "src": "1137:5:55" + }, + "nativeSrc": "1137:12:55", + "nodeType": "YulFunctionCall", + "src": "1137:12:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1127:6:55", + "nodeType": "YulTypedName", + "src": "1127:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1165:3:55", + "nodeType": "YulIdentifier", + "src": "1165:3:55" + }, + { + "name": "length", + "nativeSrc": "1170:6:55", + "nodeType": "YulIdentifier", + "src": "1170:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1158:6:55", + "nodeType": "YulIdentifier", + "src": "1158:6:55" + }, + "nativeSrc": "1158:19:55", + "nodeType": "YulFunctionCall", + "src": "1158:19:55" + }, + "nativeSrc": "1158:19:55", + "nodeType": "YulExpressionStatement", + "src": "1158:19:55" + }, + { + "nativeSrc": "1186:14:55", + "nodeType": "YulVariableDeclaration", + "src": "1186:14:55", + "value": { + "kind": "number", + "nativeSrc": "1196:4:55", + "nodeType": "YulLiteral", + "src": "1196:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1190:2:55", + "nodeType": "YulTypedName", + "src": "1190:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1209:21:55", + "nodeType": "YulAssignment", + "src": "1209:21:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1220:3:55", + "nodeType": "YulIdentifier", + "src": "1220:3:55" + }, + { + "kind": "number", + "nativeSrc": "1225:4:55", + "nodeType": "YulLiteral", + "src": "1225:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1216:3:55", + "nodeType": "YulIdentifier", + "src": "1216:3:55" + }, + "nativeSrc": "1216:14:55", + "nodeType": "YulFunctionCall", + "src": "1216:14:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1209:3:55", + "nodeType": "YulIdentifier", + "src": "1209:3:55" + } + ] + }, + { + "nativeSrc": "1239:49:55", + "nodeType": "YulVariableDeclaration", + "src": "1239:49:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "1259:5:55", + "nodeType": "YulIdentifier", + "src": "1259:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1270:1:55", + "nodeType": "YulLiteral", + "src": "1270:1:55", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "1273:6:55", + "nodeType": "YulIdentifier", + "src": "1273:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1266:3:55", + "nodeType": "YulIdentifier", + "src": "1266:3:55" + }, + "nativeSrc": "1266:14:55", + "nodeType": "YulFunctionCall", + "src": "1266:14:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1255:3:55", + "nodeType": "YulIdentifier", + "src": "1255:3:55" + }, + "nativeSrc": "1255:26:55", + "nodeType": "YulFunctionCall", + "src": "1255:26:55" + }, + { + "kind": "number", + "nativeSrc": "1283:4:55", + "nodeType": "YulLiteral", + "src": "1283:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1251:3:55", + "nodeType": "YulIdentifier", + "src": "1251:3:55" + }, + "nativeSrc": "1251:37:55", + "nodeType": "YulFunctionCall", + "src": "1251:37:55" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "1243:4:55", + "nodeType": "YulTypedName", + "src": "1243:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1297:30:55", + "nodeType": "YulVariableDeclaration", + "src": "1297:30:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1315:5:55", + "nodeType": "YulIdentifier", + "src": "1315:5:55" + }, + { + "kind": "number", + "nativeSrc": "1322:4:55", + "nodeType": "YulLiteral", + "src": "1322:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1311:3:55", + "nodeType": "YulIdentifier", + "src": "1311:3:55" + }, + "nativeSrc": "1311:16:55", + "nodeType": "YulFunctionCall", + "src": "1311:16:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "1301:6:55", + "nodeType": "YulTypedName", + "src": "1301:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1336:10:55", + "nodeType": "YulVariableDeclaration", + "src": "1336:10:55", + "value": { + "kind": "number", + "nativeSrc": "1345:1:55", + "nodeType": "YulLiteral", + "src": "1345:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1340:1:55", + "nodeType": "YulTypedName", + "src": "1340:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1404:196:55", + "nodeType": "YulBlock", + "src": "1404:196:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1425:3:55", + "nodeType": "YulIdentifier", + "src": "1425:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "1438:4:55", + "nodeType": "YulIdentifier", + "src": "1438:4:55" + }, + { + "name": "pos_1", + "nativeSrc": "1444:5:55", + "nodeType": "YulIdentifier", + "src": "1444:5:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1434:3:55", + "nodeType": "YulIdentifier", + "src": "1434:3:55" + }, + "nativeSrc": "1434:16:55", + "nodeType": "YulFunctionCall", + "src": "1434:16:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1456:2:55", + "nodeType": "YulLiteral", + "src": "1456:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1452:3:55", + "nodeType": "YulIdentifier", + "src": "1452:3:55" + }, + "nativeSrc": "1452:7:55", + "nodeType": "YulFunctionCall", + "src": "1452:7:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1430:3:55", + "nodeType": "YulIdentifier", + "src": "1430:3:55" + }, + "nativeSrc": "1430:30:55", + "nodeType": "YulFunctionCall", + "src": "1430:30:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1418:6:55", + "nodeType": "YulIdentifier", + "src": "1418:6:55" + }, + "nativeSrc": "1418:43:55", + "nodeType": "YulFunctionCall", + "src": "1418:43:55" + }, + "nativeSrc": "1418:43:55", + "nodeType": "YulExpressionStatement", + "src": "1418:43:55" + }, + { + "nativeSrc": "1474:46:55", + "nodeType": "YulAssignment", + "src": "1474:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1506:6:55", + "nodeType": "YulIdentifier", + "src": "1506:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1500:5:55", + "nodeType": "YulIdentifier", + "src": "1500:5:55" + }, + "nativeSrc": "1500:13:55", + "nodeType": "YulFunctionCall", + "src": "1500:13:55" + }, + { + "name": "tail", + "nativeSrc": "1515:4:55", + "nodeType": "YulIdentifier", + "src": "1515:4:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "1482:17:55", + "nodeType": "YulIdentifier", + "src": "1482:17:55" + }, + "nativeSrc": "1482:38:55", + "nodeType": "YulFunctionCall", + "src": "1482:38:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1474:4:55", + "nodeType": "YulIdentifier", + "src": "1474:4:55" + } + ] + }, + { + "nativeSrc": "1533:25:55", + "nodeType": "YulAssignment", + "src": "1533:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1547:6:55", + "nodeType": "YulIdentifier", + "src": "1547:6:55" + }, + { + "name": "_1", + "nativeSrc": "1555:2:55", + "nodeType": "YulIdentifier", + "src": "1555:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1543:3:55", + "nodeType": "YulIdentifier", + "src": "1543:3:55" + }, + "nativeSrc": "1543:15:55", + "nodeType": "YulFunctionCall", + "src": "1543:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "1533:6:55", + "nodeType": "YulIdentifier", + "src": "1533:6:55" + } + ] + }, + { + "nativeSrc": "1571:19:55", + "nodeType": "YulAssignment", + "src": "1571:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1582:3:55", + "nodeType": "YulIdentifier", + "src": "1582:3:55" + }, + { + "name": "_1", + "nativeSrc": "1587:2:55", + "nodeType": "YulIdentifier", + "src": "1587:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1578:3:55", + "nodeType": "YulIdentifier", + "src": "1578:3:55" + }, + "nativeSrc": "1578:12:55", + "nodeType": "YulFunctionCall", + "src": "1578:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1571:3:55", + "nodeType": "YulIdentifier", + "src": "1571:3:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1366:1:55", + "nodeType": "YulIdentifier", + "src": "1366:1:55" + }, + { + "name": "length", + "nativeSrc": "1369:6:55", + "nodeType": "YulIdentifier", + "src": "1369:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1363:2:55", + "nodeType": "YulIdentifier", + "src": "1363:2:55" + }, + "nativeSrc": "1363:13:55", + "nodeType": "YulFunctionCall", + "src": "1363:13:55" + }, + "nativeSrc": "1355:245:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1377:18:55", + "nodeType": "YulBlock", + "src": "1377:18:55", + "statements": [ + { + "nativeSrc": "1379:14:55", + "nodeType": "YulAssignment", + "src": "1379:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1388:1:55", + "nodeType": "YulIdentifier", + "src": "1388:1:55" + }, + { + "kind": "number", + "nativeSrc": "1391:1:55", + "nodeType": "YulLiteral", + "src": "1391:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1384:3:55", + "nodeType": "YulIdentifier", + "src": "1384:3:55" + }, + "nativeSrc": "1384:9:55", + "nodeType": "YulFunctionCall", + "src": "1384:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1379:1:55", + "nodeType": "YulIdentifier", + "src": "1379:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1359:3:55", + "nodeType": "YulBlock", + "src": "1359:3:55", + "statements": [] + }, + "src": "1355:245:55" + }, + { + "nativeSrc": "1609:11:55", + "nodeType": "YulAssignment", + "src": "1609:11:55", + "value": { + "name": "tail", + "nativeSrc": "1616:4:55", + "nodeType": "YulIdentifier", + "src": "1616:4:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1609:3:55", + "nodeType": "YulIdentifier", + "src": "1609:3:55" + } + ] + } + ] + }, + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1028:598:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1065:5:55", + "nodeType": "YulTypedName", + "src": "1065:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "1072:3:55", + "nodeType": "YulTypedName", + "src": "1072:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1080:3:55", + "nodeType": "YulTypedName", + "src": "1080:3:55", + "type": "" + } + ], + "src": "1028:598:55" + }, + { + "body": { + "nativeSrc": "1802:109:55", + "nodeType": "YulBlock", + "src": "1802:109:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1819:9:55", + "nodeType": "YulIdentifier", + "src": "1819:9:55" + }, + { + "kind": "number", + "nativeSrc": "1830:2:55", + "nodeType": "YulLiteral", + "src": "1830:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1812:6:55", + "nodeType": "YulIdentifier", + "src": "1812:6:55" + }, + "nativeSrc": "1812:21:55", + "nodeType": "YulFunctionCall", + "src": "1812:21:55" + }, + "nativeSrc": "1812:21:55", + "nodeType": "YulExpressionStatement", + "src": "1812:21:55" + }, + { + "nativeSrc": "1842:63:55", + "nodeType": "YulAssignment", + "src": "1842:63:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1878:6:55", + "nodeType": "YulIdentifier", + "src": "1878:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1890:9:55", + "nodeType": "YulIdentifier", + "src": "1890:9:55" + }, + { + "kind": "number", + "nativeSrc": "1901:2:55", + "nodeType": "YulLiteral", + "src": "1901:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1886:3:55", + "nodeType": "YulIdentifier", + "src": "1886:3:55" + }, + "nativeSrc": "1886:18:55", + "nodeType": "YulFunctionCall", + "src": "1886:18:55" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1850:27:55", + "nodeType": "YulIdentifier", + "src": "1850:27:55" + }, + "nativeSrc": "1850:55:55", + "nodeType": "YulFunctionCall", + "src": "1850:55:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1842:4:55", + "nodeType": "YulIdentifier", + "src": "1842:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "1631:280:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1771:9:55", + "nodeType": "YulTypedName", + "src": "1771:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1782:6:55", + "nodeType": "YulTypedName", + "src": "1782:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1793:4:55", + "nodeType": "YulTypedName", + "src": "1793:4:55", + "type": "" + } + ], + "src": "1631:280:55" + }, + { + "body": { + "nativeSrc": "2017:76:55", + "nodeType": "YulBlock", + "src": "2017:76:55", + "statements": [ + { + "nativeSrc": "2027:26:55", + "nodeType": "YulAssignment", + "src": "2027:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2039:9:55", + "nodeType": "YulIdentifier", + "src": "2039:9:55" + }, + { + "kind": "number", + "nativeSrc": "2050:2:55", + "nodeType": "YulLiteral", + "src": "2050:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2035:3:55", + "nodeType": "YulIdentifier", + "src": "2035:3:55" + }, + "nativeSrc": "2035:18:55", + "nodeType": "YulFunctionCall", + "src": "2035:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2027:4:55", + "nodeType": "YulIdentifier", + "src": "2027:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2069:9:55", + "nodeType": "YulIdentifier", + "src": "2069:9:55" + }, + { + "name": "value0", + "nativeSrc": "2080:6:55", + "nodeType": "YulIdentifier", + "src": "2080:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2062:6:55", + "nodeType": "YulIdentifier", + "src": "2062:6:55" + }, + "nativeSrc": "2062:25:55", + "nodeType": "YulFunctionCall", + "src": "2062:25:55" + }, + "nativeSrc": "2062:25:55", + "nodeType": "YulExpressionStatement", + "src": "2062:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "1916:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1986:9:55", + "nodeType": "YulTypedName", + "src": "1986:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1997:6:55", + "nodeType": "YulTypedName", + "src": "1997:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2008:4:55", + "nodeType": "YulTypedName", + "src": "2008:4:55", + "type": "" + } + ], + "src": "1916:177:55" + }, + { + "body": { + "nativeSrc": "2249:481:55", + "nodeType": "YulBlock", + "src": "2249:481:55", + "statements": [ + { + "nativeSrc": "2259:12:55", + "nodeType": "YulVariableDeclaration", + "src": "2259:12:55", + "value": { + "kind": "number", + "nativeSrc": "2269:2:55", + "nodeType": "YulLiteral", + "src": "2269:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2263:2:55", + "nodeType": "YulTypedName", + "src": "2263:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "2280:32:55", + "nodeType": "YulVariableDeclaration", + "src": "2280:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2298:9:55", + "nodeType": "YulIdentifier", + "src": "2298:9:55" + }, + { + "kind": "number", + "nativeSrc": "2309:2:55", + "nodeType": "YulLiteral", + "src": "2309:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2294:3:55", + "nodeType": "YulIdentifier", + "src": "2294:3:55" + }, + "nativeSrc": "2294:18:55", + "nodeType": "YulFunctionCall", + "src": "2294:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "2284:6:55", + "nodeType": "YulTypedName", + "src": "2284:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2328:9:55", + "nodeType": "YulIdentifier", + "src": "2328:9:55" + }, + { + "kind": "number", + "nativeSrc": "2339:2:55", + "nodeType": "YulLiteral", + "src": "2339:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2321:6:55", + "nodeType": "YulIdentifier", + "src": "2321:6:55" + }, + "nativeSrc": "2321:21:55", + "nodeType": "YulFunctionCall", + "src": "2321:21:55" + }, + "nativeSrc": "2321:21:55", + "nodeType": "YulExpressionStatement", + "src": "2321:21:55" + }, + { + "nativeSrc": "2351:17:55", + "nodeType": "YulVariableDeclaration", + "src": "2351:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "2362:6:55", + "nodeType": "YulIdentifier", + "src": "2362:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "2355:3:55", + "nodeType": "YulTypedName", + "src": "2355:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "2377:27:55", + "nodeType": "YulVariableDeclaration", + "src": "2377:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2397:6:55", + "nodeType": "YulIdentifier", + "src": "2397:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2391:5:55", + "nodeType": "YulIdentifier", + "src": "2391:5:55" + }, + "nativeSrc": "2391:13:55", + "nodeType": "YulFunctionCall", + "src": "2391:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "2381:6:55", + "nodeType": "YulTypedName", + "src": "2381:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "2420:6:55", + "nodeType": "YulIdentifier", + "src": "2420:6:55" + }, + { + "name": "length", + "nativeSrc": "2428:6:55", + "nodeType": "YulIdentifier", + "src": "2428:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2413:6:55", + "nodeType": "YulIdentifier", + "src": "2413:6:55" + }, + "nativeSrc": "2413:22:55", + "nodeType": "YulFunctionCall", + "src": "2413:22:55" + }, + "nativeSrc": "2413:22:55", + "nodeType": "YulExpressionStatement", + "src": "2413:22:55" + }, + { + "nativeSrc": "2444:25:55", + "nodeType": "YulAssignment", + "src": "2444:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2455:9:55", + "nodeType": "YulIdentifier", + "src": "2455:9:55" + }, + { + "kind": "number", + "nativeSrc": "2466:2:55", + "nodeType": "YulLiteral", + "src": "2466:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2451:3:55", + "nodeType": "YulIdentifier", + "src": "2451:3:55" + }, + "nativeSrc": "2451:18:55", + "nodeType": "YulFunctionCall", + "src": "2451:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2444:3:55", + "nodeType": "YulIdentifier", + "src": "2444:3:55" + } + ] + }, + { + "nativeSrc": "2478:29:55", + "nodeType": "YulVariableDeclaration", + "src": "2478:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2496:6:55", + "nodeType": "YulIdentifier", + "src": "2496:6:55" + }, + { + "kind": "number", + "nativeSrc": "2504:2:55", + "nodeType": "YulLiteral", + "src": "2504:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2492:3:55", + "nodeType": "YulIdentifier", + "src": "2492:3:55" + }, + "nativeSrc": "2492:15:55", + "nodeType": "YulFunctionCall", + "src": "2492:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "2482:6:55", + "nodeType": "YulTypedName", + "src": "2482:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "2516:10:55", + "nodeType": "YulVariableDeclaration", + "src": "2516:10:55", + "value": { + "kind": "number", + "nativeSrc": "2525:1:55", + "nodeType": "YulLiteral", + "src": "2525:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2520:1:55", + "nodeType": "YulTypedName", + "src": "2520:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2584:120:55", + "nodeType": "YulBlock", + "src": "2584:120:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2605:3:55", + "nodeType": "YulIdentifier", + "src": "2605:3:55" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2616:6:55", + "nodeType": "YulIdentifier", + "src": "2616:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2610:5:55", + "nodeType": "YulIdentifier", + "src": "2610:5:55" + }, + "nativeSrc": "2610:13:55", + "nodeType": "YulFunctionCall", + "src": "2610:13:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2598:6:55", + "nodeType": "YulIdentifier", + "src": "2598:6:55" + }, + "nativeSrc": "2598:26:55", + "nodeType": "YulFunctionCall", + "src": "2598:26:55" + }, + "nativeSrc": "2598:26:55", + "nodeType": "YulExpressionStatement", + "src": "2598:26:55" + }, + { + "nativeSrc": "2637:19:55", + "nodeType": "YulAssignment", + "src": "2637:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2648:3:55", + "nodeType": "YulIdentifier", + "src": "2648:3:55" + }, + { + "name": "_1", + "nativeSrc": "2653:2:55", + "nodeType": "YulIdentifier", + "src": "2653:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2644:3:55", + "nodeType": "YulIdentifier", + "src": "2644:3:55" + }, + "nativeSrc": "2644:12:55", + "nodeType": "YulFunctionCall", + "src": "2644:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2637:3:55", + "nodeType": "YulIdentifier", + "src": "2637:3:55" + } + ] + }, + { + "nativeSrc": "2669:25:55", + "nodeType": "YulAssignment", + "src": "2669:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2683:6:55", + "nodeType": "YulIdentifier", + "src": "2683:6:55" + }, + { + "name": "_1", + "nativeSrc": "2691:2:55", + "nodeType": "YulIdentifier", + "src": "2691:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2679:3:55", + "nodeType": "YulIdentifier", + "src": "2679:3:55" + }, + "nativeSrc": "2679:15:55", + "nodeType": "YulFunctionCall", + "src": "2679:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "2669:6:55", + "nodeType": "YulIdentifier", + "src": "2669:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2546:1:55", + "nodeType": "YulIdentifier", + "src": "2546:1:55" + }, + { + "name": "length", + "nativeSrc": "2549:6:55", + "nodeType": "YulIdentifier", + "src": "2549:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2543:2:55", + "nodeType": "YulIdentifier", + "src": "2543:2:55" + }, + "nativeSrc": "2543:13:55", + "nodeType": "YulFunctionCall", + "src": "2543:13:55" + }, + "nativeSrc": "2535:169:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2557:18:55", + "nodeType": "YulBlock", + "src": "2557:18:55", + "statements": [ + { + "nativeSrc": "2559:14:55", + "nodeType": "YulAssignment", + "src": "2559:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2568:1:55", + "nodeType": "YulIdentifier", + "src": "2568:1:55" + }, + { + "kind": "number", + "nativeSrc": "2571:1:55", + "nodeType": "YulLiteral", + "src": "2571:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2564:3:55", + "nodeType": "YulIdentifier", + "src": "2564:3:55" + }, + "nativeSrc": "2564:9:55", + "nodeType": "YulFunctionCall", + "src": "2564:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2559:1:55", + "nodeType": "YulIdentifier", + "src": "2559:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2539:3:55", + "nodeType": "YulBlock", + "src": "2539:3:55", + "statements": [] + }, + "src": "2535:169:55" + }, + { + "nativeSrc": "2713:11:55", + "nodeType": "YulAssignment", + "src": "2713:11:55", + "value": { + "name": "pos", + "nativeSrc": "2721:3:55", + "nodeType": "YulIdentifier", + "src": "2721:3:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2713:4:55", + "nodeType": "YulIdentifier", + "src": "2713:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "2098:632:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2218:9:55", + "nodeType": "YulTypedName", + "src": "2218:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2229:6:55", + "nodeType": "YulTypedName", + "src": "2229:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2240:4:55", + "nodeType": "YulTypedName", + "src": "2240:4:55", + "type": "" + } + ], + "src": "2098:632:55" + }, + { + "body": { + "nativeSrc": "2780:86:55", + "nodeType": "YulBlock", + "src": "2780:86:55", + "statements": [ + { + "body": { + "nativeSrc": "2844:16:55", + "nodeType": "YulBlock", + "src": "2844:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2853:1:55", + "nodeType": "YulLiteral", + "src": "2853:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2856:1:55", + "nodeType": "YulLiteral", + "src": "2856:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2846:6:55", + "nodeType": "YulIdentifier", + "src": "2846:6:55" + }, + "nativeSrc": "2846:12:55", + "nodeType": "YulFunctionCall", + "src": "2846:12:55" + }, + "nativeSrc": "2846:12:55", + "nodeType": "YulExpressionStatement", + "src": "2846:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2803:5:55", + "nodeType": "YulIdentifier", + "src": "2803:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2814:5:55", + "nodeType": "YulIdentifier", + "src": "2814:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2829:3:55", + "nodeType": "YulLiteral", + "src": "2829:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2834:1:55", + "nodeType": "YulLiteral", + "src": "2834:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2825:3:55", + "nodeType": "YulIdentifier", + "src": "2825:3:55" + }, + "nativeSrc": "2825:11:55", + "nodeType": "YulFunctionCall", + "src": "2825:11:55" + }, + { + "kind": "number", + "nativeSrc": "2838:1:55", + "nodeType": "YulLiteral", + "src": "2838:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2821:3:55", + "nodeType": "YulIdentifier", + "src": "2821:3:55" + }, + "nativeSrc": "2821:19:55", + "nodeType": "YulFunctionCall", + "src": "2821:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2810:3:55", + "nodeType": "YulIdentifier", + "src": "2810:3:55" + }, + "nativeSrc": "2810:31:55", + "nodeType": "YulFunctionCall", + "src": "2810:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2800:2:55", + "nodeType": "YulIdentifier", + "src": "2800:2:55" + }, + "nativeSrc": "2800:42:55", + "nodeType": "YulFunctionCall", + "src": "2800:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2793:6:55", + "nodeType": "YulIdentifier", + "src": "2793:6:55" + }, + "nativeSrc": "2793:50:55", + "nodeType": "YulFunctionCall", + "src": "2793:50:55" + }, + "nativeSrc": "2790:70:55", + "nodeType": "YulIf", + "src": "2790:70:55" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "2735:131:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2769:5:55", + "nodeType": "YulTypedName", + "src": "2769:5:55", + "type": "" + } + ], + "src": "2735:131:55" + }, + { + "body": { + "nativeSrc": "2903:95:55", + "nodeType": "YulBlock", + "src": "2903:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2920:1:55", + "nodeType": "YulLiteral", + "src": "2920:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2927:3:55", + "nodeType": "YulLiteral", + "src": "2927:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2932:10:55", + "nodeType": "YulLiteral", + "src": "2932:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2923:3:55", + "nodeType": "YulIdentifier", + "src": "2923:3:55" + }, + "nativeSrc": "2923:20:55", + "nodeType": "YulFunctionCall", + "src": "2923:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2913:6:55", + "nodeType": "YulIdentifier", + "src": "2913:6:55" + }, + "nativeSrc": "2913:31:55", + "nodeType": "YulFunctionCall", + "src": "2913:31:55" + }, + "nativeSrc": "2913:31:55", + "nodeType": "YulExpressionStatement", + "src": "2913:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2960:1:55", + "nodeType": "YulLiteral", + "src": "2960:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2963:4:55", + "nodeType": "YulLiteral", + "src": "2963:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2953:6:55", + "nodeType": "YulIdentifier", + "src": "2953:6:55" + }, + "nativeSrc": "2953:15:55", + "nodeType": "YulFunctionCall", + "src": "2953:15:55" + }, + "nativeSrc": "2953:15:55", + "nodeType": "YulExpressionStatement", + "src": "2953:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2984:1:55", + "nodeType": "YulLiteral", + "src": "2984:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2987:4:55", + "nodeType": "YulLiteral", + "src": "2987:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2977:6:55", + "nodeType": "YulIdentifier", + "src": "2977:6:55" + }, + "nativeSrc": "2977:15:55", + "nodeType": "YulFunctionCall", + "src": "2977:15:55" + }, + "nativeSrc": "2977:15:55", + "nodeType": "YulExpressionStatement", + "src": "2977:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "2871:127:55", + "nodeType": "YulFunctionDefinition", + "src": "2871:127:55" + }, + { + "body": { + "nativeSrc": "3048:230:55", + "nodeType": "YulBlock", + "src": "3048:230:55", + "statements": [ + { + "nativeSrc": "3058:19:55", + "nodeType": "YulAssignment", + "src": "3058:19:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3074:2:55", + "nodeType": "YulLiteral", + "src": "3074:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3068:5:55", + "nodeType": "YulIdentifier", + "src": "3068:5:55" + }, + "nativeSrc": "3068:9:55", + "nodeType": "YulFunctionCall", + "src": "3068:9:55" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "3058:6:55", + "nodeType": "YulIdentifier", + "src": "3058:6:55" + } + ] + }, + { + "nativeSrc": "3086:58:55", + "nodeType": "YulVariableDeclaration", + "src": "3086:58:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "3108:6:55", + "nodeType": "YulIdentifier", + "src": "3108:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nativeSrc": "3124:4:55", + "nodeType": "YulIdentifier", + "src": "3124:4:55" + }, + { + "kind": "number", + "nativeSrc": "3130:2:55", + "nodeType": "YulLiteral", + "src": "3130:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3120:3:55", + "nodeType": "YulIdentifier", + "src": "3120:3:55" + }, + "nativeSrc": "3120:13:55", + "nodeType": "YulFunctionCall", + "src": "3120:13:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3139:2:55", + "nodeType": "YulLiteral", + "src": "3139:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3135:3:55", + "nodeType": "YulIdentifier", + "src": "3135:3:55" + }, + "nativeSrc": "3135:7:55", + "nodeType": "YulFunctionCall", + "src": "3135:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3116:3:55", + "nodeType": "YulIdentifier", + "src": "3116:3:55" + }, + "nativeSrc": "3116:27:55", + "nodeType": "YulFunctionCall", + "src": "3116:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3104:3:55", + "nodeType": "YulIdentifier", + "src": "3104:3:55" + }, + "nativeSrc": "3104:40:55", + "nodeType": "YulFunctionCall", + "src": "3104:40:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "3090:10:55", + "nodeType": "YulTypedName", + "src": "3090:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3219:22:55", + "nodeType": "YulBlock", + "src": "3219:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3221:16:55", + "nodeType": "YulIdentifier", + "src": "3221:16:55" + }, + "nativeSrc": "3221:18:55", + "nodeType": "YulFunctionCall", + "src": "3221:18:55" + }, + "nativeSrc": "3221:18:55", + "nodeType": "YulExpressionStatement", + "src": "3221:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3162:10:55", + "nodeType": "YulIdentifier", + "src": "3162:10:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3182:2:55", + "nodeType": "YulLiteral", + "src": "3182:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3186:1:55", + "nodeType": "YulLiteral", + "src": "3186:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3178:3:55", + "nodeType": "YulIdentifier", + "src": "3178:3:55" + }, + "nativeSrc": "3178:10:55", + "nodeType": "YulFunctionCall", + "src": "3178:10:55" + }, + { + "kind": "number", + "nativeSrc": "3190:1:55", + "nodeType": "YulLiteral", + "src": "3190:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3174:3:55", + "nodeType": "YulIdentifier", + "src": "3174:3:55" + }, + "nativeSrc": "3174:18:55", + "nodeType": "YulFunctionCall", + "src": "3174:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3159:2:55", + "nodeType": "YulIdentifier", + "src": "3159:2:55" + }, + "nativeSrc": "3159:34:55", + "nodeType": "YulFunctionCall", + "src": "3159:34:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3198:10:55", + "nodeType": "YulIdentifier", + "src": "3198:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "3210:6:55", + "nodeType": "YulIdentifier", + "src": "3210:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3195:2:55", + "nodeType": "YulIdentifier", + "src": "3195:2:55" + }, + "nativeSrc": "3195:22:55", + "nodeType": "YulFunctionCall", + "src": "3195:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3156:2:55", + "nodeType": "YulIdentifier", + "src": "3156:2:55" + }, + "nativeSrc": "3156:62:55", + "nodeType": "YulFunctionCall", + "src": "3156:62:55" + }, + "nativeSrc": "3153:88:55", + "nodeType": "YulIf", + "src": "3153:88:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3257:2:55", + "nodeType": "YulLiteral", + "src": "3257:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "3261:10:55", + "nodeType": "YulIdentifier", + "src": "3261:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3250:6:55", + "nodeType": "YulIdentifier", + "src": "3250:6:55" + }, + "nativeSrc": "3250:22:55", + "nodeType": "YulFunctionCall", + "src": "3250:22:55" + }, + "nativeSrc": "3250:22:55", + "nodeType": "YulExpressionStatement", + "src": "3250:22:55" + } + ] + }, + "name": "allocate_memory", + "nativeSrc": "3003:275:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nativeSrc": "3028:4:55", + "nodeType": "YulTypedName", + "src": "3028:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "3037:6:55", + "nodeType": "YulTypedName", + "src": "3037:6:55", + "type": "" + } + ], + "src": "3003:275:55" + }, + { + "body": { + "nativeSrc": "3340:129:55", + "nodeType": "YulBlock", + "src": "3340:129:55", + "statements": [ + { + "body": { + "nativeSrc": "3384:22:55", + "nodeType": "YulBlock", + "src": "3384:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3386:16:55", + "nodeType": "YulIdentifier", + "src": "3386:16:55" + }, + "nativeSrc": "3386:18:55", + "nodeType": "YulFunctionCall", + "src": "3386:18:55" + }, + "nativeSrc": "3386:18:55", + "nodeType": "YulExpressionStatement", + "src": "3386:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "3356:6:55", + "nodeType": "YulIdentifier", + "src": "3356:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3372:2:55", + "nodeType": "YulLiteral", + "src": "3372:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3376:1:55", + "nodeType": "YulLiteral", + "src": "3376:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3368:3:55", + "nodeType": "YulIdentifier", + "src": "3368:3:55" + }, + "nativeSrc": "3368:10:55", + "nodeType": "YulFunctionCall", + "src": "3368:10:55" + }, + { + "kind": "number", + "nativeSrc": "3380:1:55", + "nodeType": "YulLiteral", + "src": "3380:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3364:3:55", + "nodeType": "YulIdentifier", + "src": "3364:3:55" + }, + "nativeSrc": "3364:18:55", + "nodeType": "YulFunctionCall", + "src": "3364:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3353:2:55", + "nodeType": "YulIdentifier", + "src": "3353:2:55" + }, + "nativeSrc": "3353:30:55", + "nodeType": "YulFunctionCall", + "src": "3353:30:55" + }, + "nativeSrc": "3350:56:55", + "nodeType": "YulIf", + "src": "3350:56:55" + }, + { + "nativeSrc": "3415:48:55", + "nodeType": "YulAssignment", + "src": "3415:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "3435:6:55", + "nodeType": "YulIdentifier", + "src": "3435:6:55" + }, + { + "kind": "number", + "nativeSrc": "3443:2:55", + "nodeType": "YulLiteral", + "src": "3443:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3431:3:55", + "nodeType": "YulIdentifier", + "src": "3431:3:55" + }, + "nativeSrc": "3431:15:55", + "nodeType": "YulFunctionCall", + "src": "3431:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3452:2:55", + "nodeType": "YulLiteral", + "src": "3452:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3448:3:55", + "nodeType": "YulIdentifier", + "src": "3448:3:55" + }, + "nativeSrc": "3448:7:55", + "nodeType": "YulFunctionCall", + "src": "3448:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3427:3:55", + "nodeType": "YulIdentifier", + "src": "3427:3:55" + }, + "nativeSrc": "3427:29:55", + "nodeType": "YulFunctionCall", + "src": "3427:29:55" + }, + { + "kind": "number", + "nativeSrc": "3458:4:55", + "nodeType": "YulLiteral", + "src": "3458:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3423:3:55", + "nodeType": "YulIdentifier", + "src": "3423:3:55" + }, + "nativeSrc": "3423:40:55", + "nodeType": "YulFunctionCall", + "src": "3423:40:55" + }, + "variableNames": [ + { + "name": "size", + "nativeSrc": "3415:4:55", + "nodeType": "YulIdentifier", + "src": "3415:4:55" + } + ] + } + ] + }, + "name": "array_allocation_size_bytes", + "nativeSrc": "3283:186:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nativeSrc": "3320:6:55", + "nodeType": "YulTypedName", + "src": "3320:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nativeSrc": "3331:4:55", + "nodeType": "YulTypedName", + "src": "3331:4:55", + "type": "" + } + ], + "src": "3283:186:55" + }, + { + "body": { + "nativeSrc": "3526:410:55", + "nodeType": "YulBlock", + "src": "3526:410:55", + "statements": [ + { + "body": { + "nativeSrc": "3575:16:55", + "nodeType": "YulBlock", + "src": "3575:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3584:1:55", + "nodeType": "YulLiteral", + "src": "3584:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3587:1:55", + "nodeType": "YulLiteral", + "src": "3587:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3577:6:55", + "nodeType": "YulIdentifier", + "src": "3577:6:55" + }, + "nativeSrc": "3577:12:55", + "nodeType": "YulFunctionCall", + "src": "3577:12:55" + }, + "nativeSrc": "3577:12:55", + "nodeType": "YulExpressionStatement", + "src": "3577:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3554:6:55", + "nodeType": "YulIdentifier", + "src": "3554:6:55" + }, + { + "kind": "number", + "nativeSrc": "3562:4:55", + "nodeType": "YulLiteral", + "src": "3562:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3550:3:55", + "nodeType": "YulIdentifier", + "src": "3550:3:55" + }, + "nativeSrc": "3550:17:55", + "nodeType": "YulFunctionCall", + "src": "3550:17:55" + }, + { + "name": "end", + "nativeSrc": "3569:3:55", + "nodeType": "YulIdentifier", + "src": "3569:3:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3546:3:55", + "nodeType": "YulIdentifier", + "src": "3546:3:55" + }, + "nativeSrc": "3546:27:55", + "nodeType": "YulFunctionCall", + "src": "3546:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3539:6:55", + "nodeType": "YulIdentifier", + "src": "3539:6:55" + }, + "nativeSrc": "3539:35:55", + "nodeType": "YulFunctionCall", + "src": "3539:35:55" + }, + "nativeSrc": "3536:55:55", + "nodeType": "YulIf", + "src": "3536:55:55" + }, + { + "nativeSrc": "3600:30:55", + "nodeType": "YulVariableDeclaration", + "src": "3600:30:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3623:6:55", + "nodeType": "YulIdentifier", + "src": "3623:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3610:12:55", + "nodeType": "YulIdentifier", + "src": "3610:12:55" + }, + "nativeSrc": "3610:20:55", + "nodeType": "YulFunctionCall", + "src": "3610:20:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3604:2:55", + "nodeType": "YulTypedName", + "src": "3604:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "3639:63:55", + "nodeType": "YulVariableDeclaration", + "src": "3639:63:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3698:2:55", + "nodeType": "YulIdentifier", + "src": "3698:2:55" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "3670:27:55", + "nodeType": "YulIdentifier", + "src": "3670:27:55" + }, + "nativeSrc": "3670:31:55", + "nodeType": "YulFunctionCall", + "src": "3670:31:55" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "3654:15:55", + "nodeType": "YulIdentifier", + "src": "3654:15:55" + }, + "nativeSrc": "3654:48:55", + "nodeType": "YulFunctionCall", + "src": "3654:48:55" + }, + "variables": [ + { + "name": "array_1", + "nativeSrc": "3643:7:55", + "nodeType": "YulTypedName", + "src": "3643:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3718:7:55", + "nodeType": "YulIdentifier", + "src": "3718:7:55" + }, + { + "name": "_1", + "nativeSrc": "3727:2:55", + "nodeType": "YulIdentifier", + "src": "3727:2:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3711:6:55", + "nodeType": "YulIdentifier", + "src": "3711:6:55" + }, + "nativeSrc": "3711:19:55", + "nodeType": "YulFunctionCall", + "src": "3711:19:55" + }, + "nativeSrc": "3711:19:55", + "nodeType": "YulExpressionStatement", + "src": "3711:19:55" + }, + { + "body": { + "nativeSrc": "3778:16:55", + "nodeType": "YulBlock", + "src": "3778:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3787:1:55", + "nodeType": "YulLiteral", + "src": "3787:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3790:1:55", + "nodeType": "YulLiteral", + "src": "3790:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3780:6:55", + "nodeType": "YulIdentifier", + "src": "3780:6:55" + }, + "nativeSrc": "3780:12:55", + "nodeType": "YulFunctionCall", + "src": "3780:12:55" + }, + "nativeSrc": "3780:12:55", + "nodeType": "YulExpressionStatement", + "src": "3780:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3753:6:55", + "nodeType": "YulIdentifier", + "src": "3753:6:55" + }, + { + "name": "_1", + "nativeSrc": "3761:2:55", + "nodeType": "YulIdentifier", + "src": "3761:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3749:3:55", + "nodeType": "YulIdentifier", + "src": "3749:3:55" + }, + "nativeSrc": "3749:15:55", + "nodeType": "YulFunctionCall", + "src": "3749:15:55" + }, + { + "kind": "number", + "nativeSrc": "3766:4:55", + "nodeType": "YulLiteral", + "src": "3766:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3745:3:55", + "nodeType": "YulIdentifier", + "src": "3745:3:55" + }, + "nativeSrc": "3745:26:55", + "nodeType": "YulFunctionCall", + "src": "3745:26:55" + }, + { + "name": "end", + "nativeSrc": "3773:3:55", + "nodeType": "YulIdentifier", + "src": "3773:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3742:2:55", + "nodeType": "YulIdentifier", + "src": "3742:2:55" + }, + "nativeSrc": "3742:35:55", + "nodeType": "YulFunctionCall", + "src": "3742:35:55" + }, + "nativeSrc": "3739:55:55", + "nodeType": "YulIf", + "src": "3739:55:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3820:7:55", + "nodeType": "YulIdentifier", + "src": "3820:7:55" + }, + { + "kind": "number", + "nativeSrc": "3829:4:55", + "nodeType": "YulLiteral", + "src": "3829:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3816:3:55", + "nodeType": "YulIdentifier", + "src": "3816:3:55" + }, + "nativeSrc": "3816:18:55", + "nodeType": "YulFunctionCall", + "src": "3816:18:55" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3840:6:55", + "nodeType": "YulIdentifier", + "src": "3840:6:55" + }, + { + "kind": "number", + "nativeSrc": "3848:4:55", + "nodeType": "YulLiteral", + "src": "3848:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3836:3:55", + "nodeType": "YulIdentifier", + "src": "3836:3:55" + }, + "nativeSrc": "3836:17:55", + "nodeType": "YulFunctionCall", + "src": "3836:17:55" + }, + { + "name": "_1", + "nativeSrc": "3855:2:55", + "nodeType": "YulIdentifier", + "src": "3855:2:55" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3803:12:55", + "nodeType": "YulIdentifier", + "src": "3803:12:55" + }, + "nativeSrc": "3803:55:55", + "nodeType": "YulFunctionCall", + "src": "3803:55:55" + }, + "nativeSrc": "3803:55:55", + "nodeType": "YulExpressionStatement", + "src": "3803:55:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3882:7:55", + "nodeType": "YulIdentifier", + "src": "3882:7:55" + }, + { + "name": "_1", + "nativeSrc": "3891:2:55", + "nodeType": "YulIdentifier", + "src": "3891:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3878:3:55", + "nodeType": "YulIdentifier", + "src": "3878:3:55" + }, + "nativeSrc": "3878:16:55", + "nodeType": "YulFunctionCall", + "src": "3878:16:55" + }, + { + "kind": "number", + "nativeSrc": "3896:4:55", + "nodeType": "YulLiteral", + "src": "3896:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3874:3:55", + "nodeType": "YulIdentifier", + "src": "3874:3:55" + }, + "nativeSrc": "3874:27:55", + "nodeType": "YulFunctionCall", + "src": "3874:27:55" + }, + { + "kind": "number", + "nativeSrc": "3903:1:55", + "nodeType": "YulLiteral", + "src": "3903:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3867:6:55", + "nodeType": "YulIdentifier", + "src": "3867:6:55" + }, + "nativeSrc": "3867:38:55", + "nodeType": "YulFunctionCall", + "src": "3867:38:55" + }, + "nativeSrc": "3867:38:55", + "nodeType": "YulExpressionStatement", + "src": "3867:38:55" + }, + { + "nativeSrc": "3914:16:55", + "nodeType": "YulAssignment", + "src": "3914:16:55", + "value": { + "name": "array_1", + "nativeSrc": "3923:7:55", + "nodeType": "YulIdentifier", + "src": "3923:7:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "3914:5:55", + "nodeType": "YulIdentifier", + "src": "3914:5:55" + } + ] + } + ] + }, + "name": "abi_decode_bytes", + "nativeSrc": "3474:462:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "3500:6:55", + "nodeType": "YulTypedName", + "src": "3500:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "3508:3:55", + "nodeType": "YulTypedName", + "src": "3508:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "3516:5:55", + "nodeType": "YulTypedName", + "src": "3516:5:55", + "type": "" + } + ], + "src": "3474:462:55" + }, + { + "body": { + "nativeSrc": "4071:535:55", + "nodeType": "YulBlock", + "src": "4071:535:55", + "statements": [ + { + "body": { + "nativeSrc": "4118:16:55", + "nodeType": "YulBlock", + "src": "4118:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4127:1:55", + "nodeType": "YulLiteral", + "src": "4127:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4130:1:55", + "nodeType": "YulLiteral", + "src": "4130:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4120:6:55", + "nodeType": "YulIdentifier", + "src": "4120:6:55" + }, + "nativeSrc": "4120:12:55", + "nodeType": "YulFunctionCall", + "src": "4120:12:55" + }, + "nativeSrc": "4120:12:55", + "nodeType": "YulExpressionStatement", + "src": "4120:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4092:7:55", + "nodeType": "YulIdentifier", + "src": "4092:7:55" + }, + { + "name": "headStart", + "nativeSrc": "4101:9:55", + "nodeType": "YulIdentifier", + "src": "4101:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4088:3:55", + "nodeType": "YulIdentifier", + "src": "4088:3:55" + }, + "nativeSrc": "4088:23:55", + "nodeType": "YulFunctionCall", + "src": "4088:23:55" + }, + { + "kind": "number", + "nativeSrc": "4113:3:55", + "nodeType": "YulLiteral", + "src": "4113:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4084:3:55", + "nodeType": "YulIdentifier", + "src": "4084:3:55" + }, + "nativeSrc": "4084:33:55", + "nodeType": "YulFunctionCall", + "src": "4084:33:55" + }, + "nativeSrc": "4081:53:55", + "nodeType": "YulIf", + "src": "4081:53:55" + }, + { + "nativeSrc": "4143:36:55", + "nodeType": "YulVariableDeclaration", + "src": "4143:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4169:9:55", + "nodeType": "YulIdentifier", + "src": "4169:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4156:12:55", + "nodeType": "YulIdentifier", + "src": "4156:12:55" + }, + "nativeSrc": "4156:23:55", + "nodeType": "YulFunctionCall", + "src": "4156:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "4147:5:55", + "nodeType": "YulTypedName", + "src": "4147:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4213:5:55", + "nodeType": "YulIdentifier", + "src": "4213:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4188:24:55", + "nodeType": "YulIdentifier", + "src": "4188:24:55" + }, + "nativeSrc": "4188:31:55", + "nodeType": "YulFunctionCall", + "src": "4188:31:55" + }, + "nativeSrc": "4188:31:55", + "nodeType": "YulExpressionStatement", + "src": "4188:31:55" + }, + { + "nativeSrc": "4228:15:55", + "nodeType": "YulAssignment", + "src": "4228:15:55", + "value": { + "name": "value", + "nativeSrc": "4238:5:55", + "nodeType": "YulIdentifier", + "src": "4238:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4228:6:55", + "nodeType": "YulIdentifier", + "src": "4228:6:55" + } + ] + }, + { + "nativeSrc": "4252:47:55", + "nodeType": "YulVariableDeclaration", + "src": "4252:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4284:9:55", + "nodeType": "YulIdentifier", + "src": "4284:9:55" + }, + { + "kind": "number", + "nativeSrc": "4295:2:55", + "nodeType": "YulLiteral", + "src": "4295:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4280:3:55", + "nodeType": "YulIdentifier", + "src": "4280:3:55" + }, + "nativeSrc": "4280:18:55", + "nodeType": "YulFunctionCall", + "src": "4280:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4267:12:55", + "nodeType": "YulIdentifier", + "src": "4267:12:55" + }, + "nativeSrc": "4267:32:55", + "nodeType": "YulFunctionCall", + "src": "4267:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "4256:7:55", + "nodeType": "YulTypedName", + "src": "4256:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "4333:7:55", + "nodeType": "YulIdentifier", + "src": "4333:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4308:24:55", + "nodeType": "YulIdentifier", + "src": "4308:24:55" + }, + "nativeSrc": "4308:33:55", + "nodeType": "YulFunctionCall", + "src": "4308:33:55" + }, + "nativeSrc": "4308:33:55", + "nodeType": "YulExpressionStatement", + "src": "4308:33:55" + }, + { + "nativeSrc": "4350:17:55", + "nodeType": "YulAssignment", + "src": "4350:17:55", + "value": { + "name": "value_1", + "nativeSrc": "4360:7:55", + "nodeType": "YulIdentifier", + "src": "4360:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4350:6:55", + "nodeType": "YulIdentifier", + "src": "4350:6:55" + } + ] + }, + { + "nativeSrc": "4376:42:55", + "nodeType": "YulAssignment", + "src": "4376:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4403:9:55", + "nodeType": "YulIdentifier", + "src": "4403:9:55" + }, + { + "kind": "number", + "nativeSrc": "4414:2:55", + "nodeType": "YulLiteral", + "src": "4414:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4399:3:55", + "nodeType": "YulIdentifier", + "src": "4399:3:55" + }, + "nativeSrc": "4399:18:55", + "nodeType": "YulFunctionCall", + "src": "4399:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4386:12:55", + "nodeType": "YulIdentifier", + "src": "4386:12:55" + }, + "nativeSrc": "4386:32:55", + "nodeType": "YulFunctionCall", + "src": "4386:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4376:6:55", + "nodeType": "YulIdentifier", + "src": "4376:6:55" + } + ] + }, + { + "nativeSrc": "4427:46:55", + "nodeType": "YulVariableDeclaration", + "src": "4427:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4458:9:55", + "nodeType": "YulIdentifier", + "src": "4458:9:55" + }, + { + "kind": "number", + "nativeSrc": "4469:2:55", + "nodeType": "YulLiteral", + "src": "4469:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4454:3:55", + "nodeType": "YulIdentifier", + "src": "4454:3:55" + }, + "nativeSrc": "4454:18:55", + "nodeType": "YulFunctionCall", + "src": "4454:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4441:12:55", + "nodeType": "YulIdentifier", + "src": "4441:12:55" + }, + "nativeSrc": "4441:32:55", + "nodeType": "YulFunctionCall", + "src": "4441:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4431:6:55", + "nodeType": "YulTypedName", + "src": "4431:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4516:16:55", + "nodeType": "YulBlock", + "src": "4516:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4525:1:55", + "nodeType": "YulLiteral", + "src": "4525:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4528:1:55", + "nodeType": "YulLiteral", + "src": "4528:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4518:6:55", + "nodeType": "YulIdentifier", + "src": "4518:6:55" + }, + "nativeSrc": "4518:12:55", + "nodeType": "YulFunctionCall", + "src": "4518:12:55" + }, + "nativeSrc": "4518:12:55", + "nodeType": "YulExpressionStatement", + "src": "4518:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4488:6:55", + "nodeType": "YulIdentifier", + "src": "4488:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4504:2:55", + "nodeType": "YulLiteral", + "src": "4504:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4508:1:55", + "nodeType": "YulLiteral", + "src": "4508:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4500:3:55", + "nodeType": "YulIdentifier", + "src": "4500:3:55" + }, + "nativeSrc": "4500:10:55", + "nodeType": "YulFunctionCall", + "src": "4500:10:55" + }, + { + "kind": "number", + "nativeSrc": "4512:1:55", + "nodeType": "YulLiteral", + "src": "4512:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4496:3:55", + "nodeType": "YulIdentifier", + "src": "4496:3:55" + }, + "nativeSrc": "4496:18:55", + "nodeType": "YulFunctionCall", + "src": "4496:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4485:2:55", + "nodeType": "YulIdentifier", + "src": "4485:2:55" + }, + "nativeSrc": "4485:30:55", + "nodeType": "YulFunctionCall", + "src": "4485:30:55" + }, + "nativeSrc": "4482:50:55", + "nodeType": "YulIf", + "src": "4482:50:55" + }, + { + "nativeSrc": "4541:59:55", + "nodeType": "YulAssignment", + "src": "4541:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4572:9:55", + "nodeType": "YulIdentifier", + "src": "4572:9:55" + }, + { + "name": "offset", + "nativeSrc": "4583:6:55", + "nodeType": "YulIdentifier", + "src": "4583:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4568:3:55", + "nodeType": "YulIdentifier", + "src": "4568:3:55" + }, + "nativeSrc": "4568:22:55", + "nodeType": "YulFunctionCall", + "src": "4568:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "4592:7:55", + "nodeType": "YulIdentifier", + "src": "4592:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "4551:16:55", + "nodeType": "YulIdentifier", + "src": "4551:16:55" + }, + "nativeSrc": "4551:49:55", + "nodeType": "YulFunctionCall", + "src": "4551:49:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "4541:6:55", + "nodeType": "YulIdentifier", + "src": "4541:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nativeSrc": "3941:665:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4013:9:55", + "nodeType": "YulTypedName", + "src": "4013:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4024:7:55", + "nodeType": "YulTypedName", + "src": "4024:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4036:6:55", + "nodeType": "YulTypedName", + "src": "4036:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4044:6:55", + "nodeType": "YulTypedName", + "src": "4044:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4052:6:55", + "nodeType": "YulTypedName", + "src": "4052:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "4060:6:55", + "nodeType": "YulTypedName", + "src": "4060:6:55", + "type": "" + } + ], + "src": "3941:665:55" + }, + { + "body": { + "nativeSrc": "4710:103:55", + "nodeType": "YulBlock", + "src": "4710:103:55", + "statements": [ + { + "nativeSrc": "4720:26:55", + "nodeType": "YulAssignment", + "src": "4720:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4732:9:55", + "nodeType": "YulIdentifier", + "src": "4732:9:55" + }, + { + "kind": "number", + "nativeSrc": "4743:2:55", + "nodeType": "YulLiteral", + "src": "4743:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4728:3:55", + "nodeType": "YulIdentifier", + "src": "4728:3:55" + }, + "nativeSrc": "4728:18:55", + "nodeType": "YulFunctionCall", + "src": "4728:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4720:4:55", + "nodeType": "YulIdentifier", + "src": "4720:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4762:9:55", + "nodeType": "YulIdentifier", + "src": "4762:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4777:6:55", + "nodeType": "YulIdentifier", + "src": "4777:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4789:3:55", + "nodeType": "YulLiteral", + "src": "4789:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "4794:10:55", + "nodeType": "YulLiteral", + "src": "4794:10:55", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4785:3:55", + "nodeType": "YulIdentifier", + "src": "4785:3:55" + }, + "nativeSrc": "4785:20:55", + "nodeType": "YulFunctionCall", + "src": "4785:20:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4773:3:55", + "nodeType": "YulIdentifier", + "src": "4773:3:55" + }, + "nativeSrc": "4773:33:55", + "nodeType": "YulFunctionCall", + "src": "4773:33:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4755:6:55", + "nodeType": "YulIdentifier", + "src": "4755:6:55" + }, + "nativeSrc": "4755:52:55", + "nodeType": "YulFunctionCall", + "src": "4755:52:55" + }, + "nativeSrc": "4755:52:55", + "nodeType": "YulExpressionStatement", + "src": "4755:52:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", + "nativeSrc": "4611:202:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4679:9:55", + "nodeType": "YulTypedName", + "src": "4679:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4690:6:55", + "nodeType": "YulTypedName", + "src": "4690:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4701:4:55", + "nodeType": "YulTypedName", + "src": "4701:4:55", + "type": "" + } + ], + "src": "4611:202:55" + }, + { + "body": { + "nativeSrc": "4898:241:55", + "nodeType": "YulBlock", + "src": "4898:241:55", + "statements": [ + { + "body": { + "nativeSrc": "4944:16:55", + "nodeType": "YulBlock", + "src": "4944:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4953:1:55", + "nodeType": "YulLiteral", + "src": "4953:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4956:1:55", + "nodeType": "YulLiteral", + "src": "4956:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4946:6:55", + "nodeType": "YulIdentifier", + "src": "4946:6:55" + }, + "nativeSrc": "4946:12:55", + "nodeType": "YulFunctionCall", + "src": "4946:12:55" + }, + "nativeSrc": "4946:12:55", + "nodeType": "YulExpressionStatement", + "src": "4946:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4919:7:55", + "nodeType": "YulIdentifier", + "src": "4919:7:55" + }, + { + "name": "headStart", + "nativeSrc": "4928:9:55", + "nodeType": "YulIdentifier", + "src": "4928:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4915:3:55", + "nodeType": "YulIdentifier", + "src": "4915:3:55" + }, + "nativeSrc": "4915:23:55", + "nodeType": "YulFunctionCall", + "src": "4915:23:55" + }, + { + "kind": "number", + "nativeSrc": "4940:2:55", + "nodeType": "YulLiteral", + "src": "4940:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4911:3:55", + "nodeType": "YulIdentifier", + "src": "4911:3:55" + }, + "nativeSrc": "4911:32:55", + "nodeType": "YulFunctionCall", + "src": "4911:32:55" + }, + "nativeSrc": "4908:52:55", + "nodeType": "YulIf", + "src": "4908:52:55" + }, + { + "nativeSrc": "4969:37:55", + "nodeType": "YulVariableDeclaration", + "src": "4969:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4996:9:55", + "nodeType": "YulIdentifier", + "src": "4996:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4983:12:55", + "nodeType": "YulIdentifier", + "src": "4983:12:55" + }, + "nativeSrc": "4983:23:55", + "nodeType": "YulFunctionCall", + "src": "4983:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4973:6:55", + "nodeType": "YulTypedName", + "src": "4973:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5049:16:55", + "nodeType": "YulBlock", + "src": "5049:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5058:1:55", + "nodeType": "YulLiteral", + "src": "5058:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5061:1:55", + "nodeType": "YulLiteral", + "src": "5061:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5051:6:55", + "nodeType": "YulIdentifier", + "src": "5051:6:55" + }, + "nativeSrc": "5051:12:55", + "nodeType": "YulFunctionCall", + "src": "5051:12:55" + }, + "nativeSrc": "5051:12:55", + "nodeType": "YulExpressionStatement", + "src": "5051:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5021:6:55", + "nodeType": "YulIdentifier", + "src": "5021:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5037:2:55", + "nodeType": "YulLiteral", + "src": "5037:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5041:1:55", + "nodeType": "YulLiteral", + "src": "5041:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5033:3:55", + "nodeType": "YulIdentifier", + "src": "5033:3:55" + }, + "nativeSrc": "5033:10:55", + "nodeType": "YulFunctionCall", + "src": "5033:10:55" + }, + { + "kind": "number", + "nativeSrc": "5045:1:55", + "nodeType": "YulLiteral", + "src": "5045:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5029:3:55", + "nodeType": "YulIdentifier", + "src": "5029:3:55" + }, + "nativeSrc": "5029:18:55", + "nodeType": "YulFunctionCall", + "src": "5029:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5018:2:55", + "nodeType": "YulIdentifier", + "src": "5018:2:55" + }, + "nativeSrc": "5018:30:55", + "nodeType": "YulFunctionCall", + "src": "5018:30:55" + }, + "nativeSrc": "5015:50:55", + "nodeType": "YulIf", + "src": "5015:50:55" + }, + { + "nativeSrc": "5074:59:55", + "nodeType": "YulAssignment", + "src": "5074:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5105:9:55", + "nodeType": "YulIdentifier", + "src": "5105:9:55" + }, + { + "name": "offset", + "nativeSrc": "5116:6:55", + "nodeType": "YulIdentifier", + "src": "5116:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5101:3:55", + "nodeType": "YulIdentifier", + "src": "5101:3:55" + }, + "nativeSrc": "5101:22:55", + "nodeType": "YulFunctionCall", + "src": "5101:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "5125:7:55", + "nodeType": "YulIdentifier", + "src": "5125:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "5084:16:55", + "nodeType": "YulIdentifier", + "src": "5084:16:55" + }, + "nativeSrc": "5084:49:55", + "nodeType": "YulFunctionCall", + "src": "5084:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5074:6:55", + "nodeType": "YulIdentifier", + "src": "5074:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "4818:321:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4864:9:55", + "nodeType": "YulTypedName", + "src": "4864:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4875:7:55", + "nodeType": "YulTypedName", + "src": "4875:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4887:6:55", + "nodeType": "YulTypedName", + "src": "4887:6:55", + "type": "" + } + ], + "src": "4818:321:55" + }, + { + "body": { + "nativeSrc": "5245:76:55", + "nodeType": "YulBlock", + "src": "5245:76:55", + "statements": [ + { + "nativeSrc": "5255:26:55", + "nodeType": "YulAssignment", + "src": "5255:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5267:9:55", + "nodeType": "YulIdentifier", + "src": "5267:9:55" + }, + { + "kind": "number", + "nativeSrc": "5278:2:55", + "nodeType": "YulLiteral", + "src": "5278:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5263:3:55", + "nodeType": "YulIdentifier", + "src": "5263:3:55" + }, + "nativeSrc": "5263:18:55", + "nodeType": "YulFunctionCall", + "src": "5263:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5255:4:55", + "nodeType": "YulIdentifier", + "src": "5255:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5297:9:55", + "nodeType": "YulIdentifier", + "src": "5297:9:55" + }, + { + "name": "value0", + "nativeSrc": "5308:6:55", + "nodeType": "YulIdentifier", + "src": "5308:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5290:6:55", + "nodeType": "YulIdentifier", + "src": "5290:6:55" + }, + "nativeSrc": "5290:25:55", + "nodeType": "YulFunctionCall", + "src": "5290:25:55" + }, + "nativeSrc": "5290:25:55", + "nodeType": "YulExpressionStatement", + "src": "5290:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5144:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5214:9:55", + "nodeType": "YulTypedName", + "src": "5214:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5225:6:55", + "nodeType": "YulTypedName", + "src": "5225:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5236:4:55", + "nodeType": "YulTypedName", + "src": "5236:4:55", + "type": "" + } + ], + "src": "5144:177:55" + }, + { + "body": { + "nativeSrc": "5446:352:55", + "nodeType": "YulBlock", + "src": "5446:352:55", + "statements": [ + { + "body": { + "nativeSrc": "5492:16:55", + "nodeType": "YulBlock", + "src": "5492:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5501:1:55", + "nodeType": "YulLiteral", + "src": "5501:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5504:1:55", + "nodeType": "YulLiteral", + "src": "5504:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5494:6:55", + "nodeType": "YulIdentifier", + "src": "5494:6:55" + }, + "nativeSrc": "5494:12:55", + "nodeType": "YulFunctionCall", + "src": "5494:12:55" + }, + "nativeSrc": "5494:12:55", + "nodeType": "YulExpressionStatement", + "src": "5494:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5467:7:55", + "nodeType": "YulIdentifier", + "src": "5467:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5476:9:55", + "nodeType": "YulIdentifier", + "src": "5476:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5463:3:55", + "nodeType": "YulIdentifier", + "src": "5463:3:55" + }, + "nativeSrc": "5463:23:55", + "nodeType": "YulFunctionCall", + "src": "5463:23:55" + }, + { + "kind": "number", + "nativeSrc": "5488:2:55", + "nodeType": "YulLiteral", + "src": "5488:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5459:3:55", + "nodeType": "YulIdentifier", + "src": "5459:3:55" + }, + "nativeSrc": "5459:32:55", + "nodeType": "YulFunctionCall", + "src": "5459:32:55" + }, + "nativeSrc": "5456:52:55", + "nodeType": "YulIf", + "src": "5456:52:55" + }, + { + "nativeSrc": "5517:36:55", + "nodeType": "YulVariableDeclaration", + "src": "5517:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5543:9:55", + "nodeType": "YulIdentifier", + "src": "5543:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5530:12:55", + "nodeType": "YulIdentifier", + "src": "5530:12:55" + }, + "nativeSrc": "5530:23:55", + "nodeType": "YulFunctionCall", + "src": "5530:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5521:5:55", + "nodeType": "YulTypedName", + "src": "5521:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5587:5:55", + "nodeType": "YulIdentifier", + "src": "5587:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5562:24:55", + "nodeType": "YulIdentifier", + "src": "5562:24:55" + }, + "nativeSrc": "5562:31:55", + "nodeType": "YulFunctionCall", + "src": "5562:31:55" + }, + "nativeSrc": "5562:31:55", + "nodeType": "YulExpressionStatement", + "src": "5562:31:55" + }, + { + "nativeSrc": "5602:15:55", + "nodeType": "YulAssignment", + "src": "5602:15:55", + "value": { + "name": "value", + "nativeSrc": "5612:5:55", + "nodeType": "YulIdentifier", + "src": "5612:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5602:6:55", + "nodeType": "YulIdentifier", + "src": "5602:6:55" + } + ] + }, + { + "nativeSrc": "5626:47:55", + "nodeType": "YulVariableDeclaration", + "src": "5626:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5658:9:55", + "nodeType": "YulIdentifier", + "src": "5658:9:55" + }, + { + "kind": "number", + "nativeSrc": "5669:2:55", + "nodeType": "YulLiteral", + "src": "5669:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5654:3:55", + "nodeType": "YulIdentifier", + "src": "5654:3:55" + }, + "nativeSrc": "5654:18:55", + "nodeType": "YulFunctionCall", + "src": "5654:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5641:12:55", + "nodeType": "YulIdentifier", + "src": "5641:12:55" + }, + "nativeSrc": "5641:32:55", + "nodeType": "YulFunctionCall", + "src": "5641:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "5630:7:55", + "nodeType": "YulTypedName", + "src": "5630:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "5707:7:55", + "nodeType": "YulIdentifier", + "src": "5707:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5682:24:55", + "nodeType": "YulIdentifier", + "src": "5682:24:55" + }, + "nativeSrc": "5682:33:55", + "nodeType": "YulFunctionCall", + "src": "5682:33:55" + }, + "nativeSrc": "5682:33:55", + "nodeType": "YulExpressionStatement", + "src": "5682:33:55" + }, + { + "nativeSrc": "5724:17:55", + "nodeType": "YulAssignment", + "src": "5724:17:55", + "value": { + "name": "value_1", + "nativeSrc": "5734:7:55", + "nodeType": "YulIdentifier", + "src": "5734:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5724:6:55", + "nodeType": "YulIdentifier", + "src": "5724:6:55" + } + ] + }, + { + "nativeSrc": "5750:42:55", + "nodeType": "YulAssignment", + "src": "5750:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5777:9:55", + "nodeType": "YulIdentifier", + "src": "5777:9:55" + }, + { + "kind": "number", + "nativeSrc": "5788:2:55", + "nodeType": "YulLiteral", + "src": "5788:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5773:3:55", + "nodeType": "YulIdentifier", + "src": "5773:3:55" + }, + "nativeSrc": "5773:18:55", + "nodeType": "YulFunctionCall", + "src": "5773:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5760:12:55", + "nodeType": "YulIdentifier", + "src": "5760:12:55" + }, + "nativeSrc": "5760:32:55", + "nodeType": "YulFunctionCall", + "src": "5760:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5750:6:55", + "nodeType": "YulIdentifier", + "src": "5750:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC721_$4914t_addresst_uint256", + "nativeSrc": "5326:472:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5396:9:55", + "nodeType": "YulTypedName", + "src": "5396:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5407:7:55", + "nodeType": "YulTypedName", + "src": "5407:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5419:6:55", + "nodeType": "YulTypedName", + "src": "5419:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5427:6:55", + "nodeType": "YulTypedName", + "src": "5427:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5435:6:55", + "nodeType": "YulTypedName", + "src": "5435:6:55", + "type": "" + } + ], + "src": "5326:472:55" + }, + { + "body": { + "nativeSrc": "5866:879:55", + "nodeType": "YulBlock", + "src": "5866:879:55", + "statements": [ + { + "body": { + "nativeSrc": "5915:16:55", + "nodeType": "YulBlock", + "src": "5915:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5924:1:55", + "nodeType": "YulLiteral", + "src": "5924:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5927:1:55", + "nodeType": "YulLiteral", + "src": "5927:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5917:6:55", + "nodeType": "YulIdentifier", + "src": "5917:6:55" + }, + "nativeSrc": "5917:12:55", + "nodeType": "YulFunctionCall", + "src": "5917:12:55" + }, + "nativeSrc": "5917:12:55", + "nodeType": "YulExpressionStatement", + "src": "5917:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5894:6:55", + "nodeType": "YulIdentifier", + "src": "5894:6:55" + }, + { + "kind": "number", + "nativeSrc": "5902:4:55", + "nodeType": "YulLiteral", + "src": "5902:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5890:3:55", + "nodeType": "YulIdentifier", + "src": "5890:3:55" + }, + "nativeSrc": "5890:17:55", + "nodeType": "YulFunctionCall", + "src": "5890:17:55" + }, + { + "name": "end", + "nativeSrc": "5909:3:55", + "nodeType": "YulIdentifier", + "src": "5909:3:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5886:3:55", + "nodeType": "YulIdentifier", + "src": "5886:3:55" + }, + "nativeSrc": "5886:27:55", + "nodeType": "YulFunctionCall", + "src": "5886:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5879:6:55", + "nodeType": "YulIdentifier", + "src": "5879:6:55" + }, + "nativeSrc": "5879:35:55", + "nodeType": "YulFunctionCall", + "src": "5879:35:55" + }, + "nativeSrc": "5876:55:55", + "nodeType": "YulIf", + "src": "5876:55:55" + }, + { + "nativeSrc": "5940:30:55", + "nodeType": "YulVariableDeclaration", + "src": "5940:30:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5963:6:55", + "nodeType": "YulIdentifier", + "src": "5963:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5950:12:55", + "nodeType": "YulIdentifier", + "src": "5950:12:55" + }, + "nativeSrc": "5950:20:55", + "nodeType": "YulFunctionCall", + "src": "5950:20:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "5944:2:55", + "nodeType": "YulTypedName", + "src": "5944:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "5979:14:55", + "nodeType": "YulVariableDeclaration", + "src": "5979:14:55", + "value": { + "kind": "number", + "nativeSrc": "5989:4:55", + "nodeType": "YulLiteral", + "src": "5989:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "5983:2:55", + "nodeType": "YulTypedName", + "src": "5983:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6002:28:55", + "nodeType": "YulVariableDeclaration", + "src": "6002:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6020:2:55", + "nodeType": "YulLiteral", + "src": "6020:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6024:1:55", + "nodeType": "YulLiteral", + "src": "6024:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6016:3:55", + "nodeType": "YulIdentifier", + "src": "6016:3:55" + }, + "nativeSrc": "6016:10:55", + "nodeType": "YulFunctionCall", + "src": "6016:10:55" + }, + { + "kind": "number", + "nativeSrc": "6028:1:55", + "nodeType": "YulLiteral", + "src": "6028:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6012:3:55", + "nodeType": "YulIdentifier", + "src": "6012:3:55" + }, + "nativeSrc": "6012:18:55", + "nodeType": "YulFunctionCall", + "src": "6012:18:55" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "6006:2:55", + "nodeType": "YulTypedName", + "src": "6006:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6053:22:55", + "nodeType": "YulBlock", + "src": "6053:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "6055:16:55", + "nodeType": "YulIdentifier", + "src": "6055:16:55" + }, + "nativeSrc": "6055:18:55", + "nodeType": "YulFunctionCall", + "src": "6055:18:55" + }, + "nativeSrc": "6055:18:55", + "nodeType": "YulExpressionStatement", + "src": "6055:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6045:2:55", + "nodeType": "YulIdentifier", + "src": "6045:2:55" + }, + { + "name": "_3", + "nativeSrc": "6049:2:55", + "nodeType": "YulIdentifier", + "src": "6049:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6042:2:55", + "nodeType": "YulIdentifier", + "src": "6042:2:55" + }, + "nativeSrc": "6042:10:55", + "nodeType": "YulFunctionCall", + "src": "6042:10:55" + }, + "nativeSrc": "6039:36:55", + "nodeType": "YulIf", + "src": "6039:36:55" + }, + { + "nativeSrc": "6084:20:55", + "nodeType": "YulVariableDeclaration", + "src": "6084:20:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6098:1:55", + "nodeType": "YulLiteral", + "src": "6098:1:55", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nativeSrc": "6101:2:55", + "nodeType": "YulIdentifier", + "src": "6101:2:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6094:3:55", + "nodeType": "YulIdentifier", + "src": "6094:3:55" + }, + "nativeSrc": "6094:10:55", + "nodeType": "YulFunctionCall", + "src": "6094:10:55" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "6088:2:55", + "nodeType": "YulTypedName", + "src": "6088:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6113:39:55", + "nodeType": "YulVariableDeclaration", + "src": "6113:39:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_4", + "nativeSrc": "6144:2:55", + "nodeType": "YulIdentifier", + "src": "6144:2:55" + }, + { + "name": "_2", + "nativeSrc": "6148:2:55", + "nodeType": "YulIdentifier", + "src": "6148:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6140:3:55", + "nodeType": "YulIdentifier", + "src": "6140:3:55" + }, + "nativeSrc": "6140:11:55", + "nodeType": "YulFunctionCall", + "src": "6140:11:55" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "6124:15:55", + "nodeType": "YulIdentifier", + "src": "6124:15:55" + }, + "nativeSrc": "6124:28:55", + "nodeType": "YulFunctionCall", + "src": "6124:28:55" + }, + "variables": [ + { + "name": "dst", + "nativeSrc": "6117:3:55", + "nodeType": "YulTypedName", + "src": "6117:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6161:16:55", + "nodeType": "YulVariableDeclaration", + "src": "6161:16:55", + "value": { + "name": "dst", + "nativeSrc": "6174:3:55", + "nodeType": "YulIdentifier", + "src": "6174:3:55" + }, + "variables": [ + { + "name": "dst_1", + "nativeSrc": "6165:5:55", + "nodeType": "YulTypedName", + "src": "6165:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6193:3:55", + "nodeType": "YulIdentifier", + "src": "6193:3:55" + }, + { + "name": "_1", + "nativeSrc": "6198:2:55", + "nodeType": "YulIdentifier", + "src": "6198:2:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6186:6:55", + "nodeType": "YulIdentifier", + "src": "6186:6:55" + }, + "nativeSrc": "6186:15:55", + "nodeType": "YulFunctionCall", + "src": "6186:15:55" + }, + "nativeSrc": "6186:15:55", + "nodeType": "YulExpressionStatement", + "src": "6186:15:55" + }, + { + "nativeSrc": "6210:19:55", + "nodeType": "YulAssignment", + "src": "6210:19:55", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6221:3:55", + "nodeType": "YulIdentifier", + "src": "6221:3:55" + }, + { + "name": "_2", + "nativeSrc": "6226:2:55", + "nodeType": "YulIdentifier", + "src": "6226:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6217:3:55", + "nodeType": "YulIdentifier", + "src": "6217:3:55" + }, + "nativeSrc": "6217:12:55", + "nodeType": "YulFunctionCall", + "src": "6217:12:55" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6210:3:55", + "nodeType": "YulIdentifier", + "src": "6210:3:55" + } + ] + }, + { + "nativeSrc": "6238:38:55", + "nodeType": "YulVariableDeclaration", + "src": "6238:38:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6260:6:55", + "nodeType": "YulIdentifier", + "src": "6260:6:55" + }, + { + "name": "_4", + "nativeSrc": "6268:2:55", + "nodeType": "YulIdentifier", + "src": "6268:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6256:3:55", + "nodeType": "YulIdentifier", + "src": "6256:3:55" + }, + "nativeSrc": "6256:15:55", + "nodeType": "YulFunctionCall", + "src": "6256:15:55" + }, + { + "name": "_2", + "nativeSrc": "6273:2:55", + "nodeType": "YulIdentifier", + "src": "6273:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6252:3:55", + "nodeType": "YulIdentifier", + "src": "6252:3:55" + }, + "nativeSrc": "6252:24:55", + "nodeType": "YulFunctionCall", + "src": "6252:24:55" + }, + "variables": [ + { + "name": "srcEnd", + "nativeSrc": "6242:6:55", + "nodeType": "YulTypedName", + "src": "6242:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6304:16:55", + "nodeType": "YulBlock", + "src": "6304:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6313:1:55", + "nodeType": "YulLiteral", + "src": "6313:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6316:1:55", + "nodeType": "YulLiteral", + "src": "6316:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6306:6:55", + "nodeType": "YulIdentifier", + "src": "6306:6:55" + }, + "nativeSrc": "6306:12:55", + "nodeType": "YulFunctionCall", + "src": "6306:12:55" + }, + "nativeSrc": "6306:12:55", + "nodeType": "YulExpressionStatement", + "src": "6306:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nativeSrc": "6291:6:55", + "nodeType": "YulIdentifier", + "src": "6291:6:55" + }, + { + "name": "end", + "nativeSrc": "6299:3:55", + "nodeType": "YulIdentifier", + "src": "6299:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6288:2:55", + "nodeType": "YulIdentifier", + "src": "6288:2:55" + }, + "nativeSrc": "6288:15:55", + "nodeType": "YulFunctionCall", + "src": "6288:15:55" + }, + "nativeSrc": "6285:35:55", + "nodeType": "YulIf", + "src": "6285:35:55" + }, + { + "nativeSrc": "6329:26:55", + "nodeType": "YulVariableDeclaration", + "src": "6329:26:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6344:6:55", + "nodeType": "YulIdentifier", + "src": "6344:6:55" + }, + { + "name": "_2", + "nativeSrc": "6352:2:55", + "nodeType": "YulIdentifier", + "src": "6352:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6340:3:55", + "nodeType": "YulIdentifier", + "src": "6340:3:55" + }, + "nativeSrc": "6340:15:55", + "nodeType": "YulFunctionCall", + "src": "6340:15:55" + }, + "variables": [ + { + "name": "src", + "nativeSrc": "6333:3:55", + "nodeType": "YulTypedName", + "src": "6333:3:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6420:296:55", + "nodeType": "YulBlock", + "src": "6420:296:55", + "statements": [ + { + "nativeSrc": "6434:36:55", + "nodeType": "YulVariableDeclaration", + "src": "6434:36:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6466:3:55", + "nodeType": "YulIdentifier", + "src": "6466:3:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6453:12:55", + "nodeType": "YulIdentifier", + "src": "6453:12:55" + }, + "nativeSrc": "6453:17:55", + "nodeType": "YulFunctionCall", + "src": "6453:17:55" + }, + "variables": [ + { + "name": "innerOffset", + "nativeSrc": "6438:11:55", + "nodeType": "YulTypedName", + "src": "6438:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6518:74:55", + "nodeType": "YulBlock", + "src": "6518:74:55", + "statements": [ + { + "nativeSrc": "6536:11:55", + "nodeType": "YulVariableDeclaration", + "src": "6536:11:55", + "value": { + "kind": "number", + "nativeSrc": "6546:1:55", + "nodeType": "YulLiteral", + "src": "6546:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nativeSrc": "6540:2:55", + "nodeType": "YulTypedName", + "src": "6540:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nativeSrc": "6571:2:55", + "nodeType": "YulIdentifier", + "src": "6571:2:55" + }, + { + "name": "_5", + "nativeSrc": "6575:2:55", + "nodeType": "YulIdentifier", + "src": "6575:2:55" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6564:6:55", + "nodeType": "YulIdentifier", + "src": "6564:6:55" + }, + "nativeSrc": "6564:14:55", + "nodeType": "YulFunctionCall", + "src": "6564:14:55" + }, + "nativeSrc": "6564:14:55", + "nodeType": "YulExpressionStatement", + "src": "6564:14:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nativeSrc": "6489:11:55", + "nodeType": "YulIdentifier", + "src": "6489:11:55" + }, + { + "name": "_3", + "nativeSrc": "6502:2:55", + "nodeType": "YulIdentifier", + "src": "6502:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6486:2:55", + "nodeType": "YulIdentifier", + "src": "6486:2:55" + }, + "nativeSrc": "6486:19:55", + "nodeType": "YulFunctionCall", + "src": "6486:19:55" + }, + "nativeSrc": "6483:109:55", + "nodeType": "YulIf", + "src": "6483:109:55" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6612:3:55", + "nodeType": "YulIdentifier", + "src": "6612:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6642:6:55", + "nodeType": "YulIdentifier", + "src": "6642:6:55" + }, + { + "name": "innerOffset", + "nativeSrc": "6650:11:55", + "nodeType": "YulIdentifier", + "src": "6650:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6638:3:55", + "nodeType": "YulIdentifier", + "src": "6638:3:55" + }, + "nativeSrc": "6638:24:55", + "nodeType": "YulFunctionCall", + "src": "6638:24:55" + }, + { + "name": "_2", + "nativeSrc": "6664:2:55", + "nodeType": "YulIdentifier", + "src": "6664:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6634:3:55", + "nodeType": "YulIdentifier", + "src": "6634:3:55" + }, + "nativeSrc": "6634:33:55", + "nodeType": "YulFunctionCall", + "src": "6634:33:55" + }, + { + "name": "end", + "nativeSrc": "6669:3:55", + "nodeType": "YulIdentifier", + "src": "6669:3:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "6617:16:55", + "nodeType": "YulIdentifier", + "src": "6617:16:55" + }, + "nativeSrc": "6617:56:55", + "nodeType": "YulFunctionCall", + "src": "6617:56:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6605:6:55", + "nodeType": "YulIdentifier", + "src": "6605:6:55" + }, + "nativeSrc": "6605:69:55", + "nodeType": "YulFunctionCall", + "src": "6605:69:55" + }, + "nativeSrc": "6605:69:55", + "nodeType": "YulExpressionStatement", + "src": "6605:69:55" + }, + { + "nativeSrc": "6687:19:55", + "nodeType": "YulAssignment", + "src": "6687:19:55", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6698:3:55", + "nodeType": "YulIdentifier", + "src": "6698:3:55" + }, + { + "name": "_2", + "nativeSrc": "6703:2:55", + "nodeType": "YulIdentifier", + "src": "6703:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6694:3:55", + "nodeType": "YulIdentifier", + "src": "6694:3:55" + }, + "nativeSrc": "6694:12:55", + "nodeType": "YulFunctionCall", + "src": "6694:12:55" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6687:3:55", + "nodeType": "YulIdentifier", + "src": "6687:3:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6375:3:55", + "nodeType": "YulIdentifier", + "src": "6375:3:55" + }, + { + "name": "srcEnd", + "nativeSrc": "6380:6:55", + "nodeType": "YulIdentifier", + "src": "6380:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6372:2:55", + "nodeType": "YulIdentifier", + "src": "6372:2:55" + }, + "nativeSrc": "6372:15:55", + "nodeType": "YulFunctionCall", + "src": "6372:15:55" + }, + "nativeSrc": "6364:352:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6388:23:55", + "nodeType": "YulBlock", + "src": "6388:23:55", + "statements": [ + { + "nativeSrc": "6390:19:55", + "nodeType": "YulAssignment", + "src": "6390:19:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6401:3:55", + "nodeType": "YulIdentifier", + "src": "6401:3:55" + }, + { + "name": "_2", + "nativeSrc": "6406:2:55", + "nodeType": "YulIdentifier", + "src": "6406:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6397:3:55", + "nodeType": "YulIdentifier", + "src": "6397:3:55" + }, + "nativeSrc": "6397:12:55", + "nodeType": "YulFunctionCall", + "src": "6397:12:55" + }, + "variableNames": [ + { + "name": "src", + "nativeSrc": "6390:3:55", + "nodeType": "YulIdentifier", + "src": "6390:3:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6368:3:55", + "nodeType": "YulBlock", + "src": "6368:3:55", + "statements": [] + }, + "src": "6364:352:55" + }, + { + "nativeSrc": "6725:14:55", + "nodeType": "YulAssignment", + "src": "6725:14:55", + "value": { + "name": "dst_1", + "nativeSrc": "6734:5:55", + "nodeType": "YulIdentifier", + "src": "6734:5:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "6725:5:55", + "nodeType": "YulIdentifier", + "src": "6725:5:55" + } + ] + } + ] + }, + "name": "abi_decode_array_string_dyn", + "nativeSrc": "5803:942:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "5840:6:55", + "nodeType": "YulTypedName", + "src": "5840:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "5848:3:55", + "nodeType": "YulTypedName", + "src": "5848:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "5856:5:55", + "nodeType": "YulTypedName", + "src": "5856:5:55", + "type": "" + } + ], + "src": "5803:942:55" + }, + { + "body": { + "nativeSrc": "6855:252:55", + "nodeType": "YulBlock", + "src": "6855:252:55", + "statements": [ + { + "body": { + "nativeSrc": "6901:16:55", + "nodeType": "YulBlock", + "src": "6901:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6910:1:55", + "nodeType": "YulLiteral", + "src": "6910:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6913:1:55", + "nodeType": "YulLiteral", + "src": "6913:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6903:6:55", + "nodeType": "YulIdentifier", + "src": "6903:6:55" + }, + "nativeSrc": "6903:12:55", + "nodeType": "YulFunctionCall", + "src": "6903:12:55" + }, + "nativeSrc": "6903:12:55", + "nodeType": "YulExpressionStatement", + "src": "6903:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6876:7:55", + "nodeType": "YulIdentifier", + "src": "6876:7:55" + }, + { + "name": "headStart", + "nativeSrc": "6885:9:55", + "nodeType": "YulIdentifier", + "src": "6885:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6872:3:55", + "nodeType": "YulIdentifier", + "src": "6872:3:55" + }, + "nativeSrc": "6872:23:55", + "nodeType": "YulFunctionCall", + "src": "6872:23:55" + }, + { + "kind": "number", + "nativeSrc": "6897:2:55", + "nodeType": "YulLiteral", + "src": "6897:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6868:3:55", + "nodeType": "YulIdentifier", + "src": "6868:3:55" + }, + "nativeSrc": "6868:32:55", + "nodeType": "YulFunctionCall", + "src": "6868:32:55" + }, + "nativeSrc": "6865:52:55", + "nodeType": "YulIf", + "src": "6865:52:55" + }, + { + "nativeSrc": "6926:37:55", + "nodeType": "YulVariableDeclaration", + "src": "6926:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6953:9:55", + "nodeType": "YulIdentifier", + "src": "6953:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6940:12:55", + "nodeType": "YulIdentifier", + "src": "6940:12:55" + }, + "nativeSrc": "6940:23:55", + "nodeType": "YulFunctionCall", + "src": "6940:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6930:6:55", + "nodeType": "YulTypedName", + "src": "6930:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7006:16:55", + "nodeType": "YulBlock", + "src": "7006:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7015:1:55", + "nodeType": "YulLiteral", + "src": "7015:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7018:1:55", + "nodeType": "YulLiteral", + "src": "7018:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7008:6:55", + "nodeType": "YulIdentifier", + "src": "7008:6:55" + }, + "nativeSrc": "7008:12:55", + "nodeType": "YulFunctionCall", + "src": "7008:12:55" + }, + "nativeSrc": "7008:12:55", + "nodeType": "YulExpressionStatement", + "src": "7008:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6978:6:55", + "nodeType": "YulIdentifier", + "src": "6978:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6994:2:55", + "nodeType": "YulLiteral", + "src": "6994:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6998:1:55", + "nodeType": "YulLiteral", + "src": "6998:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6990:3:55", + "nodeType": "YulIdentifier", + "src": "6990:3:55" + }, + "nativeSrc": "6990:10:55", + "nodeType": "YulFunctionCall", + "src": "6990:10:55" + }, + { + "kind": "number", + "nativeSrc": "7002:1:55", + "nodeType": "YulLiteral", + "src": "7002:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6986:3:55", + "nodeType": "YulIdentifier", + "src": "6986:3:55" + }, + "nativeSrc": "6986:18:55", + "nodeType": "YulFunctionCall", + "src": "6986:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6975:2:55", + "nodeType": "YulIdentifier", + "src": "6975:2:55" + }, + "nativeSrc": "6975:30:55", + "nodeType": "YulFunctionCall", + "src": "6975:30:55" + }, + "nativeSrc": "6972:50:55", + "nodeType": "YulIf", + "src": "6972:50:55" + }, + { + "nativeSrc": "7031:70:55", + "nodeType": "YulAssignment", + "src": "7031:70:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7073:9:55", + "nodeType": "YulIdentifier", + "src": "7073:9:55" + }, + { + "name": "offset", + "nativeSrc": "7084:6:55", + "nodeType": "YulIdentifier", + "src": "7084:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7069:3:55", + "nodeType": "YulIdentifier", + "src": "7069:3:55" + }, + "nativeSrc": "7069:22:55", + "nodeType": "YulFunctionCall", + "src": "7069:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "7093:7:55", + "nodeType": "YulIdentifier", + "src": "7093:7:55" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "7041:27:55", + "nodeType": "YulIdentifier", + "src": "7041:27:55" + }, + "nativeSrc": "7041:60:55", + "nodeType": "YulFunctionCall", + "src": "7041:60:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7031:6:55", + "nodeType": "YulIdentifier", + "src": "7031:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "6750:357:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6821:9:55", + "nodeType": "YulTypedName", + "src": "6821:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6832:7:55", + "nodeType": "YulTypedName", + "src": "6832:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6844:6:55", + "nodeType": "YulTypedName", + "src": "6844:6:55", + "type": "" + } + ], + "src": "6750:357:55" + }, + { + "body": { + "nativeSrc": "7310:816:55", + "nodeType": "YulBlock", + "src": "7310:816:55", + "statements": [ + { + "body": { + "nativeSrc": "7357:16:55", + "nodeType": "YulBlock", + "src": "7357:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7366:1:55", + "nodeType": "YulLiteral", + "src": "7366:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7369:1:55", + "nodeType": "YulLiteral", + "src": "7369:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7359:6:55", + "nodeType": "YulIdentifier", + "src": "7359:6:55" + }, + "nativeSrc": "7359:12:55", + "nodeType": "YulFunctionCall", + "src": "7359:12:55" + }, + "nativeSrc": "7359:12:55", + "nodeType": "YulExpressionStatement", + "src": "7359:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7331:7:55", + "nodeType": "YulIdentifier", + "src": "7331:7:55" + }, + { + "name": "headStart", + "nativeSrc": "7340:9:55", + "nodeType": "YulIdentifier", + "src": "7340:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7327:3:55", + "nodeType": "YulIdentifier", + "src": "7327:3:55" + }, + "nativeSrc": "7327:23:55", + "nodeType": "YulFunctionCall", + "src": "7327:23:55" + }, + { + "kind": "number", + "nativeSrc": "7352:3:55", + "nodeType": "YulLiteral", + "src": "7352:3:55", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7323:3:55", + "nodeType": "YulIdentifier", + "src": "7323:3:55" + }, + "nativeSrc": "7323:33:55", + "nodeType": "YulFunctionCall", + "src": "7323:33:55" + }, + "nativeSrc": "7320:53:55", + "nodeType": "YulIf", + "src": "7320:53:55" + }, + { + "nativeSrc": "7382:36:55", + "nodeType": "YulVariableDeclaration", + "src": "7382:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7408:9:55", + "nodeType": "YulIdentifier", + "src": "7408:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7395:12:55", + "nodeType": "YulIdentifier", + "src": "7395:12:55" + }, + "nativeSrc": "7395:23:55", + "nodeType": "YulFunctionCall", + "src": "7395:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "7386:5:55", + "nodeType": "YulTypedName", + "src": "7386:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7452:5:55", + "nodeType": "YulIdentifier", + "src": "7452:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7427:24:55", + "nodeType": "YulIdentifier", + "src": "7427:24:55" + }, + "nativeSrc": "7427:31:55", + "nodeType": "YulFunctionCall", + "src": "7427:31:55" + }, + "nativeSrc": "7427:31:55", + "nodeType": "YulExpressionStatement", + "src": "7427:31:55" + }, + { + "nativeSrc": "7467:15:55", + "nodeType": "YulAssignment", + "src": "7467:15:55", + "value": { + "name": "value", + "nativeSrc": "7477:5:55", + "nodeType": "YulIdentifier", + "src": "7477:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7467:6:55", + "nodeType": "YulIdentifier", + "src": "7467:6:55" + } + ] + }, + { + "nativeSrc": "7491:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7491:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7523:9:55", + "nodeType": "YulIdentifier", + "src": "7523:9:55" + }, + { + "kind": "number", + "nativeSrc": "7534:2:55", + "nodeType": "YulLiteral", + "src": "7534:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7519:3:55", + "nodeType": "YulIdentifier", + "src": "7519:3:55" + }, + "nativeSrc": "7519:18:55", + "nodeType": "YulFunctionCall", + "src": "7519:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7506:12:55", + "nodeType": "YulIdentifier", + "src": "7506:12:55" + }, + "nativeSrc": "7506:32:55", + "nodeType": "YulFunctionCall", + "src": "7506:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "7495:7:55", + "nodeType": "YulTypedName", + "src": "7495:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "7572:7:55", + "nodeType": "YulIdentifier", + "src": "7572:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7547:24:55", + "nodeType": "YulIdentifier", + "src": "7547:24:55" + }, + "nativeSrc": "7547:33:55", + "nodeType": "YulFunctionCall", + "src": "7547:33:55" + }, + "nativeSrc": "7547:33:55", + "nodeType": "YulExpressionStatement", + "src": "7547:33:55" + }, + { + "nativeSrc": "7589:17:55", + "nodeType": "YulAssignment", + "src": "7589:17:55", + "value": { + "name": "value_1", + "nativeSrc": "7599:7:55", + "nodeType": "YulIdentifier", + "src": "7599:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7589:6:55", + "nodeType": "YulIdentifier", + "src": "7589:6:55" + } + ] + }, + { + "nativeSrc": "7615:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7615:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7647:9:55", + "nodeType": "YulIdentifier", + "src": "7647:9:55" + }, + { + "kind": "number", + "nativeSrc": "7658:2:55", + "nodeType": "YulLiteral", + "src": "7658:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7643:3:55", + "nodeType": "YulIdentifier", + "src": "7643:3:55" + }, + "nativeSrc": "7643:18:55", + "nodeType": "YulFunctionCall", + "src": "7643:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7630:12:55", + "nodeType": "YulIdentifier", + "src": "7630:12:55" + }, + "nativeSrc": "7630:32:55", + "nodeType": "YulFunctionCall", + "src": "7630:32:55" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "7619:7:55", + "nodeType": "YulTypedName", + "src": "7619:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "7696:7:55", + "nodeType": "YulIdentifier", + "src": "7696:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7671:24:55", + "nodeType": "YulIdentifier", + "src": "7671:24:55" + }, + "nativeSrc": "7671:33:55", + "nodeType": "YulFunctionCall", + "src": "7671:33:55" + }, + "nativeSrc": "7671:33:55", + "nodeType": "YulExpressionStatement", + "src": "7671:33:55" + }, + { + "nativeSrc": "7713:17:55", + "nodeType": "YulAssignment", + "src": "7713:17:55", + "value": { + "name": "value_2", + "nativeSrc": "7723:7:55", + "nodeType": "YulIdentifier", + "src": "7723:7:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7713:6:55", + "nodeType": "YulIdentifier", + "src": "7713:6:55" + } + ] + }, + { + "nativeSrc": "7739:42:55", + "nodeType": "YulAssignment", + "src": "7739:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7766:9:55", + "nodeType": "YulIdentifier", + "src": "7766:9:55" + }, + { + "kind": "number", + "nativeSrc": "7777:2:55", + "nodeType": "YulLiteral", + "src": "7777:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7762:3:55", + "nodeType": "YulIdentifier", + "src": "7762:3:55" + }, + "nativeSrc": "7762:18:55", + "nodeType": "YulFunctionCall", + "src": "7762:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7749:12:55", + "nodeType": "YulIdentifier", + "src": "7749:12:55" + }, + "nativeSrc": "7749:32:55", + "nodeType": "YulFunctionCall", + "src": "7749:32:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "7739:6:55", + "nodeType": "YulIdentifier", + "src": "7739:6:55" + } + ] + }, + { + "nativeSrc": "7790:43:55", + "nodeType": "YulAssignment", + "src": "7790:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7817:9:55", + "nodeType": "YulIdentifier", + "src": "7817:9:55" + }, + { + "kind": "number", + "nativeSrc": "7828:3:55", + "nodeType": "YulLiteral", + "src": "7828:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7813:3:55", + "nodeType": "YulIdentifier", + "src": "7813:3:55" + }, + "nativeSrc": "7813:19:55", + "nodeType": "YulFunctionCall", + "src": "7813:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7800:12:55", + "nodeType": "YulIdentifier", + "src": "7800:12:55" + }, + "nativeSrc": "7800:33:55", + "nodeType": "YulFunctionCall", + "src": "7800:33:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "7790:6:55", + "nodeType": "YulIdentifier", + "src": "7790:6:55" + } + ] + }, + { + "nativeSrc": "7842:43:55", + "nodeType": "YulAssignment", + "src": "7842:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7869:9:55", + "nodeType": "YulIdentifier", + "src": "7869:9:55" + }, + { + "kind": "number", + "nativeSrc": "7880:3:55", + "nodeType": "YulLiteral", + "src": "7880:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7865:3:55", + "nodeType": "YulIdentifier", + "src": "7865:3:55" + }, + "nativeSrc": "7865:19:55", + "nodeType": "YulFunctionCall", + "src": "7865:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7852:12:55", + "nodeType": "YulIdentifier", + "src": "7852:12:55" + }, + "nativeSrc": "7852:33:55", + "nodeType": "YulFunctionCall", + "src": "7852:33:55" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "7842:6:55", + "nodeType": "YulIdentifier", + "src": "7842:6:55" + } + ] + }, + { + "nativeSrc": "7894:43:55", + "nodeType": "YulAssignment", + "src": "7894:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7921:9:55", + "nodeType": "YulIdentifier", + "src": "7921:9:55" + }, + { + "kind": "number", + "nativeSrc": "7932:3:55", + "nodeType": "YulLiteral", + "src": "7932:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7917:3:55", + "nodeType": "YulIdentifier", + "src": "7917:3:55" + }, + "nativeSrc": "7917:19:55", + "nodeType": "YulFunctionCall", + "src": "7917:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7904:12:55", + "nodeType": "YulIdentifier", + "src": "7904:12:55" + }, + "nativeSrc": "7904:33:55", + "nodeType": "YulFunctionCall", + "src": "7904:33:55" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "7894:6:55", + "nodeType": "YulIdentifier", + "src": "7894:6:55" + } + ] + }, + { + "nativeSrc": "7946:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7946:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7977:9:55", + "nodeType": "YulIdentifier", + "src": "7977:9:55" + }, + { + "kind": "number", + "nativeSrc": "7988:3:55", + "nodeType": "YulLiteral", + "src": "7988:3:55", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7973:3:55", + "nodeType": "YulIdentifier", + "src": "7973:3:55" + }, + "nativeSrc": "7973:19:55", + "nodeType": "YulFunctionCall", + "src": "7973:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7960:12:55", + "nodeType": "YulIdentifier", + "src": "7960:12:55" + }, + "nativeSrc": "7960:33:55", + "nodeType": "YulFunctionCall", + "src": "7960:33:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7950:6:55", + "nodeType": "YulTypedName", + "src": "7950:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8036:16:55", + "nodeType": "YulBlock", + "src": "8036:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8045:1:55", + "nodeType": "YulLiteral", + "src": "8045:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8048:1:55", + "nodeType": "YulLiteral", + "src": "8048:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8038:6:55", + "nodeType": "YulIdentifier", + "src": "8038:6:55" + }, + "nativeSrc": "8038:12:55", + "nodeType": "YulFunctionCall", + "src": "8038:12:55" + }, + "nativeSrc": "8038:12:55", + "nodeType": "YulExpressionStatement", + "src": "8038:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8008:6:55", + "nodeType": "YulIdentifier", + "src": "8008:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8024:2:55", + "nodeType": "YulLiteral", + "src": "8024:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "8028:1:55", + "nodeType": "YulLiteral", + "src": "8028:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8020:3:55", + "nodeType": "YulIdentifier", + "src": "8020:3:55" + }, + "nativeSrc": "8020:10:55", + "nodeType": "YulFunctionCall", + "src": "8020:10:55" + }, + { + "kind": "number", + "nativeSrc": "8032:1:55", + "nodeType": "YulLiteral", + "src": "8032:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8016:3:55", + "nodeType": "YulIdentifier", + "src": "8016:3:55" + }, + "nativeSrc": "8016:18:55", + "nodeType": "YulFunctionCall", + "src": "8016:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8005:2:55", + "nodeType": "YulIdentifier", + "src": "8005:2:55" + }, + "nativeSrc": "8005:30:55", + "nodeType": "YulFunctionCall", + "src": "8005:30:55" + }, + "nativeSrc": "8002:50:55", + "nodeType": "YulIf", + "src": "8002:50:55" + }, + { + "nativeSrc": "8061:59:55", + "nodeType": "YulAssignment", + "src": "8061:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8092:9:55", + "nodeType": "YulIdentifier", + "src": "8092:9:55" + }, + { + "name": "offset", + "nativeSrc": "8103:6:55", + "nodeType": "YulIdentifier", + "src": "8103:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8088:3:55", + "nodeType": "YulIdentifier", + "src": "8088:3:55" + }, + "nativeSrc": "8088:22:55", + "nodeType": "YulFunctionCall", + "src": "8088:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "8112:7:55", + "nodeType": "YulIdentifier", + "src": "8112:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "8071:16:55", + "nodeType": "YulIdentifier", + "src": "8071:16:55" + }, + "nativeSrc": "8071:49:55", + "nodeType": "YulFunctionCall", + "src": "8071:49:55" + }, + "variableNames": [ + { + "name": "value7", + "nativeSrc": "8061:6:55", + "nodeType": "YulIdentifier", + "src": "8061:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr", + "nativeSrc": "7112:1014:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7220:9:55", + "nodeType": "YulTypedName", + "src": "7220:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7231:7:55", + "nodeType": "YulTypedName", + "src": "7231:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7243:6:55", + "nodeType": "YulTypedName", + "src": "7243:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7251:6:55", + "nodeType": "YulTypedName", + "src": "7251:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7259:6:55", + "nodeType": "YulTypedName", + "src": "7259:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7267:6:55", + "nodeType": "YulTypedName", + "src": "7267:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "7275:6:55", + "nodeType": "YulTypedName", + "src": "7275:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "7283:6:55", + "nodeType": "YulTypedName", + "src": "7283:6:55", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "7291:6:55", + "nodeType": "YulTypedName", + "src": "7291:6:55", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "7299:6:55", + "nodeType": "YulTypedName", + "src": "7299:6:55", + "type": "" + } + ], + "src": "7112:1014:55" + }, + { + "body": { + "nativeSrc": "8260:145:55", + "nodeType": "YulBlock", + "src": "8260:145:55", + "statements": [ + { + "nativeSrc": "8270:26:55", + "nodeType": "YulAssignment", + "src": "8270:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8282:9:55", + "nodeType": "YulIdentifier", + "src": "8282:9:55" + }, + { + "kind": "number", + "nativeSrc": "8293:2:55", + "nodeType": "YulLiteral", + "src": "8293:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8278:3:55", + "nodeType": "YulIdentifier", + "src": "8278:3:55" + }, + "nativeSrc": "8278:18:55", + "nodeType": "YulFunctionCall", + "src": "8278:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8270:4:55", + "nodeType": "YulIdentifier", + "src": "8270:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8312:9:55", + "nodeType": "YulIdentifier", + "src": "8312:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8327:6:55", + "nodeType": "YulIdentifier", + "src": "8327:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8343:3:55", + "nodeType": "YulLiteral", + "src": "8343:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "8348:1:55", + "nodeType": "YulLiteral", + "src": "8348:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8339:3:55", + "nodeType": "YulIdentifier", + "src": "8339:3:55" + }, + "nativeSrc": "8339:11:55", + "nodeType": "YulFunctionCall", + "src": "8339:11:55" + }, + { + "kind": "number", + "nativeSrc": "8352:1:55", + "nodeType": "YulLiteral", + "src": "8352:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8335:3:55", + "nodeType": "YulIdentifier", + "src": "8335:3:55" + }, + "nativeSrc": "8335:19:55", + "nodeType": "YulFunctionCall", + "src": "8335:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8323:3:55", + "nodeType": "YulIdentifier", + "src": "8323:3:55" + }, + "nativeSrc": "8323:32:55", + "nodeType": "YulFunctionCall", + "src": "8323:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8305:6:55", + "nodeType": "YulIdentifier", + "src": "8305:6:55" + }, + "nativeSrc": "8305:51:55", + "nodeType": "YulFunctionCall", + "src": "8305:51:55" + }, + "nativeSrc": "8305:51:55", + "nodeType": "YulExpressionStatement", + "src": "8305:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8376:9:55", + "nodeType": "YulIdentifier", + "src": "8376:9:55" + }, + { + "kind": "number", + "nativeSrc": "8387:2:55", + "nodeType": "YulLiteral", + "src": "8387:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8372:3:55", + "nodeType": "YulIdentifier", + "src": "8372:3:55" + }, + "nativeSrc": "8372:18:55", + "nodeType": "YulFunctionCall", + "src": "8372:18:55" + }, + { + "name": "value1", + "nativeSrc": "8392:6:55", + "nodeType": "YulIdentifier", + "src": "8392:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8365:6:55", + "nodeType": "YulIdentifier", + "src": "8365:6:55" + }, + "nativeSrc": "8365:34:55", + "nodeType": "YulFunctionCall", + "src": "8365:34:55" + }, + "nativeSrc": "8365:34:55", + "nodeType": "YulExpressionStatement", + "src": "8365:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "8131:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8221:9:55", + "nodeType": "YulTypedName", + "src": "8221:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8232:6:55", + "nodeType": "YulTypedName", + "src": "8232:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8240:6:55", + "nodeType": "YulTypedName", + "src": "8240:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8251:4:55", + "nodeType": "YulTypedName", + "src": "8251:4:55", + "type": "" + } + ], + "src": "8131:274:55" + }, + { + "body": { + "nativeSrc": "8480:110:55", + "nodeType": "YulBlock", + "src": "8480:110:55", + "statements": [ + { + "body": { + "nativeSrc": "8526:16:55", + "nodeType": "YulBlock", + "src": "8526:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8535:1:55", + "nodeType": "YulLiteral", + "src": "8535:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8538:1:55", + "nodeType": "YulLiteral", + "src": "8538:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8528:6:55", + "nodeType": "YulIdentifier", + "src": "8528:6:55" + }, + "nativeSrc": "8528:12:55", + "nodeType": "YulFunctionCall", + "src": "8528:12:55" + }, + "nativeSrc": "8528:12:55", + "nodeType": "YulExpressionStatement", + "src": "8528:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8501:7:55", + "nodeType": "YulIdentifier", + "src": "8501:7:55" + }, + { + "name": "headStart", + "nativeSrc": "8510:9:55", + "nodeType": "YulIdentifier", + "src": "8510:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8497:3:55", + "nodeType": "YulIdentifier", + "src": "8497:3:55" + }, + "nativeSrc": "8497:23:55", + "nodeType": "YulFunctionCall", + "src": "8497:23:55" + }, + { + "kind": "number", + "nativeSrc": "8522:2:55", + "nodeType": "YulLiteral", + "src": "8522:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8493:3:55", + "nodeType": "YulIdentifier", + "src": "8493:3:55" + }, + "nativeSrc": "8493:32:55", + "nodeType": "YulFunctionCall", + "src": "8493:32:55" + }, + "nativeSrc": "8490:52:55", + "nodeType": "YulIf", + "src": "8490:52:55" + }, + { + "nativeSrc": "8551:33:55", + "nodeType": "YulAssignment", + "src": "8551:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8574:9:55", + "nodeType": "YulIdentifier", + "src": "8574:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8561:12:55", + "nodeType": "YulIdentifier", + "src": "8561:12:55" + }, + "nativeSrc": "8561:23:55", + "nodeType": "YulFunctionCall", + "src": "8561:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8551:6:55", + "nodeType": "YulIdentifier", + "src": "8551:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "8410:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8446:9:55", + "nodeType": "YulTypedName", + "src": "8446:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8457:7:55", + "nodeType": "YulTypedName", + "src": "8457:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8469:6:55", + "nodeType": "YulTypedName", + "src": "8469:6:55", + "type": "" + } + ], + "src": "8410:180:55" + }, + { + "body": { + "nativeSrc": "8665:110:55", + "nodeType": "YulBlock", + "src": "8665:110:55", + "statements": [ + { + "body": { + "nativeSrc": "8711:16:55", + "nodeType": "YulBlock", + "src": "8711:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8720:1:55", + "nodeType": "YulLiteral", + "src": "8720:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8723:1:55", + "nodeType": "YulLiteral", + "src": "8723:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8713:6:55", + "nodeType": "YulIdentifier", + "src": "8713:6:55" + }, + "nativeSrc": "8713:12:55", + "nodeType": "YulFunctionCall", + "src": "8713:12:55" + }, + "nativeSrc": "8713:12:55", + "nodeType": "YulExpressionStatement", + "src": "8713:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8686:7:55", + "nodeType": "YulIdentifier", + "src": "8686:7:55" + }, + { + "name": "headStart", + "nativeSrc": "8695:9:55", + "nodeType": "YulIdentifier", + "src": "8695:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8682:3:55", + "nodeType": "YulIdentifier", + "src": "8682:3:55" + }, + "nativeSrc": "8682:23:55", + "nodeType": "YulFunctionCall", + "src": "8682:23:55" + }, + { + "kind": "number", + "nativeSrc": "8707:2:55", + "nodeType": "YulLiteral", + "src": "8707:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8678:3:55", + "nodeType": "YulIdentifier", + "src": "8678:3:55" + }, + "nativeSrc": "8678:32:55", + "nodeType": "YulFunctionCall", + "src": "8678:32:55" + }, + "nativeSrc": "8675:52:55", + "nodeType": "YulIf", + "src": "8675:52:55" + }, + { + "nativeSrc": "8736:33:55", + "nodeType": "YulAssignment", + "src": "8736:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8759:9:55", + "nodeType": "YulIdentifier", + "src": "8759:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8746:12:55", + "nodeType": "YulIdentifier", + "src": "8746:12:55" + }, + "nativeSrc": "8746:23:55", + "nodeType": "YulFunctionCall", + "src": "8746:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8736:6:55", + "nodeType": "YulIdentifier", + "src": "8736:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "8595:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8631:9:55", + "nodeType": "YulTypedName", + "src": "8631:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8642:7:55", + "nodeType": "YulTypedName", + "src": "8642:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8654:6:55", + "nodeType": "YulTypedName", + "src": "8654:6:55", + "type": "" + } + ], + "src": "8595:180:55" + }, + { + "body": { + "nativeSrc": "8867:228:55", + "nodeType": "YulBlock", + "src": "8867:228:55", + "statements": [ + { + "body": { + "nativeSrc": "8913:16:55", + "nodeType": "YulBlock", + "src": "8913:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8922:1:55", + "nodeType": "YulLiteral", + "src": "8922:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8925:1:55", + "nodeType": "YulLiteral", + "src": "8925:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8915:6:55", + "nodeType": "YulIdentifier", + "src": "8915:6:55" + }, + "nativeSrc": "8915:12:55", + "nodeType": "YulFunctionCall", + "src": "8915:12:55" + }, + "nativeSrc": "8915:12:55", + "nodeType": "YulExpressionStatement", + "src": "8915:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8888:7:55", + "nodeType": "YulIdentifier", + "src": "8888:7:55" + }, + { + "name": "headStart", + "nativeSrc": "8897:9:55", + "nodeType": "YulIdentifier", + "src": "8897:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8884:3:55", + "nodeType": "YulIdentifier", + "src": "8884:3:55" + }, + "nativeSrc": "8884:23:55", + "nodeType": "YulFunctionCall", + "src": "8884:23:55" + }, + { + "kind": "number", + "nativeSrc": "8909:2:55", + "nodeType": "YulLiteral", + "src": "8909:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8880:3:55", + "nodeType": "YulIdentifier", + "src": "8880:3:55" + }, + "nativeSrc": "8880:32:55", + "nodeType": "YulFunctionCall", + "src": "8880:32:55" + }, + "nativeSrc": "8877:52:55", + "nodeType": "YulIf", + "src": "8877:52:55" + }, + { + "nativeSrc": "8938:33:55", + "nodeType": "YulAssignment", + "src": "8938:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8961:9:55", + "nodeType": "YulIdentifier", + "src": "8961:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8948:12:55", + "nodeType": "YulIdentifier", + "src": "8948:12:55" + }, + "nativeSrc": "8948:23:55", + "nodeType": "YulFunctionCall", + "src": "8948:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8938:6:55", + "nodeType": "YulIdentifier", + "src": "8938:6:55" + } + ] + }, + { + "nativeSrc": "8980:45:55", + "nodeType": "YulVariableDeclaration", + "src": "8980:45:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9010:9:55", + "nodeType": "YulIdentifier", + "src": "9010:9:55" + }, + { + "kind": "number", + "nativeSrc": "9021:2:55", + "nodeType": "YulLiteral", + "src": "9021:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9006:3:55", + "nodeType": "YulIdentifier", + "src": "9006:3:55" + }, + "nativeSrc": "9006:18:55", + "nodeType": "YulFunctionCall", + "src": "9006:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8993:12:55", + "nodeType": "YulIdentifier", + "src": "8993:12:55" + }, + "nativeSrc": "8993:32:55", + "nodeType": "YulFunctionCall", + "src": "8993:32:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "8984:5:55", + "nodeType": "YulTypedName", + "src": "8984:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9059:5:55", + "nodeType": "YulIdentifier", + "src": "9059:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9034:24:55", + "nodeType": "YulIdentifier", + "src": "9034:24:55" + }, + "nativeSrc": "9034:31:55", + "nodeType": "YulFunctionCall", + "src": "9034:31:55" + }, + "nativeSrc": "9034:31:55", + "nodeType": "YulExpressionStatement", + "src": "9034:31:55" + }, + { + "nativeSrc": "9074:15:55", + "nodeType": "YulAssignment", + "src": "9074:15:55", + "value": { + "name": "value", + "nativeSrc": "9084:5:55", + "nodeType": "YulIdentifier", + "src": "9084:5:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9074:6:55", + "nodeType": "YulIdentifier", + "src": "9074:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "8780:315:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8825:9:55", + "nodeType": "YulTypedName", + "src": "8825:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8836:7:55", + "nodeType": "YulTypedName", + "src": "8836:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8848:6:55", + "nodeType": "YulTypedName", + "src": "8848:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8856:6:55", + "nodeType": "YulTypedName", + "src": "8856:6:55", + "type": "" + } + ], + "src": "8780:315:55" + }, + { + "body": { + "nativeSrc": "9238:602:55", + "nodeType": "YulBlock", + "src": "9238:602:55", + "statements": [ + { + "body": { + "nativeSrc": "9285:16:55", + "nodeType": "YulBlock", + "src": "9285:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9294:1:55", + "nodeType": "YulLiteral", + "src": "9294:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9297:1:55", + "nodeType": "YulLiteral", + "src": "9297:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9287:6:55", + "nodeType": "YulIdentifier", + "src": "9287:6:55" + }, + "nativeSrc": "9287:12:55", + "nodeType": "YulFunctionCall", + "src": "9287:12:55" + }, + "nativeSrc": "9287:12:55", + "nodeType": "YulExpressionStatement", + "src": "9287:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9259:7:55", + "nodeType": "YulIdentifier", + "src": "9259:7:55" + }, + { + "name": "headStart", + "nativeSrc": "9268:9:55", + "nodeType": "YulIdentifier", + "src": "9268:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9255:3:55", + "nodeType": "YulIdentifier", + "src": "9255:3:55" + }, + "nativeSrc": "9255:23:55", + "nodeType": "YulFunctionCall", + "src": "9255:23:55" + }, + { + "kind": "number", + "nativeSrc": "9280:3:55", + "nodeType": "YulLiteral", + "src": "9280:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9251:3:55", + "nodeType": "YulIdentifier", + "src": "9251:3:55" + }, + "nativeSrc": "9251:33:55", + "nodeType": "YulFunctionCall", + "src": "9251:33:55" + }, + "nativeSrc": "9248:53:55", + "nodeType": "YulIf", + "src": "9248:53:55" + }, + { + "nativeSrc": "9310:36:55", + "nodeType": "YulVariableDeclaration", + "src": "9310:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9336:9:55", + "nodeType": "YulIdentifier", + "src": "9336:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9323:12:55", + "nodeType": "YulIdentifier", + "src": "9323:12:55" + }, + "nativeSrc": "9323:23:55", + "nodeType": "YulFunctionCall", + "src": "9323:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9314:5:55", + "nodeType": "YulTypedName", + "src": "9314:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9380:5:55", + "nodeType": "YulIdentifier", + "src": "9380:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9355:24:55", + "nodeType": "YulIdentifier", + "src": "9355:24:55" + }, + "nativeSrc": "9355:31:55", + "nodeType": "YulFunctionCall", + "src": "9355:31:55" + }, + "nativeSrc": "9355:31:55", + "nodeType": "YulExpressionStatement", + "src": "9355:31:55" + }, + { + "nativeSrc": "9395:15:55", + "nodeType": "YulAssignment", + "src": "9395:15:55", + "value": { + "name": "value", + "nativeSrc": "9405:5:55", + "nodeType": "YulIdentifier", + "src": "9405:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9395:6:55", + "nodeType": "YulIdentifier", + "src": "9395:6:55" + } + ] + }, + { + "nativeSrc": "9419:47:55", + "nodeType": "YulVariableDeclaration", + "src": "9419:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9451:9:55", + "nodeType": "YulIdentifier", + "src": "9451:9:55" + }, + { + "kind": "number", + "nativeSrc": "9462:2:55", + "nodeType": "YulLiteral", + "src": "9462:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9447:3:55", + "nodeType": "YulIdentifier", + "src": "9447:3:55" + }, + "nativeSrc": "9447:18:55", + "nodeType": "YulFunctionCall", + "src": "9447:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9434:12:55", + "nodeType": "YulIdentifier", + "src": "9434:12:55" + }, + "nativeSrc": "9434:32:55", + "nodeType": "YulFunctionCall", + "src": "9434:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "9423:7:55", + "nodeType": "YulTypedName", + "src": "9423:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "9500:7:55", + "nodeType": "YulIdentifier", + "src": "9500:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9475:24:55", + "nodeType": "YulIdentifier", + "src": "9475:24:55" + }, + "nativeSrc": "9475:33:55", + "nodeType": "YulFunctionCall", + "src": "9475:33:55" + }, + "nativeSrc": "9475:33:55", + "nodeType": "YulExpressionStatement", + "src": "9475:33:55" + }, + { + "nativeSrc": "9517:17:55", + "nodeType": "YulAssignment", + "src": "9517:17:55", + "value": { + "name": "value_1", + "nativeSrc": "9527:7:55", + "nodeType": "YulIdentifier", + "src": "9527:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9517:6:55", + "nodeType": "YulIdentifier", + "src": "9517:6:55" + } + ] + }, + { + "nativeSrc": "9543:42:55", + "nodeType": "YulAssignment", + "src": "9543:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9570:9:55", + "nodeType": "YulIdentifier", + "src": "9570:9:55" + }, + { + "kind": "number", + "nativeSrc": "9581:2:55", + "nodeType": "YulLiteral", + "src": "9581:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9566:3:55", + "nodeType": "YulIdentifier", + "src": "9566:3:55" + }, + "nativeSrc": "9566:18:55", + "nodeType": "YulFunctionCall", + "src": "9566:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9553:12:55", + "nodeType": "YulIdentifier", + "src": "9553:12:55" + }, + "nativeSrc": "9553:32:55", + "nodeType": "YulFunctionCall", + "src": "9553:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "9543:6:55", + "nodeType": "YulIdentifier", + "src": "9543:6:55" + } + ] + }, + { + "nativeSrc": "9594:47:55", + "nodeType": "YulVariableDeclaration", + "src": "9594:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9626:9:55", + "nodeType": "YulIdentifier", + "src": "9626:9:55" + }, + { + "kind": "number", + "nativeSrc": "9637:2:55", + "nodeType": "YulLiteral", + "src": "9637:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9622:3:55", + "nodeType": "YulIdentifier", + "src": "9622:3:55" + }, + "nativeSrc": "9622:18:55", + "nodeType": "YulFunctionCall", + "src": "9622:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9609:12:55", + "nodeType": "YulIdentifier", + "src": "9609:12:55" + }, + "nativeSrc": "9609:32:55", + "nodeType": "YulFunctionCall", + "src": "9609:32:55" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "9598:7:55", + "nodeType": "YulTypedName", + "src": "9598:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "9675:7:55", + "nodeType": "YulIdentifier", + "src": "9675:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9650:24:55", + "nodeType": "YulIdentifier", + "src": "9650:24:55" + }, + "nativeSrc": "9650:33:55", + "nodeType": "YulFunctionCall", + "src": "9650:33:55" + }, + "nativeSrc": "9650:33:55", + "nodeType": "YulExpressionStatement", + "src": "9650:33:55" + }, + { + "nativeSrc": "9692:17:55", + "nodeType": "YulAssignment", + "src": "9692:17:55", + "value": { + "name": "value_2", + "nativeSrc": "9702:7:55", + "nodeType": "YulIdentifier", + "src": "9702:7:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "9692:6:55", + "nodeType": "YulIdentifier", + "src": "9692:6:55" + } + ] + }, + { + "nativeSrc": "9718:48:55", + "nodeType": "YulVariableDeclaration", + "src": "9718:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9750:9:55", + "nodeType": "YulIdentifier", + "src": "9750:9:55" + }, + { + "kind": "number", + "nativeSrc": "9761:3:55", + "nodeType": "YulLiteral", + "src": "9761:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9746:3:55", + "nodeType": "YulIdentifier", + "src": "9746:3:55" + }, + "nativeSrc": "9746:19:55", + "nodeType": "YulFunctionCall", + "src": "9746:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9733:12:55", + "nodeType": "YulIdentifier", + "src": "9733:12:55" + }, + "nativeSrc": "9733:33:55", + "nodeType": "YulFunctionCall", + "src": "9733:33:55" + }, + "variables": [ + { + "name": "value_3", + "nativeSrc": "9722:7:55", + "nodeType": "YulTypedName", + "src": "9722:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_3", + "nativeSrc": "9800:7:55", + "nodeType": "YulIdentifier", + "src": "9800:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9775:24:55", + "nodeType": "YulIdentifier", + "src": "9775:24:55" + }, + "nativeSrc": "9775:33:55", + "nodeType": "YulFunctionCall", + "src": "9775:33:55" + }, + "nativeSrc": "9775:33:55", + "nodeType": "YulExpressionStatement", + "src": "9775:33:55" + }, + { + "nativeSrc": "9817:17:55", + "nodeType": "YulAssignment", + "src": "9817:17:55", + "value": { + "name": "value_3", + "nativeSrc": "9827:7:55", + "nodeType": "YulIdentifier", + "src": "9827:7:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "9817:6:55", + "nodeType": "YulIdentifier", + "src": "9817:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address", + "nativeSrc": "9100:740:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9172:9:55", + "nodeType": "YulTypedName", + "src": "9172:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9183:7:55", + "nodeType": "YulTypedName", + "src": "9183:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9195:6:55", + "nodeType": "YulTypedName", + "src": "9195:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9203:6:55", + "nodeType": "YulTypedName", + "src": "9203:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "9211:6:55", + "nodeType": "YulTypedName", + "src": "9211:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "9219:6:55", + "nodeType": "YulTypedName", + "src": "9219:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "9227:6:55", + "nodeType": "YulTypedName", + "src": "9227:6:55", + "type": "" + } + ], + "src": "9100:740:55" + }, + { + "body": { + "nativeSrc": "9942:292:55", + "nodeType": "YulBlock", + "src": "9942:292:55", + "statements": [ + { + "body": { + "nativeSrc": "9988:16:55", + "nodeType": "YulBlock", + "src": "9988:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9997:1:55", + "nodeType": "YulLiteral", + "src": "9997:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10000:1:55", + "nodeType": "YulLiteral", + "src": "10000:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9990:6:55", + "nodeType": "YulIdentifier", + "src": "9990:6:55" + }, + "nativeSrc": "9990:12:55", + "nodeType": "YulFunctionCall", + "src": "9990:12:55" + }, + "nativeSrc": "9990:12:55", + "nodeType": "YulExpressionStatement", + "src": "9990:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9963:7:55", + "nodeType": "YulIdentifier", + "src": "9963:7:55" + }, + { + "name": "headStart", + "nativeSrc": "9972:9:55", + "nodeType": "YulIdentifier", + "src": "9972:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9959:3:55", + "nodeType": "YulIdentifier", + "src": "9959:3:55" + }, + "nativeSrc": "9959:23:55", + "nodeType": "YulFunctionCall", + "src": "9959:23:55" + }, + { + "kind": "number", + "nativeSrc": "9984:2:55", + "nodeType": "YulLiteral", + "src": "9984:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9955:3:55", + "nodeType": "YulIdentifier", + "src": "9955:3:55" + }, + "nativeSrc": "9955:32:55", + "nodeType": "YulFunctionCall", + "src": "9955:32:55" + }, + "nativeSrc": "9952:52:55", + "nodeType": "YulIf", + "src": "9952:52:55" + }, + { + "nativeSrc": "10013:37:55", + "nodeType": "YulVariableDeclaration", + "src": "10013:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10040:9:55", + "nodeType": "YulIdentifier", + "src": "10040:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10027:12:55", + "nodeType": "YulIdentifier", + "src": "10027:12:55" + }, + "nativeSrc": "10027:23:55", + "nodeType": "YulFunctionCall", + "src": "10027:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10017:6:55", + "nodeType": "YulTypedName", + "src": "10017:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10093:16:55", + "nodeType": "YulBlock", + "src": "10093:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10102:1:55", + "nodeType": "YulLiteral", + "src": "10102:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10105:1:55", + "nodeType": "YulLiteral", + "src": "10105:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10095:6:55", + "nodeType": "YulIdentifier", + "src": "10095:6:55" + }, + "nativeSrc": "10095:12:55", + "nodeType": "YulFunctionCall", + "src": "10095:12:55" + }, + "nativeSrc": "10095:12:55", + "nodeType": "YulExpressionStatement", + "src": "10095:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10065:6:55", + "nodeType": "YulIdentifier", + "src": "10065:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10081:2:55", + "nodeType": "YulLiteral", + "src": "10081:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10085:1:55", + "nodeType": "YulLiteral", + "src": "10085:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10077:3:55", + "nodeType": "YulIdentifier", + "src": "10077:3:55" + }, + "nativeSrc": "10077:10:55", + "nodeType": "YulFunctionCall", + "src": "10077:10:55" + }, + { + "kind": "number", + "nativeSrc": "10089:1:55", + "nodeType": "YulLiteral", + "src": "10089:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10073:3:55", + "nodeType": "YulIdentifier", + "src": "10073:3:55" + }, + "nativeSrc": "10073:18:55", + "nodeType": "YulFunctionCall", + "src": "10073:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10062:2:55", + "nodeType": "YulIdentifier", + "src": "10062:2:55" + }, + "nativeSrc": "10062:30:55", + "nodeType": "YulFunctionCall", + "src": "10062:30:55" + }, + "nativeSrc": "10059:50:55", + "nodeType": "YulIf", + "src": "10059:50:55" + }, + { + "nativeSrc": "10118:59:55", + "nodeType": "YulAssignment", + "src": "10118:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10149:9:55", + "nodeType": "YulIdentifier", + "src": "10149:9:55" + }, + { + "name": "offset", + "nativeSrc": "10160:6:55", + "nodeType": "YulIdentifier", + "src": "10160:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10145:3:55", + "nodeType": "YulIdentifier", + "src": "10145:3:55" + }, + "nativeSrc": "10145:22:55", + "nodeType": "YulFunctionCall", + "src": "10145:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "10169:7:55", + "nodeType": "YulIdentifier", + "src": "10169:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10128:16:55", + "nodeType": "YulIdentifier", + "src": "10128:16:55" + }, + "nativeSrc": "10128:49:55", + "nodeType": "YulFunctionCall", + "src": "10128:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10118:6:55", + "nodeType": "YulIdentifier", + "src": "10118:6:55" + } + ] + }, + { + "nativeSrc": "10186:42:55", + "nodeType": "YulAssignment", + "src": "10186:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10213:9:55", + "nodeType": "YulIdentifier", + "src": "10213:9:55" + }, + { + "kind": "number", + "nativeSrc": "10224:2:55", + "nodeType": "YulLiteral", + "src": "10224:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10209:3:55", + "nodeType": "YulIdentifier", + "src": "10209:3:55" + }, + "nativeSrc": "10209:18:55", + "nodeType": "YulFunctionCall", + "src": "10209:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10196:12:55", + "nodeType": "YulIdentifier", + "src": "10196:12:55" + }, + "nativeSrc": "10196:32:55", + "nodeType": "YulFunctionCall", + "src": "10196:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10186:6:55", + "nodeType": "YulIdentifier", + "src": "10186:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256", + "nativeSrc": "9845:389:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9900:9:55", + "nodeType": "YulTypedName", + "src": "9900:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9911:7:55", + "nodeType": "YulTypedName", + "src": "9911:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9923:6:55", + "nodeType": "YulTypedName", + "src": "9923:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9931:6:55", + "nodeType": "YulTypedName", + "src": "9931:6:55", + "type": "" + } + ], + "src": "9845:389:55" + }, + { + "body": { + "nativeSrc": "10281:76:55", + "nodeType": "YulBlock", + "src": "10281:76:55", + "statements": [ + { + "body": { + "nativeSrc": "10335:16:55", + "nodeType": "YulBlock", + "src": "10335:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10344:1:55", + "nodeType": "YulLiteral", + "src": "10344:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10347:1:55", + "nodeType": "YulLiteral", + "src": "10347:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10337:6:55", + "nodeType": "YulIdentifier", + "src": "10337:6:55" + }, + "nativeSrc": "10337:12:55", + "nodeType": "YulFunctionCall", + "src": "10337:12:55" + }, + "nativeSrc": "10337:12:55", + "nodeType": "YulExpressionStatement", + "src": "10337:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10304:5:55", + "nodeType": "YulIdentifier", + "src": "10304:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10325:5:55", + "nodeType": "YulIdentifier", + "src": "10325:5:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10318:6:55", + "nodeType": "YulIdentifier", + "src": "10318:6:55" + }, + "nativeSrc": "10318:13:55", + "nodeType": "YulFunctionCall", + "src": "10318:13:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10311:6:55", + "nodeType": "YulIdentifier", + "src": "10311:6:55" + }, + "nativeSrc": "10311:21:55", + "nodeType": "YulFunctionCall", + "src": "10311:21:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10301:2:55", + "nodeType": "YulIdentifier", + "src": "10301:2:55" + }, + "nativeSrc": "10301:32:55", + "nodeType": "YulFunctionCall", + "src": "10301:32:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10294:6:55", + "nodeType": "YulIdentifier", + "src": "10294:6:55" + }, + "nativeSrc": "10294:40:55", + "nodeType": "YulFunctionCall", + "src": "10294:40:55" + }, + "nativeSrc": "10291:60:55", + "nodeType": "YulIf", + "src": "10291:60:55" + } + ] + }, + "name": "validator_revert_bool", + "nativeSrc": "10239:118:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "10270:5:55", + "nodeType": "YulTypedName", + "src": "10270:5:55", + "type": "" + } + ], + "src": "10239:118:55" + }, + { + "body": { + "nativeSrc": "10525:612:55", + "nodeType": "YulBlock", + "src": "10525:612:55", + "statements": [ + { + "body": { + "nativeSrc": "10572:16:55", + "nodeType": "YulBlock", + "src": "10572:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10581:1:55", + "nodeType": "YulLiteral", + "src": "10581:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10584:1:55", + "nodeType": "YulLiteral", + "src": "10584:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10574:6:55", + "nodeType": "YulIdentifier", + "src": "10574:6:55" + }, + "nativeSrc": "10574:12:55", + "nodeType": "YulFunctionCall", + "src": "10574:12:55" + }, + "nativeSrc": "10574:12:55", + "nodeType": "YulExpressionStatement", + "src": "10574:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10546:7:55", + "nodeType": "YulIdentifier", + "src": "10546:7:55" + }, + { + "name": "headStart", + "nativeSrc": "10555:9:55", + "nodeType": "YulIdentifier", + "src": "10555:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10542:3:55", + "nodeType": "YulIdentifier", + "src": "10542:3:55" + }, + "nativeSrc": "10542:23:55", + "nodeType": "YulFunctionCall", + "src": "10542:23:55" + }, + { + "kind": "number", + "nativeSrc": "10567:3:55", + "nodeType": "YulLiteral", + "src": "10567:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10538:3:55", + "nodeType": "YulIdentifier", + "src": "10538:3:55" + }, + "nativeSrc": "10538:33:55", + "nodeType": "YulFunctionCall", + "src": "10538:33:55" + }, + "nativeSrc": "10535:53:55", + "nodeType": "YulIf", + "src": "10535:53:55" + }, + { + "nativeSrc": "10597:37:55", + "nodeType": "YulVariableDeclaration", + "src": "10597:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10624:9:55", + "nodeType": "YulIdentifier", + "src": "10624:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10611:12:55", + "nodeType": "YulIdentifier", + "src": "10611:12:55" + }, + "nativeSrc": "10611:23:55", + "nodeType": "YulFunctionCall", + "src": "10611:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10601:6:55", + "nodeType": "YulTypedName", + "src": "10601:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "10643:28:55", + "nodeType": "YulVariableDeclaration", + "src": "10643:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10661:2:55", + "nodeType": "YulLiteral", + "src": "10661:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10665:1:55", + "nodeType": "YulLiteral", + "src": "10665:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10657:3:55", + "nodeType": "YulIdentifier", + "src": "10657:3:55" + }, + "nativeSrc": "10657:10:55", + "nodeType": "YulFunctionCall", + "src": "10657:10:55" + }, + { + "kind": "number", + "nativeSrc": "10669:1:55", + "nodeType": "YulLiteral", + "src": "10669:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10653:3:55", + "nodeType": "YulIdentifier", + "src": "10653:3:55" + }, + "nativeSrc": "10653:18:55", + "nodeType": "YulFunctionCall", + "src": "10653:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "10647:2:55", + "nodeType": "YulTypedName", + "src": "10647:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10698:16:55", + "nodeType": "YulBlock", + "src": "10698:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10707:1:55", + "nodeType": "YulLiteral", + "src": "10707:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10710:1:55", + "nodeType": "YulLiteral", + "src": "10710:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10700:6:55", + "nodeType": "YulIdentifier", + "src": "10700:6:55" + }, + "nativeSrc": "10700:12:55", + "nodeType": "YulFunctionCall", + "src": "10700:12:55" + }, + "nativeSrc": "10700:12:55", + "nodeType": "YulExpressionStatement", + "src": "10700:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10686:6:55", + "nodeType": "YulIdentifier", + "src": "10686:6:55" + }, + { + "name": "_1", + "nativeSrc": "10694:2:55", + "nodeType": "YulIdentifier", + "src": "10694:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10683:2:55", + "nodeType": "YulIdentifier", + "src": "10683:2:55" + }, + "nativeSrc": "10683:14:55", + "nodeType": "YulFunctionCall", + "src": "10683:14:55" + }, + "nativeSrc": "10680:34:55", + "nodeType": "YulIf", + "src": "10680:34:55" + }, + { + "nativeSrc": "10723:59:55", + "nodeType": "YulAssignment", + "src": "10723:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10754:9:55", + "nodeType": "YulIdentifier", + "src": "10754:9:55" + }, + { + "name": "offset", + "nativeSrc": "10765:6:55", + "nodeType": "YulIdentifier", + "src": "10765:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10750:3:55", + "nodeType": "YulIdentifier", + "src": "10750:3:55" + }, + "nativeSrc": "10750:22:55", + "nodeType": "YulFunctionCall", + "src": "10750:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "10774:7:55", + "nodeType": "YulIdentifier", + "src": "10774:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10733:16:55", + "nodeType": "YulIdentifier", + "src": "10733:16:55" + }, + "nativeSrc": "10733:49:55", + "nodeType": "YulFunctionCall", + "src": "10733:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10723:6:55", + "nodeType": "YulIdentifier", + "src": "10723:6:55" + } + ] + }, + { + "nativeSrc": "10791:42:55", + "nodeType": "YulAssignment", + "src": "10791:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10818:9:55", + "nodeType": "YulIdentifier", + "src": "10818:9:55" + }, + { + "kind": "number", + "nativeSrc": "10829:2:55", + "nodeType": "YulLiteral", + "src": "10829:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10814:3:55", + "nodeType": "YulIdentifier", + "src": "10814:3:55" + }, + "nativeSrc": "10814:18:55", + "nodeType": "YulFunctionCall", + "src": "10814:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10801:12:55", + "nodeType": "YulIdentifier", + "src": "10801:12:55" + }, + "nativeSrc": "10801:32:55", + "nodeType": "YulFunctionCall", + "src": "10801:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10791:6:55", + "nodeType": "YulIdentifier", + "src": "10791:6:55" + } + ] + }, + { + "nativeSrc": "10842:45:55", + "nodeType": "YulVariableDeclaration", + "src": "10842:45:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10872:9:55", + "nodeType": "YulIdentifier", + "src": "10872:9:55" + }, + { + "kind": "number", + "nativeSrc": "10883:2:55", + "nodeType": "YulLiteral", + "src": "10883:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10868:3:55", + "nodeType": "YulIdentifier", + "src": "10868:3:55" + }, + "nativeSrc": "10868:18:55", + "nodeType": "YulFunctionCall", + "src": "10868:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10855:12:55", + "nodeType": "YulIdentifier", + "src": "10855:12:55" + }, + "nativeSrc": "10855:32:55", + "nodeType": "YulFunctionCall", + "src": "10855:32:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10846:5:55", + "nodeType": "YulTypedName", + "src": "10846:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "10918:5:55", + "nodeType": "YulIdentifier", + "src": "10918:5:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "10896:21:55", + "nodeType": "YulIdentifier", + "src": "10896:21:55" + }, + "nativeSrc": "10896:28:55", + "nodeType": "YulFunctionCall", + "src": "10896:28:55" + }, + "nativeSrc": "10896:28:55", + "nodeType": "YulExpressionStatement", + "src": "10896:28:55" + }, + { + "nativeSrc": "10933:15:55", + "nodeType": "YulAssignment", + "src": "10933:15:55", + "value": { + "name": "value", + "nativeSrc": "10943:5:55", + "nodeType": "YulIdentifier", + "src": "10943:5:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "10933:6:55", + "nodeType": "YulIdentifier", + "src": "10933:6:55" + } + ] + }, + { + "nativeSrc": "10957:48:55", + "nodeType": "YulVariableDeclaration", + "src": "10957:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10990:9:55", + "nodeType": "YulIdentifier", + "src": "10990:9:55" + }, + { + "kind": "number", + "nativeSrc": "11001:2:55", + "nodeType": "YulLiteral", + "src": "11001:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10986:3:55", + "nodeType": "YulIdentifier", + "src": "10986:3:55" + }, + "nativeSrc": "10986:18:55", + "nodeType": "YulFunctionCall", + "src": "10986:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10973:12:55", + "nodeType": "YulIdentifier", + "src": "10973:12:55" + }, + "nativeSrc": "10973:32:55", + "nodeType": "YulFunctionCall", + "src": "10973:32:55" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "10961:8:55", + "nodeType": "YulTypedName", + "src": "10961:8:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11034:16:55", + "nodeType": "YulBlock", + "src": "11034:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11043:1:55", + "nodeType": "YulLiteral", + "src": "11043:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11046:1:55", + "nodeType": "YulLiteral", + "src": "11046:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11036:6:55", + "nodeType": "YulIdentifier", + "src": "11036:6:55" + }, + "nativeSrc": "11036:12:55", + "nodeType": "YulFunctionCall", + "src": "11036:12:55" + }, + "nativeSrc": "11036:12:55", + "nodeType": "YulExpressionStatement", + "src": "11036:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "11020:8:55", + "nodeType": "YulIdentifier", + "src": "11020:8:55" + }, + { + "name": "_1", + "nativeSrc": "11030:2:55", + "nodeType": "YulIdentifier", + "src": "11030:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "11017:2:55", + "nodeType": "YulIdentifier", + "src": "11017:2:55" + }, + "nativeSrc": "11017:16:55", + "nodeType": "YulFunctionCall", + "src": "11017:16:55" + }, + "nativeSrc": "11014:36:55", + "nodeType": "YulIf", + "src": "11014:36:55" + }, + { + "nativeSrc": "11059:72:55", + "nodeType": "YulAssignment", + "src": "11059:72:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11101:9:55", + "nodeType": "YulIdentifier", + "src": "11101:9:55" + }, + { + "name": "offset_1", + "nativeSrc": "11112:8:55", + "nodeType": "YulIdentifier", + "src": "11112:8:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11097:3:55", + "nodeType": "YulIdentifier", + "src": "11097:3:55" + }, + "nativeSrc": "11097:24:55", + "nodeType": "YulFunctionCall", + "src": "11097:24:55" + }, + { + "name": "dataEnd", + "nativeSrc": "11123:7:55", + "nodeType": "YulIdentifier", + "src": "11123:7:55" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "11069:27:55", + "nodeType": "YulIdentifier", + "src": "11069:27:55" + }, + "nativeSrc": "11069:62:55", + "nodeType": "YulFunctionCall", + "src": "11069:62:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "11059:6:55", + "nodeType": "YulIdentifier", + "src": "11059:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "10362:775:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10467:9:55", + "nodeType": "YulTypedName", + "src": "10467:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10478:7:55", + "nodeType": "YulTypedName", + "src": "10478:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10490:6:55", + "nodeType": "YulTypedName", + "src": "10490:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10498:6:55", + "nodeType": "YulTypedName", + "src": "10498:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "10506:6:55", + "nodeType": "YulTypedName", + "src": "10506:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "10514:6:55", + "nodeType": "YulTypedName", + "src": "10514:6:55", + "type": "" + } + ], + "src": "10362:775:55" + }, + { + "body": { + "nativeSrc": "11314:633:55", + "nodeType": "YulBlock", + "src": "11314:633:55", + "statements": [ + { + "body": { + "nativeSrc": "11361:16:55", + "nodeType": "YulBlock", + "src": "11361:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11370:1:55", + "nodeType": "YulLiteral", + "src": "11370:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11373:1:55", + "nodeType": "YulLiteral", + "src": "11373:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11363:6:55", + "nodeType": "YulIdentifier", + "src": "11363:6:55" + }, + "nativeSrc": "11363:12:55", + "nodeType": "YulFunctionCall", + "src": "11363:12:55" + }, + "nativeSrc": "11363:12:55", + "nodeType": "YulExpressionStatement", + "src": "11363:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11335:7:55", + "nodeType": "YulIdentifier", + "src": "11335:7:55" + }, + { + "name": "headStart", + "nativeSrc": "11344:9:55", + "nodeType": "YulIdentifier", + "src": "11344:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11331:3:55", + "nodeType": "YulIdentifier", + "src": "11331:3:55" + }, + "nativeSrc": "11331:23:55", + "nodeType": "YulFunctionCall", + "src": "11331:23:55" + }, + { + "kind": "number", + "nativeSrc": "11356:3:55", + "nodeType": "YulLiteral", + "src": "11356:3:55", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11327:3:55", + "nodeType": "YulIdentifier", + "src": "11327:3:55" + }, + "nativeSrc": "11327:33:55", + "nodeType": "YulFunctionCall", + "src": "11327:33:55" + }, + "nativeSrc": "11324:53:55", + "nodeType": "YulIf", + "src": "11324:53:55" + }, + { + "nativeSrc": "11386:36:55", + "nodeType": "YulVariableDeclaration", + "src": "11386:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11412:9:55", + "nodeType": "YulIdentifier", + "src": "11412:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11399:12:55", + "nodeType": "YulIdentifier", + "src": "11399:12:55" + }, + "nativeSrc": "11399:23:55", + "nodeType": "YulFunctionCall", + "src": "11399:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11390:5:55", + "nodeType": "YulTypedName", + "src": "11390:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "11456:5:55", + "nodeType": "YulIdentifier", + "src": "11456:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11431:24:55", + "nodeType": "YulIdentifier", + "src": "11431:24:55" + }, + "nativeSrc": "11431:31:55", + "nodeType": "YulFunctionCall", + "src": "11431:31:55" + }, + "nativeSrc": "11431:31:55", + "nodeType": "YulExpressionStatement", + "src": "11431:31:55" + }, + { + "nativeSrc": "11471:15:55", + "nodeType": "YulAssignment", + "src": "11471:15:55", + "value": { + "name": "value", + "nativeSrc": "11481:5:55", + "nodeType": "YulIdentifier", + "src": "11481:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11471:6:55", + "nodeType": "YulIdentifier", + "src": "11471:6:55" + } + ] + }, + { + "nativeSrc": "11495:47:55", + "nodeType": "YulVariableDeclaration", + "src": "11495:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11527:9:55", + "nodeType": "YulIdentifier", + "src": "11527:9:55" + }, + { + "kind": "number", + "nativeSrc": "11538:2:55", + "nodeType": "YulLiteral", + "src": "11538:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11523:3:55", + "nodeType": "YulIdentifier", + "src": "11523:3:55" + }, + "nativeSrc": "11523:18:55", + "nodeType": "YulFunctionCall", + "src": "11523:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11510:12:55", + "nodeType": "YulIdentifier", + "src": "11510:12:55" + }, + "nativeSrc": "11510:32:55", + "nodeType": "YulFunctionCall", + "src": "11510:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "11499:7:55", + "nodeType": "YulTypedName", + "src": "11499:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "11576:7:55", + "nodeType": "YulIdentifier", + "src": "11576:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11551:24:55", + "nodeType": "YulIdentifier", + "src": "11551:24:55" + }, + "nativeSrc": "11551:33:55", + "nodeType": "YulFunctionCall", + "src": "11551:33:55" + }, + "nativeSrc": "11551:33:55", + "nodeType": "YulExpressionStatement", + "src": "11551:33:55" + }, + { + "nativeSrc": "11593:17:55", + "nodeType": "YulAssignment", + "src": "11593:17:55", + "value": { + "name": "value_1", + "nativeSrc": "11603:7:55", + "nodeType": "YulIdentifier", + "src": "11603:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "11593:6:55", + "nodeType": "YulIdentifier", + "src": "11593:6:55" + } + ] + }, + { + "nativeSrc": "11619:47:55", + "nodeType": "YulVariableDeclaration", + "src": "11619:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11651:9:55", + "nodeType": "YulIdentifier", + "src": "11651:9:55" + }, + { + "kind": "number", + "nativeSrc": "11662:2:55", + "nodeType": "YulLiteral", + "src": "11662:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11647:3:55", + "nodeType": "YulIdentifier", + "src": "11647:3:55" + }, + "nativeSrc": "11647:18:55", + "nodeType": "YulFunctionCall", + "src": "11647:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11634:12:55", + "nodeType": "YulIdentifier", + "src": "11634:12:55" + }, + "nativeSrc": "11634:32:55", + "nodeType": "YulFunctionCall", + "src": "11634:32:55" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "11623:7:55", + "nodeType": "YulTypedName", + "src": "11623:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "11700:7:55", + "nodeType": "YulIdentifier", + "src": "11700:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11675:24:55", + "nodeType": "YulIdentifier", + "src": "11675:24:55" + }, + "nativeSrc": "11675:33:55", + "nodeType": "YulFunctionCall", + "src": "11675:33:55" + }, + "nativeSrc": "11675:33:55", + "nodeType": "YulExpressionStatement", + "src": "11675:33:55" + }, + { + "nativeSrc": "11717:17:55", + "nodeType": "YulAssignment", + "src": "11717:17:55", + "value": { + "name": "value_2", + "nativeSrc": "11727:7:55", + "nodeType": "YulIdentifier", + "src": "11727:7:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "11717:6:55", + "nodeType": "YulIdentifier", + "src": "11717:6:55" + } + ] + }, + { + "nativeSrc": "11743:42:55", + "nodeType": "YulAssignment", + "src": "11743:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11770:9:55", + "nodeType": "YulIdentifier", + "src": "11770:9:55" + }, + { + "kind": "number", + "nativeSrc": "11781:2:55", + "nodeType": "YulLiteral", + "src": "11781:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11766:3:55", + "nodeType": "YulIdentifier", + "src": "11766:3:55" + }, + "nativeSrc": "11766:18:55", + "nodeType": "YulFunctionCall", + "src": "11766:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11753:12:55", + "nodeType": "YulIdentifier", + "src": "11753:12:55" + }, + "nativeSrc": "11753:32:55", + "nodeType": "YulFunctionCall", + "src": "11753:32:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "11743:6:55", + "nodeType": "YulIdentifier", + "src": "11743:6:55" + } + ] + }, + { + "nativeSrc": "11794:43:55", + "nodeType": "YulAssignment", + "src": "11794:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11821:9:55", + "nodeType": "YulIdentifier", + "src": "11821:9:55" + }, + { + "kind": "number", + "nativeSrc": "11832:3:55", + "nodeType": "YulLiteral", + "src": "11832:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11817:3:55", + "nodeType": "YulIdentifier", + "src": "11817:3:55" + }, + "nativeSrc": "11817:19:55", + "nodeType": "YulFunctionCall", + "src": "11817:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11804:12:55", + "nodeType": "YulIdentifier", + "src": "11804:12:55" + }, + "nativeSrc": "11804:33:55", + "nodeType": "YulFunctionCall", + "src": "11804:33:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "11794:6:55", + "nodeType": "YulIdentifier", + "src": "11794:6:55" + } + ] + }, + { + "nativeSrc": "11846:43:55", + "nodeType": "YulAssignment", + "src": "11846:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11873:9:55", + "nodeType": "YulIdentifier", + "src": "11873:9:55" + }, + { + "kind": "number", + "nativeSrc": "11884:3:55", + "nodeType": "YulLiteral", + "src": "11884:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11869:3:55", + "nodeType": "YulIdentifier", + "src": "11869:3:55" + }, + "nativeSrc": "11869:19:55", + "nodeType": "YulFunctionCall", + "src": "11869:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11856:12:55", + "nodeType": "YulIdentifier", + "src": "11856:12:55" + }, + "nativeSrc": "11856:33:55", + "nodeType": "YulFunctionCall", + "src": "11856:33:55" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "11846:6:55", + "nodeType": "YulIdentifier", + "src": "11846:6:55" + } + ] + }, + { + "nativeSrc": "11898:43:55", + "nodeType": "YulAssignment", + "src": "11898:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11925:9:55", + "nodeType": "YulIdentifier", + "src": "11925:9:55" + }, + { + "kind": "number", + "nativeSrc": "11936:3:55", + "nodeType": "YulLiteral", + "src": "11936:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11921:3:55", + "nodeType": "YulIdentifier", + "src": "11921:3:55" + }, + "nativeSrc": "11921:19:55", + "nodeType": "YulFunctionCall", + "src": "11921:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11908:12:55", + "nodeType": "YulIdentifier", + "src": "11908:12:55" + }, + "nativeSrc": "11908:33:55", + "nodeType": "YulFunctionCall", + "src": "11908:33:55" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "11898:6:55", + "nodeType": "YulIdentifier", + "src": "11898:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256", + "nativeSrc": "11142:805:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11232:9:55", + "nodeType": "YulTypedName", + "src": "11232:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11243:7:55", + "nodeType": "YulTypedName", + "src": "11243:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11255:6:55", + "nodeType": "YulTypedName", + "src": "11255:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11263:6:55", + "nodeType": "YulTypedName", + "src": "11263:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11271:6:55", + "nodeType": "YulTypedName", + "src": "11271:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11279:6:55", + "nodeType": "YulTypedName", + "src": "11279:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11287:6:55", + "nodeType": "YulTypedName", + "src": "11287:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "11295:6:55", + "nodeType": "YulTypedName", + "src": "11295:6:55", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "11303:6:55", + "nodeType": "YulTypedName", + "src": "11303:6:55", + "type": "" + } + ], + "src": "11142:805:55" + }, + { + "body": { + "nativeSrc": "12048:359:55", + "nodeType": "YulBlock", + "src": "12048:359:55", + "statements": [ + { + "body": { + "nativeSrc": "12094:16:55", + "nodeType": "YulBlock", + "src": "12094:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12103:1:55", + "nodeType": "YulLiteral", + "src": "12103:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12106:1:55", + "nodeType": "YulLiteral", + "src": "12106:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12096:6:55", + "nodeType": "YulIdentifier", + "src": "12096:6:55" + }, + "nativeSrc": "12096:12:55", + "nodeType": "YulFunctionCall", + "src": "12096:12:55" + }, + "nativeSrc": "12096:12:55", + "nodeType": "YulExpressionStatement", + "src": "12096:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12069:7:55", + "nodeType": "YulIdentifier", + "src": "12069:7:55" + }, + { + "name": "headStart", + "nativeSrc": "12078:9:55", + "nodeType": "YulIdentifier", + "src": "12078:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12065:3:55", + "nodeType": "YulIdentifier", + "src": "12065:3:55" + }, + "nativeSrc": "12065:23:55", + "nodeType": "YulFunctionCall", + "src": "12065:23:55" + }, + { + "kind": "number", + "nativeSrc": "12090:2:55", + "nodeType": "YulLiteral", + "src": "12090:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12061:3:55", + "nodeType": "YulIdentifier", + "src": "12061:3:55" + }, + "nativeSrc": "12061:32:55", + "nodeType": "YulFunctionCall", + "src": "12061:32:55" + }, + "nativeSrc": "12058:52:55", + "nodeType": "YulIf", + "src": "12058:52:55" + }, + { + "nativeSrc": "12119:36:55", + "nodeType": "YulVariableDeclaration", + "src": "12119:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12145:9:55", + "nodeType": "YulIdentifier", + "src": "12145:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12132:12:55", + "nodeType": "YulIdentifier", + "src": "12132:12:55" + }, + "nativeSrc": "12132:23:55", + "nodeType": "YulFunctionCall", + "src": "12132:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12123:5:55", + "nodeType": "YulTypedName", + "src": "12123:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12189:5:55", + "nodeType": "YulIdentifier", + "src": "12189:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12164:24:55", + "nodeType": "YulIdentifier", + "src": "12164:24:55" + }, + "nativeSrc": "12164:31:55", + "nodeType": "YulFunctionCall", + "src": "12164:31:55" + }, + "nativeSrc": "12164:31:55", + "nodeType": "YulExpressionStatement", + "src": "12164:31:55" + }, + { + "nativeSrc": "12204:15:55", + "nodeType": "YulAssignment", + "src": "12204:15:55", + "value": { + "name": "value", + "nativeSrc": "12214:5:55", + "nodeType": "YulIdentifier", + "src": "12214:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12204:6:55", + "nodeType": "YulIdentifier", + "src": "12204:6:55" + } + ] + }, + { + "nativeSrc": "12228:46:55", + "nodeType": "YulVariableDeclaration", + "src": "12228:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12259:9:55", + "nodeType": "YulIdentifier", + "src": "12259:9:55" + }, + { + "kind": "number", + "nativeSrc": "12270:2:55", + "nodeType": "YulLiteral", + "src": "12270:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12255:3:55", + "nodeType": "YulIdentifier", + "src": "12255:3:55" + }, + "nativeSrc": "12255:18:55", + "nodeType": "YulFunctionCall", + "src": "12255:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12242:12:55", + "nodeType": "YulIdentifier", + "src": "12242:12:55" + }, + "nativeSrc": "12242:32:55", + "nodeType": "YulFunctionCall", + "src": "12242:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "12232:6:55", + "nodeType": "YulTypedName", + "src": "12232:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12317:16:55", + "nodeType": "YulBlock", + "src": "12317:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12326:1:55", + "nodeType": "YulLiteral", + "src": "12326:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12329:1:55", + "nodeType": "YulLiteral", + "src": "12329:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12319:6:55", + "nodeType": "YulIdentifier", + "src": "12319:6:55" + }, + "nativeSrc": "12319:12:55", + "nodeType": "YulFunctionCall", + "src": "12319:12:55" + }, + "nativeSrc": "12319:12:55", + "nodeType": "YulExpressionStatement", + "src": "12319:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "12289:6:55", + "nodeType": "YulIdentifier", + "src": "12289:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12305:2:55", + "nodeType": "YulLiteral", + "src": "12305:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "12309:1:55", + "nodeType": "YulLiteral", + "src": "12309:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12301:3:55", + "nodeType": "YulIdentifier", + "src": "12301:3:55" + }, + "nativeSrc": "12301:10:55", + "nodeType": "YulFunctionCall", + "src": "12301:10:55" + }, + { + "kind": "number", + "nativeSrc": "12313:1:55", + "nodeType": "YulLiteral", + "src": "12313:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12297:3:55", + "nodeType": "YulIdentifier", + "src": "12297:3:55" + }, + "nativeSrc": "12297:18:55", + "nodeType": "YulFunctionCall", + "src": "12297:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12286:2:55", + "nodeType": "YulIdentifier", + "src": "12286:2:55" + }, + "nativeSrc": "12286:30:55", + "nodeType": "YulFunctionCall", + "src": "12286:30:55" + }, + "nativeSrc": "12283:50:55", + "nodeType": "YulIf", + "src": "12283:50:55" + }, + { + "nativeSrc": "12342:59:55", + "nodeType": "YulAssignment", + "src": "12342:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12373:9:55", + "nodeType": "YulIdentifier", + "src": "12373:9:55" + }, + { + "name": "offset", + "nativeSrc": "12384:6:55", + "nodeType": "YulIdentifier", + "src": "12384:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12369:3:55", + "nodeType": "YulIdentifier", + "src": "12369:3:55" + }, + "nativeSrc": "12369:22:55", + "nodeType": "YulFunctionCall", + "src": "12369:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "12393:7:55", + "nodeType": "YulIdentifier", + "src": "12393:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "12352:16:55", + "nodeType": "YulIdentifier", + "src": "12352:16:55" + }, + "nativeSrc": "12352:49:55", + "nodeType": "YulFunctionCall", + "src": "12352:49:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12342:6:55", + "nodeType": "YulIdentifier", + "src": "12342:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "11952:455:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12006:9:55", + "nodeType": "YulTypedName", + "src": "12006:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12017:7:55", + "nodeType": "YulTypedName", + "src": "12017:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12029:6:55", + "nodeType": "YulTypedName", + "src": "12029:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12037:6:55", + "nodeType": "YulTypedName", + "src": "12037:6:55", + "type": "" + } + ], + "src": "11952:455:55" + }, + { + "body": { + "nativeSrc": "12513:102:55", + "nodeType": "YulBlock", + "src": "12513:102:55", + "statements": [ + { + "nativeSrc": "12523:26:55", + "nodeType": "YulAssignment", + "src": "12523:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12535:9:55", + "nodeType": "YulIdentifier", + "src": "12535:9:55" + }, + { + "kind": "number", + "nativeSrc": "12546:2:55", + "nodeType": "YulLiteral", + "src": "12546:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12531:3:55", + "nodeType": "YulIdentifier", + "src": "12531:3:55" + }, + "nativeSrc": "12531:18:55", + "nodeType": "YulFunctionCall", + "src": "12531:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12523:4:55", + "nodeType": "YulIdentifier", + "src": "12523:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12565:9:55", + "nodeType": "YulIdentifier", + "src": "12565:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12580:6:55", + "nodeType": "YulIdentifier", + "src": "12580:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12596:3:55", + "nodeType": "YulLiteral", + "src": "12596:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12601:1:55", + "nodeType": "YulLiteral", + "src": "12601:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12592:3:55", + "nodeType": "YulIdentifier", + "src": "12592:3:55" + }, + "nativeSrc": "12592:11:55", + "nodeType": "YulFunctionCall", + "src": "12592:11:55" + }, + { + "kind": "number", + "nativeSrc": "12605:1:55", + "nodeType": "YulLiteral", + "src": "12605:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12588:3:55", + "nodeType": "YulIdentifier", + "src": "12588:3:55" + }, + "nativeSrc": "12588:19:55", + "nodeType": "YulFunctionCall", + "src": "12588:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12576:3:55", + "nodeType": "YulIdentifier", + "src": "12576:3:55" + }, + "nativeSrc": "12576:32:55", + "nodeType": "YulFunctionCall", + "src": "12576:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12558:6:55", + "nodeType": "YulIdentifier", + "src": "12558:6:55" + }, + "nativeSrc": "12558:51:55", + "nodeType": "YulFunctionCall", + "src": "12558:51:55" + }, + "nativeSrc": "12558:51:55", + "nodeType": "YulExpressionStatement", + "src": "12558:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "12412:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12482:9:55", + "nodeType": "YulTypedName", + "src": "12482:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12493:6:55", + "nodeType": "YulTypedName", + "src": "12493:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12504:4:55", + "nodeType": "YulTypedName", + "src": "12504:4:55", + "type": "" + } + ], + "src": "12412:203:55" + }, + { + "body": { + "nativeSrc": "12707:228:55", + "nodeType": "YulBlock", + "src": "12707:228:55", + "statements": [ + { + "body": { + "nativeSrc": "12753:16:55", + "nodeType": "YulBlock", + "src": "12753:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12762:1:55", + "nodeType": "YulLiteral", + "src": "12762:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12765:1:55", + "nodeType": "YulLiteral", + "src": "12765:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12755:6:55", + "nodeType": "YulIdentifier", + "src": "12755:6:55" + }, + "nativeSrc": "12755:12:55", + "nodeType": "YulFunctionCall", + "src": "12755:12:55" + }, + "nativeSrc": "12755:12:55", + "nodeType": "YulExpressionStatement", + "src": "12755:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12728:7:55", + "nodeType": "YulIdentifier", + "src": "12728:7:55" + }, + { + "name": "headStart", + "nativeSrc": "12737:9:55", + "nodeType": "YulIdentifier", + "src": "12737:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12724:3:55", + "nodeType": "YulIdentifier", + "src": "12724:3:55" + }, + "nativeSrc": "12724:23:55", + "nodeType": "YulFunctionCall", + "src": "12724:23:55" + }, + { + "kind": "number", + "nativeSrc": "12749:2:55", + "nodeType": "YulLiteral", + "src": "12749:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12720:3:55", + "nodeType": "YulIdentifier", + "src": "12720:3:55" + }, + "nativeSrc": "12720:32:55", + "nodeType": "YulFunctionCall", + "src": "12720:32:55" + }, + "nativeSrc": "12717:52:55", + "nodeType": "YulIf", + "src": "12717:52:55" + }, + { + "nativeSrc": "12778:36:55", + "nodeType": "YulVariableDeclaration", + "src": "12778:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12804:9:55", + "nodeType": "YulIdentifier", + "src": "12804:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12791:12:55", + "nodeType": "YulIdentifier", + "src": "12791:12:55" + }, + "nativeSrc": "12791:23:55", + "nodeType": "YulFunctionCall", + "src": "12791:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12782:5:55", + "nodeType": "YulTypedName", + "src": "12782:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12848:5:55", + "nodeType": "YulIdentifier", + "src": "12848:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12823:24:55", + "nodeType": "YulIdentifier", + "src": "12823:24:55" + }, + "nativeSrc": "12823:31:55", + "nodeType": "YulFunctionCall", + "src": "12823:31:55" + }, + "nativeSrc": "12823:31:55", + "nodeType": "YulExpressionStatement", + "src": "12823:31:55" + }, + { + "nativeSrc": "12863:15:55", + "nodeType": "YulAssignment", + "src": "12863:15:55", + "value": { + "name": "value", + "nativeSrc": "12873:5:55", + "nodeType": "YulIdentifier", + "src": "12873:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12863:6:55", + "nodeType": "YulIdentifier", + "src": "12863:6:55" + } + ] + }, + { + "nativeSrc": "12887:42:55", + "nodeType": "YulAssignment", + "src": "12887:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12914:9:55", + "nodeType": "YulIdentifier", + "src": "12914:9:55" + }, + { + "kind": "number", + "nativeSrc": "12925:2:55", + "nodeType": "YulLiteral", + "src": "12925:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12910:3:55", + "nodeType": "YulIdentifier", + "src": "12910:3:55" + }, + "nativeSrc": "12910:18:55", + "nodeType": "YulFunctionCall", + "src": "12910:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12897:12:55", + "nodeType": "YulIdentifier", + "src": "12897:12:55" + }, + "nativeSrc": "12897:32:55", + "nodeType": "YulFunctionCall", + "src": "12897:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12887:6:55", + "nodeType": "YulIdentifier", + "src": "12887:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "12620:315:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12665:9:55", + "nodeType": "YulTypedName", + "src": "12665:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12676:7:55", + "nodeType": "YulTypedName", + "src": "12676:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12688:6:55", + "nodeType": "YulTypedName", + "src": "12688:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12696:6:55", + "nodeType": "YulTypedName", + "src": "12696:6:55", + "type": "" + } + ], + "src": "12620:315:55" + }, + { + "body": { + "nativeSrc": "13103:587:55", + "nodeType": "YulBlock", + "src": "13103:587:55", + "statements": [ + { + "body": { + "nativeSrc": "13150:16:55", + "nodeType": "YulBlock", + "src": "13150:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13159:1:55", + "nodeType": "YulLiteral", + "src": "13159:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13162:1:55", + "nodeType": "YulLiteral", + "src": "13162:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13152:6:55", + "nodeType": "YulIdentifier", + "src": "13152:6:55" + }, + "nativeSrc": "13152:12:55", + "nodeType": "YulFunctionCall", + "src": "13152:12:55" + }, + "nativeSrc": "13152:12:55", + "nodeType": "YulExpressionStatement", + "src": "13152:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "13124:7:55", + "nodeType": "YulIdentifier", + "src": "13124:7:55" + }, + { + "name": "headStart", + "nativeSrc": "13133:9:55", + "nodeType": "YulIdentifier", + "src": "13133:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13120:3:55", + "nodeType": "YulIdentifier", + "src": "13120:3:55" + }, + "nativeSrc": "13120:23:55", + "nodeType": "YulFunctionCall", + "src": "13120:23:55" + }, + { + "kind": "number", + "nativeSrc": "13145:3:55", + "nodeType": "YulLiteral", + "src": "13145:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "13116:3:55", + "nodeType": "YulIdentifier", + "src": "13116:3:55" + }, + "nativeSrc": "13116:33:55", + "nodeType": "YulFunctionCall", + "src": "13116:33:55" + }, + "nativeSrc": "13113:53:55", + "nodeType": "YulIf", + "src": "13113:53:55" + }, + { + "nativeSrc": "13175:36:55", + "nodeType": "YulVariableDeclaration", + "src": "13175:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13201:9:55", + "nodeType": "YulIdentifier", + "src": "13201:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13188:12:55", + "nodeType": "YulIdentifier", + "src": "13188:12:55" + }, + "nativeSrc": "13188:23:55", + "nodeType": "YulFunctionCall", + "src": "13188:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "13179:5:55", + "nodeType": "YulTypedName", + "src": "13179:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13245:5:55", + "nodeType": "YulIdentifier", + "src": "13245:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "13220:24:55", + "nodeType": "YulIdentifier", + "src": "13220:24:55" + }, + "nativeSrc": "13220:31:55", + "nodeType": "YulFunctionCall", + "src": "13220:31:55" + }, + "nativeSrc": "13220:31:55", + "nodeType": "YulExpressionStatement", + "src": "13220:31:55" + }, + { + "nativeSrc": "13260:15:55", + "nodeType": "YulAssignment", + "src": "13260:15:55", + "value": { + "name": "value", + "nativeSrc": "13270:5:55", + "nodeType": "YulIdentifier", + "src": "13270:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "13260:6:55", + "nodeType": "YulIdentifier", + "src": "13260:6:55" + } + ] + }, + { + "nativeSrc": "13284:46:55", + "nodeType": "YulVariableDeclaration", + "src": "13284:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13315:9:55", + "nodeType": "YulIdentifier", + "src": "13315:9:55" + }, + { + "kind": "number", + "nativeSrc": "13326:2:55", + "nodeType": "YulLiteral", + "src": "13326:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13311:3:55", + "nodeType": "YulIdentifier", + "src": "13311:3:55" + }, + "nativeSrc": "13311:18:55", + "nodeType": "YulFunctionCall", + "src": "13311:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13298:12:55", + "nodeType": "YulIdentifier", + "src": "13298:12:55" + }, + "nativeSrc": "13298:32:55", + "nodeType": "YulFunctionCall", + "src": "13298:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "13288:6:55", + "nodeType": "YulTypedName", + "src": "13288:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13373:16:55", + "nodeType": "YulBlock", + "src": "13373:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13382:1:55", + "nodeType": "YulLiteral", + "src": "13382:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13385:1:55", + "nodeType": "YulLiteral", + "src": "13385:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13375:6:55", + "nodeType": "YulIdentifier", + "src": "13375:6:55" + }, + "nativeSrc": "13375:12:55", + "nodeType": "YulFunctionCall", + "src": "13375:12:55" + }, + "nativeSrc": "13375:12:55", + "nodeType": "YulExpressionStatement", + "src": "13375:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "13345:6:55", + "nodeType": "YulIdentifier", + "src": "13345:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13361:2:55", + "nodeType": "YulLiteral", + "src": "13361:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "13365:1:55", + "nodeType": "YulLiteral", + "src": "13365:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13357:3:55", + "nodeType": "YulIdentifier", + "src": "13357:3:55" + }, + "nativeSrc": "13357:10:55", + "nodeType": "YulFunctionCall", + "src": "13357:10:55" + }, + { + "kind": "number", + "nativeSrc": "13369:1:55", + "nodeType": "YulLiteral", + "src": "13369:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13353:3:55", + "nodeType": "YulIdentifier", + "src": "13353:3:55" + }, + "nativeSrc": "13353:18:55", + "nodeType": "YulFunctionCall", + "src": "13353:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13342:2:55", + "nodeType": "YulIdentifier", + "src": "13342:2:55" + }, + "nativeSrc": "13342:30:55", + "nodeType": "YulFunctionCall", + "src": "13342:30:55" + }, + "nativeSrc": "13339:50:55", + "nodeType": "YulIf", + "src": "13339:50:55" + }, + { + "nativeSrc": "13398:59:55", + "nodeType": "YulAssignment", + "src": "13398:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13429:9:55", + "nodeType": "YulIdentifier", + "src": "13429:9:55" + }, + { + "name": "offset", + "nativeSrc": "13440:6:55", + "nodeType": "YulIdentifier", + "src": "13440:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13425:3:55", + "nodeType": "YulIdentifier", + "src": "13425:3:55" + }, + "nativeSrc": "13425:22:55", + "nodeType": "YulFunctionCall", + "src": "13425:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "13449:7:55", + "nodeType": "YulIdentifier", + "src": "13449:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "13408:16:55", + "nodeType": "YulIdentifier", + "src": "13408:16:55" + }, + "nativeSrc": "13408:49:55", + "nodeType": "YulFunctionCall", + "src": "13408:49:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "13398:6:55", + "nodeType": "YulIdentifier", + "src": "13398:6:55" + } + ] + }, + { + "nativeSrc": "13466:42:55", + "nodeType": "YulAssignment", + "src": "13466:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13493:9:55", + "nodeType": "YulIdentifier", + "src": "13493:9:55" + }, + { + "kind": "number", + "nativeSrc": "13504:2:55", + "nodeType": "YulLiteral", + "src": "13504:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13489:3:55", + "nodeType": "YulIdentifier", + "src": "13489:3:55" + }, + "nativeSrc": "13489:18:55", + "nodeType": "YulFunctionCall", + "src": "13489:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13476:12:55", + "nodeType": "YulIdentifier", + "src": "13476:12:55" + }, + "nativeSrc": "13476:32:55", + "nodeType": "YulFunctionCall", + "src": "13476:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "13466:6:55", + "nodeType": "YulIdentifier", + "src": "13466:6:55" + } + ] + }, + { + "nativeSrc": "13517:42:55", + "nodeType": "YulAssignment", + "src": "13517:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13544:9:55", + "nodeType": "YulIdentifier", + "src": "13544:9:55" + }, + { + "kind": "number", + "nativeSrc": "13555:2:55", + "nodeType": "YulLiteral", + "src": "13555:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13540:3:55", + "nodeType": "YulIdentifier", + "src": "13540:3:55" + }, + "nativeSrc": "13540:18:55", + "nodeType": "YulFunctionCall", + "src": "13540:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13527:12:55", + "nodeType": "YulIdentifier", + "src": "13527:12:55" + }, + "nativeSrc": "13527:32:55", + "nodeType": "YulFunctionCall", + "src": "13527:32:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "13517:6:55", + "nodeType": "YulIdentifier", + "src": "13517:6:55" + } + ] + }, + { + "nativeSrc": "13568:48:55", + "nodeType": "YulVariableDeclaration", + "src": "13568:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13600:9:55", + "nodeType": "YulIdentifier", + "src": "13600:9:55" + }, + { + "kind": "number", + "nativeSrc": "13611:3:55", + "nodeType": "YulLiteral", + "src": "13611:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13596:3:55", + "nodeType": "YulIdentifier", + "src": "13596:3:55" + }, + "nativeSrc": "13596:19:55", + "nodeType": "YulFunctionCall", + "src": "13596:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13583:12:55", + "nodeType": "YulIdentifier", + "src": "13583:12:55" + }, + "nativeSrc": "13583:33:55", + "nodeType": "YulFunctionCall", + "src": "13583:33:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "13572:7:55", + "nodeType": "YulTypedName", + "src": "13572:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "13650:7:55", + "nodeType": "YulIdentifier", + "src": "13650:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "13625:24:55", + "nodeType": "YulIdentifier", + "src": "13625:24:55" + }, + "nativeSrc": "13625:33:55", + "nodeType": "YulFunctionCall", + "src": "13625:33:55" + }, + "nativeSrc": "13625:33:55", + "nodeType": "YulExpressionStatement", + "src": "13625:33:55" + }, + { + "nativeSrc": "13667:17:55", + "nodeType": "YulAssignment", + "src": "13667:17:55", + "value": { + "name": "value_1", + "nativeSrc": "13677:7:55", + "nodeType": "YulIdentifier", + "src": "13677:7:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "13667:6:55", + "nodeType": "YulIdentifier", + "src": "13667:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445", + "nativeSrc": "12940:750:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13037:9:55", + "nodeType": "YulTypedName", + "src": "13037:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13048:7:55", + "nodeType": "YulTypedName", + "src": "13048:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13060:6:55", + "nodeType": "YulTypedName", + "src": "13060:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13068:6:55", + "nodeType": "YulTypedName", + "src": "13068:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "13076:6:55", + "nodeType": "YulTypedName", + "src": "13076:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "13084:6:55", + "nodeType": "YulTypedName", + "src": "13084:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "13092:6:55", + "nodeType": "YulTypedName", + "src": "13092:6:55", + "type": "" + } + ], + "src": "12940:750:55" + }, + { + "body": { + "nativeSrc": "13824:119:55", + "nodeType": "YulBlock", + "src": "13824:119:55", + "statements": [ + { + "nativeSrc": "13834:26:55", + "nodeType": "YulAssignment", + "src": "13834:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13846:9:55", + "nodeType": "YulIdentifier", + "src": "13846:9:55" + }, + { + "kind": "number", + "nativeSrc": "13857:2:55", + "nodeType": "YulLiteral", + "src": "13857:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13842:3:55", + "nodeType": "YulIdentifier", + "src": "13842:3:55" + }, + "nativeSrc": "13842:18:55", + "nodeType": "YulFunctionCall", + "src": "13842:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13834:4:55", + "nodeType": "YulIdentifier", + "src": "13834:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13876:9:55", + "nodeType": "YulIdentifier", + "src": "13876:9:55" + }, + { + "name": "value0", + "nativeSrc": "13887:6:55", + "nodeType": "YulIdentifier", + "src": "13887:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13869:6:55", + "nodeType": "YulIdentifier", + "src": "13869:6:55" + }, + "nativeSrc": "13869:25:55", + "nodeType": "YulFunctionCall", + "src": "13869:25:55" + }, + "nativeSrc": "13869:25:55", + "nodeType": "YulExpressionStatement", + "src": "13869:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13914:9:55", + "nodeType": "YulIdentifier", + "src": "13914:9:55" + }, + { + "kind": "number", + "nativeSrc": "13925:2:55", + "nodeType": "YulLiteral", + "src": "13925:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13910:3:55", + "nodeType": "YulIdentifier", + "src": "13910:3:55" + }, + "nativeSrc": "13910:18:55", + "nodeType": "YulFunctionCall", + "src": "13910:18:55" + }, + { + "name": "value1", + "nativeSrc": "13930:6:55", + "nodeType": "YulIdentifier", + "src": "13930:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13903:6:55", + "nodeType": "YulIdentifier", + "src": "13903:6:55" + }, + "nativeSrc": "13903:34:55", + "nodeType": "YulFunctionCall", + "src": "13903:34:55" + }, + "nativeSrc": "13903:34:55", + "nodeType": "YulExpressionStatement", + "src": "13903:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "13695:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13785:9:55", + "nodeType": "YulTypedName", + "src": "13785:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13796:6:55", + "nodeType": "YulTypedName", + "src": "13796:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13804:6:55", + "nodeType": "YulTypedName", + "src": "13804:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13815:4:55", + "nodeType": "YulTypedName", + "src": "13815:4:55", + "type": "" + } + ], + "src": "13695:248:55" + }, + { + "body": { + "nativeSrc": "14018:177:55", + "nodeType": "YulBlock", + "src": "14018:177:55", + "statements": [ + { + "body": { + "nativeSrc": "14064:16:55", + "nodeType": "YulBlock", + "src": "14064:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14073:1:55", + "nodeType": "YulLiteral", + "src": "14073:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14076:1:55", + "nodeType": "YulLiteral", + "src": "14076:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14066:6:55", + "nodeType": "YulIdentifier", + "src": "14066:6:55" + }, + "nativeSrc": "14066:12:55", + "nodeType": "YulFunctionCall", + "src": "14066:12:55" + }, + "nativeSrc": "14066:12:55", + "nodeType": "YulExpressionStatement", + "src": "14066:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14039:7:55", + "nodeType": "YulIdentifier", + "src": "14039:7:55" + }, + { + "name": "headStart", + "nativeSrc": "14048:9:55", + "nodeType": "YulIdentifier", + "src": "14048:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14035:3:55", + "nodeType": "YulIdentifier", + "src": "14035:3:55" + }, + "nativeSrc": "14035:23:55", + "nodeType": "YulFunctionCall", + "src": "14035:23:55" + }, + { + "kind": "number", + "nativeSrc": "14060:2:55", + "nodeType": "YulLiteral", + "src": "14060:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14031:3:55", + "nodeType": "YulIdentifier", + "src": "14031:3:55" + }, + "nativeSrc": "14031:32:55", + "nodeType": "YulFunctionCall", + "src": "14031:32:55" + }, + "nativeSrc": "14028:52:55", + "nodeType": "YulIf", + "src": "14028:52:55" + }, + { + "nativeSrc": "14089:36:55", + "nodeType": "YulVariableDeclaration", + "src": "14089:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14115:9:55", + "nodeType": "YulIdentifier", + "src": "14115:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14102:12:55", + "nodeType": "YulIdentifier", + "src": "14102:12:55" + }, + "nativeSrc": "14102:23:55", + "nodeType": "YulFunctionCall", + "src": "14102:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "14093:5:55", + "nodeType": "YulTypedName", + "src": "14093:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "14159:5:55", + "nodeType": "YulIdentifier", + "src": "14159:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "14134:24:55", + "nodeType": "YulIdentifier", + "src": "14134:24:55" + }, + "nativeSrc": "14134:31:55", + "nodeType": "YulFunctionCall", + "src": "14134:31:55" + }, + "nativeSrc": "14134:31:55", + "nodeType": "YulExpressionStatement", + "src": "14134:31:55" + }, + { + "nativeSrc": "14174:15:55", + "nodeType": "YulAssignment", + "src": "14174:15:55", + "value": { + "name": "value", + "nativeSrc": "14184:5:55", + "nodeType": "YulIdentifier", + "src": "14184:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14174:6:55", + "nodeType": "YulIdentifier", + "src": "14174:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "13948:247:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13984:9:55", + "nodeType": "YulTypedName", + "src": "13984:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13995:7:55", + "nodeType": "YulTypedName", + "src": "13995:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14007:6:55", + "nodeType": "YulTypedName", + "src": "14007:6:55", + "type": "" + } + ], + "src": "13948:247:55" + }, + { + "body": { + "nativeSrc": "14287:161:55", + "nodeType": "YulBlock", + "src": "14287:161:55", + "statements": [ + { + "body": { + "nativeSrc": "14333:16:55", + "nodeType": "YulBlock", + "src": "14333:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14342:1:55", + "nodeType": "YulLiteral", + "src": "14342:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14345:1:55", + "nodeType": "YulLiteral", + "src": "14345:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14335:6:55", + "nodeType": "YulIdentifier", + "src": "14335:6:55" + }, + "nativeSrc": "14335:12:55", + "nodeType": "YulFunctionCall", + "src": "14335:12:55" + }, + "nativeSrc": "14335:12:55", + "nodeType": "YulExpressionStatement", + "src": "14335:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14308:7:55", + "nodeType": "YulIdentifier", + "src": "14308:7:55" + }, + { + "name": "headStart", + "nativeSrc": "14317:9:55", + "nodeType": "YulIdentifier", + "src": "14317:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14304:3:55", + "nodeType": "YulIdentifier", + "src": "14304:3:55" + }, + "nativeSrc": "14304:23:55", + "nodeType": "YulFunctionCall", + "src": "14304:23:55" + }, + { + "kind": "number", + "nativeSrc": "14329:2:55", + "nodeType": "YulLiteral", + "src": "14329:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14300:3:55", + "nodeType": "YulIdentifier", + "src": "14300:3:55" + }, + "nativeSrc": "14300:32:55", + "nodeType": "YulFunctionCall", + "src": "14300:32:55" + }, + "nativeSrc": "14297:52:55", + "nodeType": "YulIf", + "src": "14297:52:55" + }, + { + "nativeSrc": "14358:33:55", + "nodeType": "YulAssignment", + "src": "14358:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14381:9:55", + "nodeType": "YulIdentifier", + "src": "14381:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14368:12:55", + "nodeType": "YulIdentifier", + "src": "14368:12:55" + }, + "nativeSrc": "14368:23:55", + "nodeType": "YulFunctionCall", + "src": "14368:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14358:6:55", + "nodeType": "YulIdentifier", + "src": "14358:6:55" + } + ] + }, + { + "nativeSrc": "14400:42:55", + "nodeType": "YulAssignment", + "src": "14400:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14427:9:55", + "nodeType": "YulIdentifier", + "src": "14427:9:55" + }, + { + "kind": "number", + "nativeSrc": "14438:2:55", + "nodeType": "YulLiteral", + "src": "14438:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14423:3:55", + "nodeType": "YulIdentifier", + "src": "14423:3:55" + }, + "nativeSrc": "14423:18:55", + "nodeType": "YulFunctionCall", + "src": "14423:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14410:12:55", + "nodeType": "YulIdentifier", + "src": "14410:12:55" + }, + "nativeSrc": "14410:32:55", + "nodeType": "YulFunctionCall", + "src": "14410:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "14400:6:55", + "nodeType": "YulIdentifier", + "src": "14400:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nativeSrc": "14200:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14245:9:55", + "nodeType": "YulTypedName", + "src": "14245:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14256:7:55", + "nodeType": "YulTypedName", + "src": "14256:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14268:6:55", + "nodeType": "YulTypedName", + "src": "14268:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14276:6:55", + "nodeType": "YulTypedName", + "src": "14276:6:55", + "type": "" + } + ], + "src": "14200:248:55" + }, + { + "body": { + "nativeSrc": "14560:434:55", + "nodeType": "YulBlock", + "src": "14560:434:55", + "statements": [ + { + "body": { + "nativeSrc": "14606:16:55", + "nodeType": "YulBlock", + "src": "14606:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14615:1:55", + "nodeType": "YulLiteral", + "src": "14615:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14618:1:55", + "nodeType": "YulLiteral", + "src": "14618:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14608:6:55", + "nodeType": "YulIdentifier", + "src": "14608:6:55" + }, + "nativeSrc": "14608:12:55", + "nodeType": "YulFunctionCall", + "src": "14608:12:55" + }, + "nativeSrc": "14608:12:55", + "nodeType": "YulExpressionStatement", + "src": "14608:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14581:7:55", + "nodeType": "YulIdentifier", + "src": "14581:7:55" + }, + { + "name": "headStart", + "nativeSrc": "14590:9:55", + "nodeType": "YulIdentifier", + "src": "14590:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14577:3:55", + "nodeType": "YulIdentifier", + "src": "14577:3:55" + }, + "nativeSrc": "14577:23:55", + "nodeType": "YulFunctionCall", + "src": "14577:23:55" + }, + { + "kind": "number", + "nativeSrc": "14602:2:55", + "nodeType": "YulLiteral", + "src": "14602:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14573:3:55", + "nodeType": "YulIdentifier", + "src": "14573:3:55" + }, + "nativeSrc": "14573:32:55", + "nodeType": "YulFunctionCall", + "src": "14573:32:55" + }, + "nativeSrc": "14570:52:55", + "nodeType": "YulIf", + "src": "14570:52:55" + }, + { + "nativeSrc": "14631:37:55", + "nodeType": "YulVariableDeclaration", + "src": "14631:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14658:9:55", + "nodeType": "YulIdentifier", + "src": "14658:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14645:12:55", + "nodeType": "YulIdentifier", + "src": "14645:12:55" + }, + "nativeSrc": "14645:23:55", + "nodeType": "YulFunctionCall", + "src": "14645:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "14635:6:55", + "nodeType": "YulTypedName", + "src": "14635:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "14677:28:55", + "nodeType": "YulVariableDeclaration", + "src": "14677:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14695:2:55", + "nodeType": "YulLiteral", + "src": "14695:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "14699:1:55", + "nodeType": "YulLiteral", + "src": "14699:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14691:3:55", + "nodeType": "YulIdentifier", + "src": "14691:3:55" + }, + "nativeSrc": "14691:10:55", + "nodeType": "YulFunctionCall", + "src": "14691:10:55" + }, + { + "kind": "number", + "nativeSrc": "14703:1:55", + "nodeType": "YulLiteral", + "src": "14703:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14687:3:55", + "nodeType": "YulIdentifier", + "src": "14687:3:55" + }, + "nativeSrc": "14687:18:55", + "nodeType": "YulFunctionCall", + "src": "14687:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "14681:2:55", + "nodeType": "YulTypedName", + "src": "14681:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14732:16:55", + "nodeType": "YulBlock", + "src": "14732:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14741:1:55", + "nodeType": "YulLiteral", + "src": "14741:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14744:1:55", + "nodeType": "YulLiteral", + "src": "14744:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14734:6:55", + "nodeType": "YulIdentifier", + "src": "14734:6:55" + }, + "nativeSrc": "14734:12:55", + "nodeType": "YulFunctionCall", + "src": "14734:12:55" + }, + "nativeSrc": "14734:12:55", + "nodeType": "YulExpressionStatement", + "src": "14734:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "14720:6:55", + "nodeType": "YulIdentifier", + "src": "14720:6:55" + }, + { + "name": "_1", + "nativeSrc": "14728:2:55", + "nodeType": "YulIdentifier", + "src": "14728:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14717:2:55", + "nodeType": "YulIdentifier", + "src": "14717:2:55" + }, + "nativeSrc": "14717:14:55", + "nodeType": "YulFunctionCall", + "src": "14717:14:55" + }, + "nativeSrc": "14714:34:55", + "nodeType": "YulIf", + "src": "14714:34:55" + }, + { + "nativeSrc": "14757:59:55", + "nodeType": "YulAssignment", + "src": "14757:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14788:9:55", + "nodeType": "YulIdentifier", + "src": "14788:9:55" + }, + { + "name": "offset", + "nativeSrc": "14799:6:55", + "nodeType": "YulIdentifier", + "src": "14799:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14784:3:55", + "nodeType": "YulIdentifier", + "src": "14784:3:55" + }, + "nativeSrc": "14784:22:55", + "nodeType": "YulFunctionCall", + "src": "14784:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "14808:7:55", + "nodeType": "YulIdentifier", + "src": "14808:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "14767:16:55", + "nodeType": "YulIdentifier", + "src": "14767:16:55" + }, + "nativeSrc": "14767:49:55", + "nodeType": "YulFunctionCall", + "src": "14767:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14757:6:55", + "nodeType": "YulIdentifier", + "src": "14757:6:55" + } + ] + }, + { + "nativeSrc": "14825:48:55", + "nodeType": "YulVariableDeclaration", + "src": "14825:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14858:9:55", + "nodeType": "YulIdentifier", + "src": "14858:9:55" + }, + { + "kind": "number", + "nativeSrc": "14869:2:55", + "nodeType": "YulLiteral", + "src": "14869:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14854:3:55", + "nodeType": "YulIdentifier", + "src": "14854:3:55" + }, + "nativeSrc": "14854:18:55", + "nodeType": "YulFunctionCall", + "src": "14854:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14841:12:55", + "nodeType": "YulIdentifier", + "src": "14841:12:55" + }, + "nativeSrc": "14841:32:55", + "nodeType": "YulFunctionCall", + "src": "14841:32:55" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "14829:8:55", + "nodeType": "YulTypedName", + "src": "14829:8:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14902:16:55", + "nodeType": "YulBlock", + "src": "14902:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14911:1:55", + "nodeType": "YulLiteral", + "src": "14911:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14914:1:55", + "nodeType": "YulLiteral", + "src": "14914:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14904:6:55", + "nodeType": "YulIdentifier", + "src": "14904:6:55" + }, + "nativeSrc": "14904:12:55", + "nodeType": "YulFunctionCall", + "src": "14904:12:55" + }, + "nativeSrc": "14904:12:55", + "nodeType": "YulExpressionStatement", + "src": "14904:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "14888:8:55", + "nodeType": "YulIdentifier", + "src": "14888:8:55" + }, + { + "name": "_1", + "nativeSrc": "14898:2:55", + "nodeType": "YulIdentifier", + "src": "14898:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14885:2:55", + "nodeType": "YulIdentifier", + "src": "14885:2:55" + }, + "nativeSrc": "14885:16:55", + "nodeType": "YulFunctionCall", + "src": "14885:16:55" + }, + "nativeSrc": "14882:36:55", + "nodeType": "YulIf", + "src": "14882:36:55" + }, + { + "nativeSrc": "14927:61:55", + "nodeType": "YulAssignment", + "src": "14927:61:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14958:9:55", + "nodeType": "YulIdentifier", + "src": "14958:9:55" + }, + { + "name": "offset_1", + "nativeSrc": "14969:8:55", + "nodeType": "YulIdentifier", + "src": "14969:8:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14954:3:55", + "nodeType": "YulIdentifier", + "src": "14954:3:55" + }, + "nativeSrc": "14954:24:55", + "nodeType": "YulFunctionCall", + "src": "14954:24:55" + }, + { + "name": "dataEnd", + "nativeSrc": "14980:7:55", + "nodeType": "YulIdentifier", + "src": "14980:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "14937:16:55", + "nodeType": "YulIdentifier", + "src": "14937:16:55" + }, + "nativeSrc": "14937:51:55", + "nodeType": "YulFunctionCall", + "src": "14937:51:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "14927:6:55", + "nodeType": "YulIdentifier", + "src": "14927:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nativeSrc": "14453:541:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14518:9:55", + "nodeType": "YulTypedName", + "src": "14518:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14529:7:55", + "nodeType": "YulTypedName", + "src": "14529:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14541:6:55", + "nodeType": "YulTypedName", + "src": "14541:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14549:6:55", + "nodeType": "YulTypedName", + "src": "14549:6:55", + "type": "" + } + ], + "src": "14453:541:55" + }, + { + "body": { + "nativeSrc": "15057:797:55", + "nodeType": "YulBlock", + "src": "15057:797:55", + "statements": [ + { + "nativeSrc": "15067:26:55", + "nodeType": "YulVariableDeclaration", + "src": "15067:26:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15083:3:55", + "nodeType": "YulIdentifier", + "src": "15083:3:55" + }, + { + "kind": "number", + "nativeSrc": "15088:4:55", + "nodeType": "YulLiteral", + "src": "15088:4:55", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15079:3:55", + "nodeType": "YulIdentifier", + "src": "15079:3:55" + }, + "nativeSrc": "15079:14:55", + "nodeType": "YulFunctionCall", + "src": "15079:14:55" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "15071:4:55", + "nodeType": "YulTypedName", + "src": "15071:4:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15109:3:55", + "nodeType": "YulIdentifier", + "src": "15109:3:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15120:5:55", + "nodeType": "YulIdentifier", + "src": "15120:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15114:5:55", + "nodeType": "YulIdentifier", + "src": "15114:5:55" + }, + "nativeSrc": "15114:12:55", + "nodeType": "YulFunctionCall", + "src": "15114:12:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15102:6:55", + "nodeType": "YulIdentifier", + "src": "15102:6:55" + }, + "nativeSrc": "15102:25:55", + "nodeType": "YulFunctionCall", + "src": "15102:25:55" + }, + "nativeSrc": "15102:25:55", + "nodeType": "YulExpressionStatement", + "src": "15102:25:55" + }, + { + "nativeSrc": "15136:14:55", + "nodeType": "YulVariableDeclaration", + "src": "15136:14:55", + "value": { + "kind": "number", + "nativeSrc": "15146:4:55", + "nodeType": "YulLiteral", + "src": "15146:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "15140:2:55", + "nodeType": "YulTypedName", + "src": "15140:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15170:3:55", + "nodeType": "YulIdentifier", + "src": "15170:3:55" + }, + { + "kind": "number", + "nativeSrc": "15175:4:55", + "nodeType": "YulLiteral", + "src": "15175:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15166:3:55", + "nodeType": "YulIdentifier", + "src": "15166:3:55" + }, + "nativeSrc": "15166:14:55", + "nodeType": "YulFunctionCall", + "src": "15166:14:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15206:5:55", + "nodeType": "YulIdentifier", + "src": "15206:5:55" + }, + { + "kind": "number", + "nativeSrc": "15213:4:55", + "nodeType": "YulLiteral", + "src": "15213:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15202:3:55", + "nodeType": "YulIdentifier", + "src": "15202:3:55" + }, + "nativeSrc": "15202:16:55", + "nodeType": "YulFunctionCall", + "src": "15202:16:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15196:5:55", + "nodeType": "YulIdentifier", + "src": "15196:5:55" + }, + "nativeSrc": "15196:23:55", + "nodeType": "YulFunctionCall", + "src": "15196:23:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15189:6:55", + "nodeType": "YulIdentifier", + "src": "15189:6:55" + }, + "nativeSrc": "15189:31:55", + "nodeType": "YulFunctionCall", + "src": "15189:31:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15182:6:55", + "nodeType": "YulIdentifier", + "src": "15182:6:55" + }, + "nativeSrc": "15182:39:55", + "nodeType": "YulFunctionCall", + "src": "15182:39:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15159:6:55", + "nodeType": "YulIdentifier", + "src": "15159:6:55" + }, + "nativeSrc": "15159:63:55", + "nodeType": "YulFunctionCall", + "src": "15159:63:55" + }, + "nativeSrc": "15159:63:55", + "nodeType": "YulExpressionStatement", + "src": "15159:63:55" + }, + { + "nativeSrc": "15231:43:55", + "nodeType": "YulVariableDeclaration", + "src": "15231:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15261:5:55", + "nodeType": "YulIdentifier", + "src": "15261:5:55" + }, + { + "kind": "number", + "nativeSrc": "15268:4:55", + "nodeType": "YulLiteral", + "src": "15268:4:55", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15257:3:55", + "nodeType": "YulIdentifier", + "src": "15257:3:55" + }, + "nativeSrc": "15257:16:55", + "nodeType": "YulFunctionCall", + "src": "15257:16:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15251:5:55", + "nodeType": "YulIdentifier", + "src": "15251:5:55" + }, + "nativeSrc": "15251:23:55", + "nodeType": "YulFunctionCall", + "src": "15251:23:55" + }, + "variables": [ + { + "name": "memberValue0", + "nativeSrc": "15235:12:55", + "nodeType": "YulTypedName", + "src": "15235:12:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15294:3:55", + "nodeType": "YulIdentifier", + "src": "15294:3:55" + }, + { + "kind": "number", + "nativeSrc": "15299:4:55", + "nodeType": "YulLiteral", + "src": "15299:4:55", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15290:3:55", + "nodeType": "YulIdentifier", + "src": "15290:3:55" + }, + "nativeSrc": "15290:14:55", + "nodeType": "YulFunctionCall", + "src": "15290:14:55" + }, + { + "kind": "number", + "nativeSrc": "15306:4:55", + "nodeType": "YulLiteral", + "src": "15306:4:55", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15283:6:55", + "nodeType": "YulIdentifier", + "src": "15283:6:55" + }, + "nativeSrc": "15283:28:55", + "nodeType": "YulFunctionCall", + "src": "15283:28:55" + }, + "nativeSrc": "15283:28:55", + "nodeType": "YulExpressionStatement", + "src": "15283:28:55" + }, + { + "nativeSrc": "15320:17:55", + "nodeType": "YulVariableDeclaration", + "src": "15320:17:55", + "value": { + "name": "tail", + "nativeSrc": "15333:4:55", + "nodeType": "YulIdentifier", + "src": "15333:4:55" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "15324:5:55", + "nodeType": "YulTypedName", + "src": "15324:5:55", + "type": "" + } + ] + }, + { + "nativeSrc": "15346:33:55", + "nodeType": "YulVariableDeclaration", + "src": "15346:33:55", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15366:12:55", + "nodeType": "YulIdentifier", + "src": "15366:12:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15360:5:55", + "nodeType": "YulIdentifier", + "src": "15360:5:55" + }, + "nativeSrc": "15360:19:55", + "nodeType": "YulFunctionCall", + "src": "15360:19:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "15350:6:55", + "nodeType": "YulTypedName", + "src": "15350:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "15395:4:55", + "nodeType": "YulIdentifier", + "src": "15395:4:55" + }, + { + "name": "length", + "nativeSrc": "15401:6:55", + "nodeType": "YulIdentifier", + "src": "15401:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15388:6:55", + "nodeType": "YulIdentifier", + "src": "15388:6:55" + }, + "nativeSrc": "15388:20:55", + "nodeType": "YulFunctionCall", + "src": "15388:20:55" + }, + "nativeSrc": "15388:20:55", + "nodeType": "YulExpressionStatement", + "src": "15388:20:55" + }, + { + "nativeSrc": "15417:22:55", + "nodeType": "YulAssignment", + "src": "15417:22:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15430:3:55", + "nodeType": "YulIdentifier", + "src": "15430:3:55" + }, + { + "kind": "number", + "nativeSrc": "15435:3:55", + "nodeType": "YulLiteral", + "src": "15435:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15426:3:55", + "nodeType": "YulIdentifier", + "src": "15426:3:55" + }, + "nativeSrc": "15426:13:55", + "nodeType": "YulFunctionCall", + "src": "15426:13:55" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15417:5:55", + "nodeType": "YulIdentifier", + "src": "15417:5:55" + } + ] + }, + { + "nativeSrc": "15448:48:55", + "nodeType": "YulVariableDeclaration", + "src": "15448:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15470:3:55", + "nodeType": "YulIdentifier", + "src": "15470:3:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15479:1:55", + "nodeType": "YulLiteral", + "src": "15479:1:55", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "15482:6:55", + "nodeType": "YulIdentifier", + "src": "15482:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15475:3:55", + "nodeType": "YulIdentifier", + "src": "15475:3:55" + }, + "nativeSrc": "15475:14:55", + "nodeType": "YulFunctionCall", + "src": "15475:14:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15466:3:55", + "nodeType": "YulIdentifier", + "src": "15466:3:55" + }, + "nativeSrc": "15466:24:55", + "nodeType": "YulFunctionCall", + "src": "15466:24:55" + }, + { + "kind": "number", + "nativeSrc": "15492:3:55", + "nodeType": "YulLiteral", + "src": "15492:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15462:3:55", + "nodeType": "YulIdentifier", + "src": "15462:3:55" + }, + "nativeSrc": "15462:34:55", + "nodeType": "YulFunctionCall", + "src": "15462:34:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "15452:6:55", + "nodeType": "YulTypedName", + "src": "15452:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "15505:37:55", + "nodeType": "YulVariableDeclaration", + "src": "15505:37:55", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15523:12:55", + "nodeType": "YulIdentifier", + "src": "15523:12:55" + }, + { + "kind": "number", + "nativeSrc": "15537:4:55", + "nodeType": "YulLiteral", + "src": "15537:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15519:3:55", + "nodeType": "YulIdentifier", + "src": "15519:3:55" + }, + "nativeSrc": "15519:23:55", + "nodeType": "YulFunctionCall", + "src": "15519:23:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "15509:6:55", + "nodeType": "YulTypedName", + "src": "15509:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "15551:10:55", + "nodeType": "YulVariableDeclaration", + "src": "15551:10:55", + "value": { + "kind": "number", + "nativeSrc": "15560:1:55", + "nodeType": "YulLiteral", + "src": "15560:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "15555:1:55", + "nodeType": "YulTypedName", + "src": "15555:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15619:207:55", + "nodeType": "YulBlock", + "src": "15619:207:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15640:5:55", + "nodeType": "YulIdentifier", + "src": "15640:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "15655:6:55", + "nodeType": "YulIdentifier", + "src": "15655:6:55" + }, + { + "name": "pos", + "nativeSrc": "15663:3:55", + "nodeType": "YulIdentifier", + "src": "15663:3:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15651:3:55", + "nodeType": "YulIdentifier", + "src": "15651:3:55" + }, + "nativeSrc": "15651:16:55", + "nodeType": "YulFunctionCall", + "src": "15651:16:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15673:3:55", + "nodeType": "YulLiteral", + "src": "15673:3:55", + "type": "", + "value": "127" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15669:3:55", + "nodeType": "YulIdentifier", + "src": "15669:3:55" + }, + "nativeSrc": "15669:8:55", + "nodeType": "YulFunctionCall", + "src": "15669:8:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15647:3:55", + "nodeType": "YulIdentifier", + "src": "15647:3:55" + }, + "nativeSrc": "15647:31:55", + "nodeType": "YulFunctionCall", + "src": "15647:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15633:6:55", + "nodeType": "YulIdentifier", + "src": "15633:6:55" + }, + "nativeSrc": "15633:46:55", + "nodeType": "YulFunctionCall", + "src": "15633:46:55" + }, + "nativeSrc": "15633:46:55", + "nodeType": "YulExpressionStatement", + "src": "15633:46:55" + }, + { + "nativeSrc": "15692:50:55", + "nodeType": "YulAssignment", + "src": "15692:50:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15726:6:55", + "nodeType": "YulIdentifier", + "src": "15726:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15720:5:55", + "nodeType": "YulIdentifier", + "src": "15720:5:55" + }, + "nativeSrc": "15720:13:55", + "nodeType": "YulFunctionCall", + "src": "15720:13:55" + }, + { + "name": "tail_1", + "nativeSrc": "15735:6:55", + "nodeType": "YulIdentifier", + "src": "15735:6:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "15702:17:55", + "nodeType": "YulIdentifier", + "src": "15702:17:55" + }, + "nativeSrc": "15702:40:55", + "nodeType": "YulFunctionCall", + "src": "15702:40:55" + }, + "variableNames": [ + { + "name": "tail_1", + "nativeSrc": "15692:6:55", + "nodeType": "YulIdentifier", + "src": "15692:6:55" + } + ] + }, + { + "nativeSrc": "15755:25:55", + "nodeType": "YulAssignment", + "src": "15755:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15769:6:55", + "nodeType": "YulIdentifier", + "src": "15769:6:55" + }, + { + "name": "_1", + "nativeSrc": "15777:2:55", + "nodeType": "YulIdentifier", + "src": "15777:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15765:3:55", + "nodeType": "YulIdentifier", + "src": "15765:3:55" + }, + "nativeSrc": "15765:15:55", + "nodeType": "YulFunctionCall", + "src": "15765:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "15755:6:55", + "nodeType": "YulIdentifier", + "src": "15755:6:55" + } + ] + }, + { + "nativeSrc": "15793:23:55", + "nodeType": "YulAssignment", + "src": "15793:23:55", + "value": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15806:5:55", + "nodeType": "YulIdentifier", + "src": "15806:5:55" + }, + { + "name": "_1", + "nativeSrc": "15813:2:55", + "nodeType": "YulIdentifier", + "src": "15813:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15802:3:55", + "nodeType": "YulIdentifier", + "src": "15802:3:55" + }, + "nativeSrc": "15802:14:55", + "nodeType": "YulFunctionCall", + "src": "15802:14:55" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15793:5:55", + "nodeType": "YulIdentifier", + "src": "15793:5:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15581:1:55", + "nodeType": "YulIdentifier", + "src": "15581:1:55" + }, + { + "name": "length", + "nativeSrc": "15584:6:55", + "nodeType": "YulIdentifier", + "src": "15584:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "15578:2:55", + "nodeType": "YulIdentifier", + "src": "15578:2:55" + }, + "nativeSrc": "15578:13:55", + "nodeType": "YulFunctionCall", + "src": "15578:13:55" + }, + "nativeSrc": "15570:256:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15592:18:55", + "nodeType": "YulBlock", + "src": "15592:18:55", + "statements": [ + { + "nativeSrc": "15594:14:55", + "nodeType": "YulAssignment", + "src": "15594:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15603:1:55", + "nodeType": "YulIdentifier", + "src": "15603:1:55" + }, + { + "kind": "number", + "nativeSrc": "15606:1:55", + "nodeType": "YulLiteral", + "src": "15606:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15599:3:55", + "nodeType": "YulIdentifier", + "src": "15599:3:55" + }, + "nativeSrc": "15599:9:55", + "nodeType": "YulFunctionCall", + "src": "15599:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "15594:1:55", + "nodeType": "YulIdentifier", + "src": "15594:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "15574:3:55", + "nodeType": "YulBlock", + "src": "15574:3:55", + "statements": [] + }, + "src": "15570:256:55" + }, + { + "nativeSrc": "15835:13:55", + "nodeType": "YulAssignment", + "src": "15835:13:55", + "value": { + "name": "tail_1", + "nativeSrc": "15842:6:55", + "nodeType": "YulIdentifier", + "src": "15842:6:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "15835:3:55", + "nodeType": "YulIdentifier", + "src": "15835:3:55" + } + ] + } + ] + }, + "name": "abi_encode_struct_Service", + "nativeSrc": "14999:855:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "15034:5:55", + "nodeType": "YulTypedName", + "src": "15034:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "15041:3:55", + "nodeType": "YulTypedName", + "src": "15041:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "15049:3:55", + "nodeType": "YulTypedName", + "src": "15049:3:55", + "type": "" + } + ], + "src": "14999:855:55" + }, + { + "body": { + "nativeSrc": "16160:727:55", + "nodeType": "YulBlock", + "src": "16160:727:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16177:9:55", + "nodeType": "YulIdentifier", + "src": "16177:9:55" + }, + { + "kind": "number", + "nativeSrc": "16188:2:55", + "nodeType": "YulLiteral", + "src": "16188:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16170:6:55", + "nodeType": "YulIdentifier", + "src": "16170:6:55" + }, + "nativeSrc": "16170:21:55", + "nodeType": "YulFunctionCall", + "src": "16170:21:55" + }, + "nativeSrc": "16170:21:55", + "nodeType": "YulExpressionStatement", + "src": "16170:21:55" + }, + { + "nativeSrc": "16200:69:55", + "nodeType": "YulVariableDeclaration", + "src": "16200:69:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "16242:6:55", + "nodeType": "YulIdentifier", + "src": "16242:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16254:9:55", + "nodeType": "YulIdentifier", + "src": "16254:9:55" + }, + { + "kind": "number", + "nativeSrc": "16265:2:55", + "nodeType": "YulLiteral", + "src": "16265:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16250:3:55", + "nodeType": "YulIdentifier", + "src": "16250:3:55" + }, + "nativeSrc": "16250:18:55", + "nodeType": "YulFunctionCall", + "src": "16250:18:55" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "16214:27:55", + "nodeType": "YulIdentifier", + "src": "16214:27:55" + }, + "nativeSrc": "16214:55:55", + "nodeType": "YulFunctionCall", + "src": "16214:55:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "16204:6:55", + "nodeType": "YulTypedName", + "src": "16204:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "16278:12:55", + "nodeType": "YulVariableDeclaration", + "src": "16278:12:55", + "value": { + "kind": "number", + "nativeSrc": "16288:2:55", + "nodeType": "YulLiteral", + "src": "16288:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "16282:2:55", + "nodeType": "YulTypedName", + "src": "16282:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16310:9:55", + "nodeType": "YulIdentifier", + "src": "16310:9:55" + }, + { + "name": "_1", + "nativeSrc": "16321:2:55", + "nodeType": "YulIdentifier", + "src": "16321:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16306:3:55", + "nodeType": "YulIdentifier", + "src": "16306:3:55" + }, + "nativeSrc": "16306:18:55", + "nodeType": "YulFunctionCall", + "src": "16306:18:55" + }, + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16330:6:55", + "nodeType": "YulIdentifier", + "src": "16330:6:55" + }, + { + "name": "headStart", + "nativeSrc": "16338:9:55", + "nodeType": "YulIdentifier", + "src": "16338:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16326:3:55", + "nodeType": "YulIdentifier", + "src": "16326:3:55" + }, + "nativeSrc": "16326:22:55", + "nodeType": "YulFunctionCall", + "src": "16326:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16299:6:55", + "nodeType": "YulIdentifier", + "src": "16299:6:55" + }, + "nativeSrc": "16299:50:55", + "nodeType": "YulFunctionCall", + "src": "16299:50:55" + }, + "nativeSrc": "16299:50:55", + "nodeType": "YulExpressionStatement", + "src": "16299:50:55" + }, + { + "nativeSrc": "16358:17:55", + "nodeType": "YulVariableDeclaration", + "src": "16358:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "16369:6:55", + "nodeType": "YulIdentifier", + "src": "16369:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "16362:3:55", + "nodeType": "YulTypedName", + "src": "16362:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "16384:27:55", + "nodeType": "YulVariableDeclaration", + "src": "16384:27:55", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16404:6:55", + "nodeType": "YulIdentifier", + "src": "16404:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16398:5:55", + "nodeType": "YulIdentifier", + "src": "16398:5:55" + }, + "nativeSrc": "16398:13:55", + "nodeType": "YulFunctionCall", + "src": "16398:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "16388:6:55", + "nodeType": "YulTypedName", + "src": "16388:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16427:6:55", + "nodeType": "YulIdentifier", + "src": "16427:6:55" + }, + { + "name": "length", + "nativeSrc": "16435:6:55", + "nodeType": "YulIdentifier", + "src": "16435:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16420:6:55", + "nodeType": "YulIdentifier", + "src": "16420:6:55" + }, + "nativeSrc": "16420:22:55", + "nodeType": "YulFunctionCall", + "src": "16420:22:55" + }, + "nativeSrc": "16420:22:55", + "nodeType": "YulExpressionStatement", + "src": "16420:22:55" + }, + { + "nativeSrc": "16451:22:55", + "nodeType": "YulAssignment", + "src": "16451:22:55", + "value": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16462:6:55", + "nodeType": "YulIdentifier", + "src": "16462:6:55" + }, + { + "name": "_1", + "nativeSrc": "16470:2:55", + "nodeType": "YulIdentifier", + "src": "16470:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16458:3:55", + "nodeType": "YulIdentifier", + "src": "16458:3:55" + }, + "nativeSrc": "16458:15:55", + "nodeType": "YulFunctionCall", + "src": "16458:15:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16451:3:55", + "nodeType": "YulIdentifier", + "src": "16451:3:55" + } + ] + }, + { + "nativeSrc": "16482:50:55", + "nodeType": "YulVariableDeclaration", + "src": "16482:50:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16504:6:55", + "nodeType": "YulIdentifier", + "src": "16504:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16516:1:55", + "nodeType": "YulLiteral", + "src": "16516:1:55", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "16519:6:55", + "nodeType": "YulIdentifier", + "src": "16519:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16512:3:55", + "nodeType": "YulIdentifier", + "src": "16512:3:55" + }, + "nativeSrc": "16512:14:55", + "nodeType": "YulFunctionCall", + "src": "16512:14:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16500:3:55", + "nodeType": "YulIdentifier", + "src": "16500:3:55" + }, + "nativeSrc": "16500:27:55", + "nodeType": "YulFunctionCall", + "src": "16500:27:55" + }, + { + "name": "_1", + "nativeSrc": "16529:2:55", + "nodeType": "YulIdentifier", + "src": "16529:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16496:3:55", + "nodeType": "YulIdentifier", + "src": "16496:3:55" + }, + "nativeSrc": "16496:36:55", + "nodeType": "YulFunctionCall", + "src": "16496:36:55" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "16486:6:55", + "nodeType": "YulTypedName", + "src": "16486:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "16541:29:55", + "nodeType": "YulVariableDeclaration", + "src": "16541:29:55", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16559:6:55", + "nodeType": "YulIdentifier", + "src": "16559:6:55" + }, + { + "name": "_1", + "nativeSrc": "16567:2:55", + "nodeType": "YulIdentifier", + "src": "16567:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16555:3:55", + "nodeType": "YulIdentifier", + "src": "16555:3:55" + }, + "nativeSrc": "16555:15:55", + "nodeType": "YulFunctionCall", + "src": "16555:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "16545:6:55", + "nodeType": "YulTypedName", + "src": "16545:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "16579:10:55", + "nodeType": "YulVariableDeclaration", + "src": "16579:10:55", + "value": { + "kind": "number", + "nativeSrc": "16588:1:55", + "nodeType": "YulLiteral", + "src": "16588:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "16583:1:55", + "nodeType": "YulTypedName", + "src": "16583:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16647:211:55", + "nodeType": "YulBlock", + "src": "16647:211:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16668:3:55", + "nodeType": "YulIdentifier", + "src": "16668:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "16681:6:55", + "nodeType": "YulIdentifier", + "src": "16681:6:55" + }, + { + "name": "tail_1", + "nativeSrc": "16689:6:55", + "nodeType": "YulIdentifier", + "src": "16689:6:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16677:3:55", + "nodeType": "YulIdentifier", + "src": "16677:3:55" + }, + "nativeSrc": "16677:19:55", + "nodeType": "YulFunctionCall", + "src": "16677:19:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16702:2:55", + "nodeType": "YulLiteral", + "src": "16702:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16698:3:55", + "nodeType": "YulIdentifier", + "src": "16698:3:55" + }, + "nativeSrc": "16698:7:55", + "nodeType": "YulFunctionCall", + "src": "16698:7:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16673:3:55", + "nodeType": "YulIdentifier", + "src": "16673:3:55" + }, + "nativeSrc": "16673:33:55", + "nodeType": "YulFunctionCall", + "src": "16673:33:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16661:6:55", + "nodeType": "YulIdentifier", + "src": "16661:6:55" + }, + "nativeSrc": "16661:46:55", + "nodeType": "YulFunctionCall", + "src": "16661:46:55" + }, + "nativeSrc": "16661:46:55", + "nodeType": "YulExpressionStatement", + "src": "16661:46:55" + }, + { + "nativeSrc": "16720:58:55", + "nodeType": "YulAssignment", + "src": "16720:58:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16762:6:55", + "nodeType": "YulIdentifier", + "src": "16762:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16756:5:55", + "nodeType": "YulIdentifier", + "src": "16756:5:55" + }, + "nativeSrc": "16756:13:55", + "nodeType": "YulFunctionCall", + "src": "16756:13:55" + }, + { + "name": "tail_2", + "nativeSrc": "16771:6:55", + "nodeType": "YulIdentifier", + "src": "16771:6:55" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "16730:25:55", + "nodeType": "YulIdentifier", + "src": "16730:25:55" + }, + "nativeSrc": "16730:48:55", + "nodeType": "YulFunctionCall", + "src": "16730:48:55" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "16720:6:55", + "nodeType": "YulIdentifier", + "src": "16720:6:55" + } + ] + }, + { + "nativeSrc": "16791:25:55", + "nodeType": "YulAssignment", + "src": "16791:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16805:6:55", + "nodeType": "YulIdentifier", + "src": "16805:6:55" + }, + { + "name": "_1", + "nativeSrc": "16813:2:55", + "nodeType": "YulIdentifier", + "src": "16813:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16801:3:55", + "nodeType": "YulIdentifier", + "src": "16801:3:55" + }, + "nativeSrc": "16801:15:55", + "nodeType": "YulFunctionCall", + "src": "16801:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "16791:6:55", + "nodeType": "YulIdentifier", + "src": "16791:6:55" + } + ] + }, + { + "nativeSrc": "16829:19:55", + "nodeType": "YulAssignment", + "src": "16829:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16840:3:55", + "nodeType": "YulIdentifier", + "src": "16840:3:55" + }, + { + "name": "_1", + "nativeSrc": "16845:2:55", + "nodeType": "YulIdentifier", + "src": "16845:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16836:3:55", + "nodeType": "YulIdentifier", + "src": "16836:3:55" + }, + "nativeSrc": "16836:12:55", + "nodeType": "YulFunctionCall", + "src": "16836:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16829:3:55", + "nodeType": "YulIdentifier", + "src": "16829:3:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16609:1:55", + "nodeType": "YulIdentifier", + "src": "16609:1:55" + }, + { + "name": "length", + "nativeSrc": "16612:6:55", + "nodeType": "YulIdentifier", + "src": "16612:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "16606:2:55", + "nodeType": "YulIdentifier", + "src": "16606:2:55" + }, + "nativeSrc": "16606:13:55", + "nodeType": "YulFunctionCall", + "src": "16606:13:55" + }, + "nativeSrc": "16598:260:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16620:18:55", + "nodeType": "YulBlock", + "src": "16620:18:55", + "statements": [ + { + "nativeSrc": "16622:14:55", + "nodeType": "YulAssignment", + "src": "16622:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16631:1:55", + "nodeType": "YulIdentifier", + "src": "16631:1:55" + }, + { + "kind": "number", + "nativeSrc": "16634:1:55", + "nodeType": "YulLiteral", + "src": "16634:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16627:3:55", + "nodeType": "YulIdentifier", + "src": "16627:3:55" + }, + "nativeSrc": "16627:9:55", + "nodeType": "YulFunctionCall", + "src": "16627:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "16622:1:55", + "nodeType": "YulIdentifier", + "src": "16622:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "16602:3:55", + "nodeType": "YulBlock", + "src": "16602:3:55", + "statements": [] + }, + "src": "16598:260:55" + }, + { + "nativeSrc": "16867:14:55", + "nodeType": "YulAssignment", + "src": "16867:14:55", + "value": { + "name": "tail_2", + "nativeSrc": "16875:6:55", + "nodeType": "YulIdentifier", + "src": "16875:6:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16867:4:55", + "nodeType": "YulIdentifier", + "src": "16867:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "15859:1028:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16121:9:55", + "nodeType": "YulTypedName", + "src": "16121:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16132:6:55", + "nodeType": "YulTypedName", + "src": "16132:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16140:6:55", + "nodeType": "YulTypedName", + "src": "16140:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16151:4:55", + "nodeType": "YulTypedName", + "src": "16151:4:55", + "type": "" + } + ], + "src": "15859:1028:55" + }, + { + "body": { + "nativeSrc": "17011:99:55", + "nodeType": "YulBlock", + "src": "17011:99:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17028:9:55", + "nodeType": "YulIdentifier", + "src": "17028:9:55" + }, + { + "kind": "number", + "nativeSrc": "17039:2:55", + "nodeType": "YulLiteral", + "src": "17039:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17021:6:55", + "nodeType": "YulIdentifier", + "src": "17021:6:55" + }, + "nativeSrc": "17021:21:55", + "nodeType": "YulFunctionCall", + "src": "17021:21:55" + }, + "nativeSrc": "17021:21:55", + "nodeType": "YulExpressionStatement", + "src": "17021:21:55" + }, + { + "nativeSrc": "17051:53:55", + "nodeType": "YulAssignment", + "src": "17051:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17077:6:55", + "nodeType": "YulIdentifier", + "src": "17077:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17089:9:55", + "nodeType": "YulIdentifier", + "src": "17089:9:55" + }, + { + "kind": "number", + "nativeSrc": "17100:2:55", + "nodeType": "YulLiteral", + "src": "17100:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17085:3:55", + "nodeType": "YulIdentifier", + "src": "17085:3:55" + }, + "nativeSrc": "17085:18:55", + "nodeType": "YulFunctionCall", + "src": "17085:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "17059:17:55", + "nodeType": "YulIdentifier", + "src": "17059:17:55" + }, + "nativeSrc": "17059:45:55", + "nodeType": "YulFunctionCall", + "src": "17059:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17051:4:55", + "nodeType": "YulIdentifier", + "src": "17051:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "16892:218:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16980:9:55", + "nodeType": "YulTypedName", + "src": "16980:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16991:6:55", + "nodeType": "YulTypedName", + "src": "16991:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17002:4:55", + "nodeType": "YulTypedName", + "src": "17002:4:55", + "type": "" + } + ], + "src": "16892:218:55" + }, + { + "body": { + "nativeSrc": "17202:161:55", + "nodeType": "YulBlock", + "src": "17202:161:55", + "statements": [ + { + "body": { + "nativeSrc": "17248:16:55", + "nodeType": "YulBlock", + "src": "17248:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17257:1:55", + "nodeType": "YulLiteral", + "src": "17257:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17260:1:55", + "nodeType": "YulLiteral", + "src": "17260:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17250:6:55", + "nodeType": "YulIdentifier", + "src": "17250:6:55" + }, + "nativeSrc": "17250:12:55", + "nodeType": "YulFunctionCall", + "src": "17250:12:55" + }, + "nativeSrc": "17250:12:55", + "nodeType": "YulExpressionStatement", + "src": "17250:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17223:7:55", + "nodeType": "YulIdentifier", + "src": "17223:7:55" + }, + { + "name": "headStart", + "nativeSrc": "17232:9:55", + "nodeType": "YulIdentifier", + "src": "17232:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17219:3:55", + "nodeType": "YulIdentifier", + "src": "17219:3:55" + }, + "nativeSrc": "17219:23:55", + "nodeType": "YulFunctionCall", + "src": "17219:23:55" + }, + { + "kind": "number", + "nativeSrc": "17244:2:55", + "nodeType": "YulLiteral", + "src": "17244:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17215:3:55", + "nodeType": "YulIdentifier", + "src": "17215:3:55" + }, + "nativeSrc": "17215:32:55", + "nodeType": "YulFunctionCall", + "src": "17215:32:55" + }, + "nativeSrc": "17212:52:55", + "nodeType": "YulIf", + "src": "17212:52:55" + }, + { + "nativeSrc": "17273:33:55", + "nodeType": "YulAssignment", + "src": "17273:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17296:9:55", + "nodeType": "YulIdentifier", + "src": "17296:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17283:12:55", + "nodeType": "YulIdentifier", + "src": "17283:12:55" + }, + "nativeSrc": "17283:23:55", + "nodeType": "YulFunctionCall", + "src": "17283:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17273:6:55", + "nodeType": "YulIdentifier", + "src": "17273:6:55" + } + ] + }, + { + "nativeSrc": "17315:42:55", + "nodeType": "YulAssignment", + "src": "17315:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17342:9:55", + "nodeType": "YulIdentifier", + "src": "17342:9:55" + }, + { + "kind": "number", + "nativeSrc": "17353:2:55", + "nodeType": "YulLiteral", + "src": "17353:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17338:3:55", + "nodeType": "YulIdentifier", + "src": "17338:3:55" + }, + "nativeSrc": "17338:18:55", + "nodeType": "YulFunctionCall", + "src": "17338:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17325:12:55", + "nodeType": "YulIdentifier", + "src": "17325:12:55" + }, + "nativeSrc": "17325:32:55", + "nodeType": "YulFunctionCall", + "src": "17325:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17315:6:55", + "nodeType": "YulIdentifier", + "src": "17315:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "17115:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17160:9:55", + "nodeType": "YulTypedName", + "src": "17160:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17171:7:55", + "nodeType": "YulTypedName", + "src": "17171:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17183:6:55", + "nodeType": "YulTypedName", + "src": "17183:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17191:6:55", + "nodeType": "YulTypedName", + "src": "17191:6:55", + "type": "" + } + ], + "src": "17115:248:55" + }, + { + "body": { + "nativeSrc": "17455:301:55", + "nodeType": "YulBlock", + "src": "17455:301:55", + "statements": [ + { + "body": { + "nativeSrc": "17501:16:55", + "nodeType": "YulBlock", + "src": "17501:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17510:1:55", + "nodeType": "YulLiteral", + "src": "17510:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17513:1:55", + "nodeType": "YulLiteral", + "src": "17513:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17503:6:55", + "nodeType": "YulIdentifier", + "src": "17503:6:55" + }, + "nativeSrc": "17503:12:55", + "nodeType": "YulFunctionCall", + "src": "17503:12:55" + }, + "nativeSrc": "17503:12:55", + "nodeType": "YulExpressionStatement", + "src": "17503:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17476:7:55", + "nodeType": "YulIdentifier", + "src": "17476:7:55" + }, + { + "name": "headStart", + "nativeSrc": "17485:9:55", + "nodeType": "YulIdentifier", + "src": "17485:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17472:3:55", + "nodeType": "YulIdentifier", + "src": "17472:3:55" + }, + "nativeSrc": "17472:23:55", + "nodeType": "YulFunctionCall", + "src": "17472:23:55" + }, + { + "kind": "number", + "nativeSrc": "17497:2:55", + "nodeType": "YulLiteral", + "src": "17497:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17468:3:55", + "nodeType": "YulIdentifier", + "src": "17468:3:55" + }, + "nativeSrc": "17468:32:55", + "nodeType": "YulFunctionCall", + "src": "17468:32:55" + }, + "nativeSrc": "17465:52:55", + "nodeType": "YulIf", + "src": "17465:52:55" + }, + { + "nativeSrc": "17526:36:55", + "nodeType": "YulVariableDeclaration", + "src": "17526:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17552:9:55", + "nodeType": "YulIdentifier", + "src": "17552:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17539:12:55", + "nodeType": "YulIdentifier", + "src": "17539:12:55" + }, + "nativeSrc": "17539:23:55", + "nodeType": "YulFunctionCall", + "src": "17539:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "17530:5:55", + "nodeType": "YulTypedName", + "src": "17530:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "17596:5:55", + "nodeType": "YulIdentifier", + "src": "17596:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17571:24:55", + "nodeType": "YulIdentifier", + "src": "17571:24:55" + }, + "nativeSrc": "17571:31:55", + "nodeType": "YulFunctionCall", + "src": "17571:31:55" + }, + "nativeSrc": "17571:31:55", + "nodeType": "YulExpressionStatement", + "src": "17571:31:55" + }, + { + "nativeSrc": "17611:15:55", + "nodeType": "YulAssignment", + "src": "17611:15:55", + "value": { + "name": "value", + "nativeSrc": "17621:5:55", + "nodeType": "YulIdentifier", + "src": "17621:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17611:6:55", + "nodeType": "YulIdentifier", + "src": "17611:6:55" + } + ] + }, + { + "nativeSrc": "17635:47:55", + "nodeType": "YulVariableDeclaration", + "src": "17635:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17667:9:55", + "nodeType": "YulIdentifier", + "src": "17667:9:55" + }, + { + "kind": "number", + "nativeSrc": "17678:2:55", + "nodeType": "YulLiteral", + "src": "17678:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17663:3:55", + "nodeType": "YulIdentifier", + "src": "17663:3:55" + }, + "nativeSrc": "17663:18:55", + "nodeType": "YulFunctionCall", + "src": "17663:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17650:12:55", + "nodeType": "YulIdentifier", + "src": "17650:12:55" + }, + "nativeSrc": "17650:32:55", + "nodeType": "YulFunctionCall", + "src": "17650:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "17639:7:55", + "nodeType": "YulTypedName", + "src": "17639:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "17716:7:55", + "nodeType": "YulIdentifier", + "src": "17716:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17691:24:55", + "nodeType": "YulIdentifier", + "src": "17691:24:55" + }, + "nativeSrc": "17691:33:55", + "nodeType": "YulFunctionCall", + "src": "17691:33:55" + }, + "nativeSrc": "17691:33:55", + "nodeType": "YulExpressionStatement", + "src": "17691:33:55" + }, + { + "nativeSrc": "17733:17:55", + "nodeType": "YulAssignment", + "src": "17733:17:55", + "value": { + "name": "value_1", + "nativeSrc": "17743:7:55", + "nodeType": "YulIdentifier", + "src": "17743:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17733:6:55", + "nodeType": "YulIdentifier", + "src": "17733:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "17368:388:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17413:9:55", + "nodeType": "YulTypedName", + "src": "17413:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17424:7:55", + "nodeType": "YulTypedName", + "src": "17424:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17436:6:55", + "nodeType": "YulTypedName", + "src": "17436:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17444:6:55", + "nodeType": "YulTypedName", + "src": "17444:6:55", + "type": "" + } + ], + "src": "17368:388:55" + }, + { + "body": { + "nativeSrc": "17946:206:55", + "nodeType": "YulBlock", + "src": "17946:206:55", + "statements": [ + { + "nativeSrc": "17956:27:55", + "nodeType": "YulAssignment", + "src": "17956:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17968:9:55", + "nodeType": "YulIdentifier", + "src": "17968:9:55" + }, + { + "kind": "number", + "nativeSrc": "17979:3:55", + "nodeType": "YulLiteral", + "src": "17979:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17964:3:55", + "nodeType": "YulIdentifier", + "src": "17964:3:55" + }, + "nativeSrc": "17964:19:55", + "nodeType": "YulFunctionCall", + "src": "17964:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17956:4:55", + "nodeType": "YulIdentifier", + "src": "17956:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17999:9:55", + "nodeType": "YulIdentifier", + "src": "17999:9:55" + }, + { + "name": "value0", + "nativeSrc": "18010:6:55", + "nodeType": "YulIdentifier", + "src": "18010:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17992:6:55", + "nodeType": "YulIdentifier", + "src": "17992:6:55" + }, + "nativeSrc": "17992:25:55", + "nodeType": "YulFunctionCall", + "src": "17992:25:55" + }, + "nativeSrc": "17992:25:55", + "nodeType": "YulExpressionStatement", + "src": "17992:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18037:9:55", + "nodeType": "YulIdentifier", + "src": "18037:9:55" + }, + { + "kind": "number", + "nativeSrc": "18048:2:55", + "nodeType": "YulLiteral", + "src": "18048:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18033:3:55", + "nodeType": "YulIdentifier", + "src": "18033:3:55" + }, + "nativeSrc": "18033:18:55", + "nodeType": "YulFunctionCall", + "src": "18033:18:55" + }, + { + "name": "value1", + "nativeSrc": "18053:6:55", + "nodeType": "YulIdentifier", + "src": "18053:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18026:6:55", + "nodeType": "YulIdentifier", + "src": "18026:6:55" + }, + "nativeSrc": "18026:34:55", + "nodeType": "YulFunctionCall", + "src": "18026:34:55" + }, + "nativeSrc": "18026:34:55", + "nodeType": "YulExpressionStatement", + "src": "18026:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18080:9:55", + "nodeType": "YulIdentifier", + "src": "18080:9:55" + }, + { + "kind": "number", + "nativeSrc": "18091:2:55", + "nodeType": "YulLiteral", + "src": "18091:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18076:3:55", + "nodeType": "YulIdentifier", + "src": "18076:3:55" + }, + "nativeSrc": "18076:18:55", + "nodeType": "YulFunctionCall", + "src": "18076:18:55" + }, + { + "name": "value2", + "nativeSrc": "18096:6:55", + "nodeType": "YulIdentifier", + "src": "18096:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18069:6:55", + "nodeType": "YulIdentifier", + "src": "18069:6:55" + }, + "nativeSrc": "18069:34:55", + "nodeType": "YulFunctionCall", + "src": "18069:34:55" + }, + "nativeSrc": "18069:34:55", + "nodeType": "YulExpressionStatement", + "src": "18069:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18123:9:55", + "nodeType": "YulIdentifier", + "src": "18123:9:55" + }, + { + "kind": "number", + "nativeSrc": "18134:2:55", + "nodeType": "YulLiteral", + "src": "18134:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18119:3:55", + "nodeType": "YulIdentifier", + "src": "18119:3:55" + }, + "nativeSrc": "18119:18:55", + "nodeType": "YulFunctionCall", + "src": "18119:18:55" + }, + { + "name": "value3", + "nativeSrc": "18139:6:55", + "nodeType": "YulIdentifier", + "src": "18139:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18112:6:55", + "nodeType": "YulIdentifier", + "src": "18112:6:55" + }, + "nativeSrc": "18112:34:55", + "nodeType": "YulFunctionCall", + "src": "18112:34:55" + }, + "nativeSrc": "18112:34:55", + "nodeType": "YulExpressionStatement", + "src": "18112:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "17761:391:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17891:9:55", + "nodeType": "YulTypedName", + "src": "17891:9:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "17902:6:55", + "nodeType": "YulTypedName", + "src": "17902:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "17910:6:55", + "nodeType": "YulTypedName", + "src": "17910:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17918:6:55", + "nodeType": "YulTypedName", + "src": "17918:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17926:6:55", + "nodeType": "YulTypedName", + "src": "17926:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17937:4:55", + "nodeType": "YulTypedName", + "src": "17937:4:55", + "type": "" + } + ], + "src": "17761:391:55" + }, + { + "body": { + "nativeSrc": "18276:352:55", + "nodeType": "YulBlock", + "src": "18276:352:55", + "statements": [ + { + "body": { + "nativeSrc": "18322:16:55", + "nodeType": "YulBlock", + "src": "18322:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18331:1:55", + "nodeType": "YulLiteral", + "src": "18331:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18334:1:55", + "nodeType": "YulLiteral", + "src": "18334:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18324:6:55", + "nodeType": "YulIdentifier", + "src": "18324:6:55" + }, + "nativeSrc": "18324:12:55", + "nodeType": "YulFunctionCall", + "src": "18324:12:55" + }, + "nativeSrc": "18324:12:55", + "nodeType": "YulExpressionStatement", + "src": "18324:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18297:7:55", + "nodeType": "YulIdentifier", + "src": "18297:7:55" + }, + { + "name": "headStart", + "nativeSrc": "18306:9:55", + "nodeType": "YulIdentifier", + "src": "18306:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18293:3:55", + "nodeType": "YulIdentifier", + "src": "18293:3:55" + }, + "nativeSrc": "18293:23:55", + "nodeType": "YulFunctionCall", + "src": "18293:23:55" + }, + { + "kind": "number", + "nativeSrc": "18318:2:55", + "nodeType": "YulLiteral", + "src": "18318:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18289:3:55", + "nodeType": "YulIdentifier", + "src": "18289:3:55" + }, + "nativeSrc": "18289:32:55", + "nodeType": "YulFunctionCall", + "src": "18289:32:55" + }, + "nativeSrc": "18286:52:55", + "nodeType": "YulIf", + "src": "18286:52:55" + }, + { + "nativeSrc": "18347:36:55", + "nodeType": "YulVariableDeclaration", + "src": "18347:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18373:9:55", + "nodeType": "YulIdentifier", + "src": "18373:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18360:12:55", + "nodeType": "YulIdentifier", + "src": "18360:12:55" + }, + "nativeSrc": "18360:23:55", + "nodeType": "YulFunctionCall", + "src": "18360:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18351:5:55", + "nodeType": "YulTypedName", + "src": "18351:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18417:5:55", + "nodeType": "YulIdentifier", + "src": "18417:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18392:24:55", + "nodeType": "YulIdentifier", + "src": "18392:24:55" + }, + "nativeSrc": "18392:31:55", + "nodeType": "YulFunctionCall", + "src": "18392:31:55" + }, + "nativeSrc": "18392:31:55", + "nodeType": "YulExpressionStatement", + "src": "18392:31:55" + }, + { + "nativeSrc": "18432:15:55", + "nodeType": "YulAssignment", + "src": "18432:15:55", + "value": { + "name": "value", + "nativeSrc": "18442:5:55", + "nodeType": "YulIdentifier", + "src": "18442:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18432:6:55", + "nodeType": "YulIdentifier", + "src": "18432:6:55" + } + ] + }, + { + "nativeSrc": "18456:47:55", + "nodeType": "YulVariableDeclaration", + "src": "18456:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18488:9:55", + "nodeType": "YulIdentifier", + "src": "18488:9:55" + }, + { + "kind": "number", + "nativeSrc": "18499:2:55", + "nodeType": "YulLiteral", + "src": "18499:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18484:3:55", + "nodeType": "YulIdentifier", + "src": "18484:3:55" + }, + "nativeSrc": "18484:18:55", + "nodeType": "YulFunctionCall", + "src": "18484:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18471:12:55", + "nodeType": "YulIdentifier", + "src": "18471:12:55" + }, + "nativeSrc": "18471:32:55", + "nodeType": "YulFunctionCall", + "src": "18471:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "18460:7:55", + "nodeType": "YulTypedName", + "src": "18460:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "18537:7:55", + "nodeType": "YulIdentifier", + "src": "18537:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18512:24:55", + "nodeType": "YulIdentifier", + "src": "18512:24:55" + }, + "nativeSrc": "18512:33:55", + "nodeType": "YulFunctionCall", + "src": "18512:33:55" + }, + "nativeSrc": "18512:33:55", + "nodeType": "YulExpressionStatement", + "src": "18512:33:55" + }, + { + "nativeSrc": "18554:17:55", + "nodeType": "YulAssignment", + "src": "18554:17:55", + "value": { + "name": "value_1", + "nativeSrc": "18564:7:55", + "nodeType": "YulIdentifier", + "src": "18564:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "18554:6:55", + "nodeType": "YulIdentifier", + "src": "18554:6:55" + } + ] + }, + { + "nativeSrc": "18580:42:55", + "nodeType": "YulAssignment", + "src": "18580:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18607:9:55", + "nodeType": "YulIdentifier", + "src": "18607:9:55" + }, + { + "kind": "number", + "nativeSrc": "18618:2:55", + "nodeType": "YulLiteral", + "src": "18618:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18603:3:55", + "nodeType": "YulIdentifier", + "src": "18603:3:55" + }, + "nativeSrc": "18603:18:55", + "nodeType": "YulFunctionCall", + "src": "18603:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18590:12:55", + "nodeType": "YulIdentifier", + "src": "18590:12:55" + }, + "nativeSrc": "18590:32:55", + "nodeType": "YulFunctionCall", + "src": "18590:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "18580:6:55", + "nodeType": "YulIdentifier", + "src": "18580:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$4445t_addresst_uint256", + "nativeSrc": "18157:471:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18226:9:55", + "nodeType": "YulTypedName", + "src": "18226:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18237:7:55", + "nodeType": "YulTypedName", + "src": "18237:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18249:6:55", + "nodeType": "YulTypedName", + "src": "18249:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18257:6:55", + "nodeType": "YulTypedName", + "src": "18257:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18265:6:55", + "nodeType": "YulTypedName", + "src": "18265:6:55", + "type": "" + } + ], + "src": "18157:471:55" + }, + { + "body": { + "nativeSrc": "18700:174:55", + "nodeType": "YulBlock", + "src": "18700:174:55", + "statements": [ + { + "body": { + "nativeSrc": "18746:16:55", + "nodeType": "YulBlock", + "src": "18746:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18755:1:55", + "nodeType": "YulLiteral", + "src": "18755:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18758:1:55", + "nodeType": "YulLiteral", + "src": "18758:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18748:6:55", + "nodeType": "YulIdentifier", + "src": "18748:6:55" + }, + "nativeSrc": "18748:12:55", + "nodeType": "YulFunctionCall", + "src": "18748:12:55" + }, + "nativeSrc": "18748:12:55", + "nodeType": "YulExpressionStatement", + "src": "18748:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18721:7:55", + "nodeType": "YulIdentifier", + "src": "18721:7:55" + }, + { + "name": "headStart", + "nativeSrc": "18730:9:55", + "nodeType": "YulIdentifier", + "src": "18730:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18717:3:55", + "nodeType": "YulIdentifier", + "src": "18717:3:55" + }, + "nativeSrc": "18717:23:55", + "nodeType": "YulFunctionCall", + "src": "18717:23:55" + }, + { + "kind": "number", + "nativeSrc": "18742:2:55", + "nodeType": "YulLiteral", + "src": "18742:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18713:3:55", + "nodeType": "YulIdentifier", + "src": "18713:3:55" + }, + "nativeSrc": "18713:32:55", + "nodeType": "YulFunctionCall", + "src": "18713:32:55" + }, + "nativeSrc": "18710:52:55", + "nodeType": "YulIf", + "src": "18710:52:55" + }, + { + "nativeSrc": "18771:36:55", + "nodeType": "YulVariableDeclaration", + "src": "18771:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18797:9:55", + "nodeType": "YulIdentifier", + "src": "18797:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18784:12:55", + "nodeType": "YulIdentifier", + "src": "18784:12:55" + }, + "nativeSrc": "18784:23:55", + "nodeType": "YulFunctionCall", + "src": "18784:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18775:5:55", + "nodeType": "YulTypedName", + "src": "18775:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18838:5:55", + "nodeType": "YulIdentifier", + "src": "18838:5:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "18816:21:55", + "nodeType": "YulIdentifier", + "src": "18816:21:55" + }, + "nativeSrc": "18816:28:55", + "nodeType": "YulFunctionCall", + "src": "18816:28:55" + }, + "nativeSrc": "18816:28:55", + "nodeType": "YulExpressionStatement", + "src": "18816:28:55" + }, + { + "nativeSrc": "18853:15:55", + "nodeType": "YulAssignment", + "src": "18853:15:55", + "value": { + "name": "value", + "nativeSrc": "18863:5:55", + "nodeType": "YulIdentifier", + "src": "18863:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18853:6:55", + "nodeType": "YulIdentifier", + "src": "18853:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool", + "nativeSrc": "18633:241:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18666:9:55", + "nodeType": "YulTypedName", + "src": "18666:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18677:7:55", + "nodeType": "YulTypedName", + "src": "18677:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18689:6:55", + "nodeType": "YulTypedName", + "src": "18689:6:55", + "type": "" + } + ], + "src": "18633:241:55" + }, + { + "body": { + "nativeSrc": "18973:356:55", + "nodeType": "YulBlock", + "src": "18973:356:55", + "statements": [ + { + "body": { + "nativeSrc": "19019:16:55", + "nodeType": "YulBlock", + "src": "19019:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19028:1:55", + "nodeType": "YulLiteral", + "src": "19028:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19031:1:55", + "nodeType": "YulLiteral", + "src": "19031:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19021:6:55", + "nodeType": "YulIdentifier", + "src": "19021:6:55" + }, + "nativeSrc": "19021:12:55", + "nodeType": "YulFunctionCall", + "src": "19021:12:55" + }, + "nativeSrc": "19021:12:55", + "nodeType": "YulExpressionStatement", + "src": "19021:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18994:7:55", + "nodeType": "YulIdentifier", + "src": "18994:7:55" + }, + { + "name": "headStart", + "nativeSrc": "19003:9:55", + "nodeType": "YulIdentifier", + "src": "19003:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18990:3:55", + "nodeType": "YulIdentifier", + "src": "18990:3:55" + }, + "nativeSrc": "18990:23:55", + "nodeType": "YulFunctionCall", + "src": "18990:23:55" + }, + { + "kind": "number", + "nativeSrc": "19015:2:55", + "nodeType": "YulLiteral", + "src": "19015:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18986:3:55", + "nodeType": "YulIdentifier", + "src": "18986:3:55" + }, + "nativeSrc": "18986:32:55", + "nodeType": "YulFunctionCall", + "src": "18986:32:55" + }, + "nativeSrc": "18983:52:55", + "nodeType": "YulIf", + "src": "18983:52:55" + }, + { + "nativeSrc": "19044:37:55", + "nodeType": "YulVariableDeclaration", + "src": "19044:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19071:9:55", + "nodeType": "YulIdentifier", + "src": "19071:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "19058:12:55", + "nodeType": "YulIdentifier", + "src": "19058:12:55" + }, + "nativeSrc": "19058:23:55", + "nodeType": "YulFunctionCall", + "src": "19058:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "19048:6:55", + "nodeType": "YulTypedName", + "src": "19048:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "19124:16:55", + "nodeType": "YulBlock", + "src": "19124:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19133:1:55", + "nodeType": "YulLiteral", + "src": "19133:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19136:1:55", + "nodeType": "YulLiteral", + "src": "19136:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19126:6:55", + "nodeType": "YulIdentifier", + "src": "19126:6:55" + }, + "nativeSrc": "19126:12:55", + "nodeType": "YulFunctionCall", + "src": "19126:12:55" + }, + "nativeSrc": "19126:12:55", + "nodeType": "YulExpressionStatement", + "src": "19126:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "19096:6:55", + "nodeType": "YulIdentifier", + "src": "19096:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19112:2:55", + "nodeType": "YulLiteral", + "src": "19112:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "19116:1:55", + "nodeType": "YulLiteral", + "src": "19116:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19108:3:55", + "nodeType": "YulIdentifier", + "src": "19108:3:55" + }, + "nativeSrc": "19108:10:55", + "nodeType": "YulFunctionCall", + "src": "19108:10:55" + }, + { + "kind": "number", + "nativeSrc": "19120:1:55", + "nodeType": "YulLiteral", + "src": "19120:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19104:3:55", + "nodeType": "YulIdentifier", + "src": "19104:3:55" + }, + "nativeSrc": "19104:18:55", + "nodeType": "YulFunctionCall", + "src": "19104:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "19093:2:55", + "nodeType": "YulIdentifier", + "src": "19093:2:55" + }, + "nativeSrc": "19093:30:55", + "nodeType": "YulFunctionCall", + "src": "19093:30:55" + }, + "nativeSrc": "19090:50:55", + "nodeType": "YulIf", + "src": "19090:50:55" + }, + { + "nativeSrc": "19149:59:55", + "nodeType": "YulAssignment", + "src": "19149:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19180:9:55", + "nodeType": "YulIdentifier", + "src": "19180:9:55" + }, + { + "name": "offset", + "nativeSrc": "19191:6:55", + "nodeType": "YulIdentifier", + "src": "19191:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19176:3:55", + "nodeType": "YulIdentifier", + "src": "19176:3:55" + }, + "nativeSrc": "19176:22:55", + "nodeType": "YulFunctionCall", + "src": "19176:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "19200:7:55", + "nodeType": "YulIdentifier", + "src": "19200:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "19159:16:55", + "nodeType": "YulIdentifier", + "src": "19159:16:55" + }, + "nativeSrc": "19159:49:55", + "nodeType": "YulFunctionCall", + "src": "19159:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "19149:6:55", + "nodeType": "YulIdentifier", + "src": "19149:6:55" + } + ] + }, + { + "nativeSrc": "19217:45:55", + "nodeType": "YulVariableDeclaration", + "src": "19217:45:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19247:9:55", + "nodeType": "YulIdentifier", + "src": "19247:9:55" + }, + { + "kind": "number", + "nativeSrc": "19258:2:55", + "nodeType": "YulLiteral", + "src": "19258:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19243:3:55", + "nodeType": "YulIdentifier", + "src": "19243:3:55" + }, + "nativeSrc": "19243:18:55", + "nodeType": "YulFunctionCall", + "src": "19243:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "19230:12:55", + "nodeType": "YulIdentifier", + "src": "19230:12:55" + }, + "nativeSrc": "19230:32:55", + "nodeType": "YulFunctionCall", + "src": "19230:32:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "19221:5:55", + "nodeType": "YulTypedName", + "src": "19221:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "19293:5:55", + "nodeType": "YulIdentifier", + "src": "19293:5:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "19271:21:55", + "nodeType": "YulIdentifier", + "src": "19271:21:55" + }, + "nativeSrc": "19271:28:55", + "nodeType": "YulFunctionCall", + "src": "19271:28:55" + }, + "nativeSrc": "19271:28:55", + "nodeType": "YulExpressionStatement", + "src": "19271:28:55" + }, + { + "nativeSrc": "19308:15:55", + "nodeType": "YulAssignment", + "src": "19308:15:55", + "value": { + "name": "value", + "nativeSrc": "19318:5:55", + "nodeType": "YulIdentifier", + "src": "19318:5:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "19308:6:55", + "nodeType": "YulIdentifier", + "src": "19308:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_bool", + "nativeSrc": "18879:450:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18931:9:55", + "nodeType": "YulTypedName", + "src": "18931:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18942:7:55", + "nodeType": "YulTypedName", + "src": "18942:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18954:6:55", + "nodeType": "YulTypedName", + "src": "18954:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18962:6:55", + "nodeType": "YulTypedName", + "src": "18962:6:55", + "type": "" + } + ], + "src": "18879:450:55" + }, + { + "body": { + "nativeSrc": "19455:99:55", + "nodeType": "YulBlock", + "src": "19455:99:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19472:9:55", + "nodeType": "YulIdentifier", + "src": "19472:9:55" + }, + { + "kind": "number", + "nativeSrc": "19483:2:55", + "nodeType": "YulLiteral", + "src": "19483:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19465:6:55", + "nodeType": "YulIdentifier", + "src": "19465:6:55" + }, + "nativeSrc": "19465:21:55", + "nodeType": "YulFunctionCall", + "src": "19465:21:55" + }, + "nativeSrc": "19465:21:55", + "nodeType": "YulExpressionStatement", + "src": "19465:21:55" + }, + { + "nativeSrc": "19495:53:55", + "nodeType": "YulAssignment", + "src": "19495:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19521:6:55", + "nodeType": "YulIdentifier", + "src": "19521:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19533:9:55", + "nodeType": "YulIdentifier", + "src": "19533:9:55" + }, + { + "kind": "number", + "nativeSrc": "19544:2:55", + "nodeType": "YulLiteral", + "src": "19544:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19529:3:55", + "nodeType": "YulIdentifier", + "src": "19529:3:55" + }, + "nativeSrc": "19529:18:55", + "nodeType": "YulFunctionCall", + "src": "19529:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "19503:17:55", + "nodeType": "YulIdentifier", + "src": "19503:17:55" + }, + "nativeSrc": "19503:45:55", + "nodeType": "YulFunctionCall", + "src": "19503:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "19495:4:55", + "nodeType": "YulIdentifier", + "src": "19495:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "19334:220:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19424:9:55", + "nodeType": "YulTypedName", + "src": "19424:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19435:6:55", + "nodeType": "YulTypedName", + "src": "19435:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "19446:4:55", + "nodeType": "YulTypedName", + "src": "19446:4:55", + "type": "" + } + ], + "src": "19334:220:55" + }, + { + "body": { + "nativeSrc": "19710:507:55", + "nodeType": "YulBlock", + "src": "19710:507:55", + "statements": [ + { + "nativeSrc": "19720:12:55", + "nodeType": "YulVariableDeclaration", + "src": "19720:12:55", + "value": { + "kind": "number", + "nativeSrc": "19730:2:55", + "nodeType": "YulLiteral", + "src": "19730:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "19724:2:55", + "nodeType": "YulTypedName", + "src": "19724:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "19741:32:55", + "nodeType": "YulVariableDeclaration", + "src": "19741:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19759:9:55", + "nodeType": "YulIdentifier", + "src": "19759:9:55" + }, + { + "kind": "number", + "nativeSrc": "19770:2:55", + "nodeType": "YulLiteral", + "src": "19770:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19755:3:55", + "nodeType": "YulIdentifier", + "src": "19755:3:55" + }, + "nativeSrc": "19755:18:55", + "nodeType": "YulFunctionCall", + "src": "19755:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "19745:6:55", + "nodeType": "YulTypedName", + "src": "19745:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19789:9:55", + "nodeType": "YulIdentifier", + "src": "19789:9:55" + }, + { + "kind": "number", + "nativeSrc": "19800:2:55", + "nodeType": "YulLiteral", + "src": "19800:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19782:6:55", + "nodeType": "YulIdentifier", + "src": "19782:6:55" + }, + "nativeSrc": "19782:21:55", + "nodeType": "YulFunctionCall", + "src": "19782:21:55" + }, + "nativeSrc": "19782:21:55", + "nodeType": "YulExpressionStatement", + "src": "19782:21:55" + }, + { + "nativeSrc": "19812:17:55", + "nodeType": "YulVariableDeclaration", + "src": "19812:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "19823:6:55", + "nodeType": "YulIdentifier", + "src": "19823:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "19816:3:55", + "nodeType": "YulTypedName", + "src": "19816:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "19838:27:55", + "nodeType": "YulVariableDeclaration", + "src": "19838:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19858:6:55", + "nodeType": "YulIdentifier", + "src": "19858:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19852:5:55", + "nodeType": "YulIdentifier", + "src": "19852:5:55" + }, + "nativeSrc": "19852:13:55", + "nodeType": "YulFunctionCall", + "src": "19852:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "19842:6:55", + "nodeType": "YulTypedName", + "src": "19842:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "19881:6:55", + "nodeType": "YulIdentifier", + "src": "19881:6:55" + }, + { + "name": "length", + "nativeSrc": "19889:6:55", + "nodeType": "YulIdentifier", + "src": "19889:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19874:6:55", + "nodeType": "YulIdentifier", + "src": "19874:6:55" + }, + "nativeSrc": "19874:22:55", + "nodeType": "YulFunctionCall", + "src": "19874:22:55" + }, + "nativeSrc": "19874:22:55", + "nodeType": "YulExpressionStatement", + "src": "19874:22:55" + }, + { + "nativeSrc": "19905:25:55", + "nodeType": "YulAssignment", + "src": "19905:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19916:9:55", + "nodeType": "YulIdentifier", + "src": "19916:9:55" + }, + { + "kind": "number", + "nativeSrc": "19927:2:55", + "nodeType": "YulLiteral", + "src": "19927:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19912:3:55", + "nodeType": "YulIdentifier", + "src": "19912:3:55" + }, + "nativeSrc": "19912:18:55", + "nodeType": "YulFunctionCall", + "src": "19912:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "19905:3:55", + "nodeType": "YulIdentifier", + "src": "19905:3:55" + } + ] + }, + { + "nativeSrc": "19939:29:55", + "nodeType": "YulVariableDeclaration", + "src": "19939:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19957:6:55", + "nodeType": "YulIdentifier", + "src": "19957:6:55" + }, + { + "kind": "number", + "nativeSrc": "19965:2:55", + "nodeType": "YulLiteral", + "src": "19965:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19953:3:55", + "nodeType": "YulIdentifier", + "src": "19953:3:55" + }, + "nativeSrc": "19953:15:55", + "nodeType": "YulFunctionCall", + "src": "19953:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "19943:6:55", + "nodeType": "YulTypedName", + "src": "19943:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "19977:10:55", + "nodeType": "YulVariableDeclaration", + "src": "19977:10:55", + "value": { + "kind": "number", + "nativeSrc": "19986:1:55", + "nodeType": "YulLiteral", + "src": "19986:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "19981:1:55", + "nodeType": "YulTypedName", + "src": "19981:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20045:146:55", + "nodeType": "YulBlock", + "src": "20045:146:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "20066:3:55", + "nodeType": "YulIdentifier", + "src": "20066:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "20081:6:55", + "nodeType": "YulIdentifier", + "src": "20081:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20075:5:55", + "nodeType": "YulIdentifier", + "src": "20075:5:55" + }, + "nativeSrc": "20075:13:55", + "nodeType": "YulFunctionCall", + "src": "20075:13:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20098:3:55", + "nodeType": "YulLiteral", + "src": "20098:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "20103:1:55", + "nodeType": "YulLiteral", + "src": "20103:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20094:3:55", + "nodeType": "YulIdentifier", + "src": "20094:3:55" + }, + "nativeSrc": "20094:11:55", + "nodeType": "YulFunctionCall", + "src": "20094:11:55" + }, + { + "kind": "number", + "nativeSrc": "20107:1:55", + "nodeType": "YulLiteral", + "src": "20107:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20090:3:55", + "nodeType": "YulIdentifier", + "src": "20090:3:55" + }, + "nativeSrc": "20090:19:55", + "nodeType": "YulFunctionCall", + "src": "20090:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20071:3:55", + "nodeType": "YulIdentifier", + "src": "20071:3:55" + }, + "nativeSrc": "20071:39:55", + "nodeType": "YulFunctionCall", + "src": "20071:39:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20059:6:55", + "nodeType": "YulIdentifier", + "src": "20059:6:55" + }, + "nativeSrc": "20059:52:55", + "nodeType": "YulFunctionCall", + "src": "20059:52:55" + }, + "nativeSrc": "20059:52:55", + "nodeType": "YulExpressionStatement", + "src": "20059:52:55" + }, + { + "nativeSrc": "20124:19:55", + "nodeType": "YulAssignment", + "src": "20124:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "20135:3:55", + "nodeType": "YulIdentifier", + "src": "20135:3:55" + }, + { + "name": "_1", + "nativeSrc": "20140:2:55", + "nodeType": "YulIdentifier", + "src": "20140:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20131:3:55", + "nodeType": "YulIdentifier", + "src": "20131:3:55" + }, + "nativeSrc": "20131:12:55", + "nodeType": "YulFunctionCall", + "src": "20131:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "20124:3:55", + "nodeType": "YulIdentifier", + "src": "20124:3:55" + } + ] + }, + { + "nativeSrc": "20156:25:55", + "nodeType": "YulAssignment", + "src": "20156:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "20170:6:55", + "nodeType": "YulIdentifier", + "src": "20170:6:55" + }, + { + "name": "_1", + "nativeSrc": "20178:2:55", + "nodeType": "YulIdentifier", + "src": "20178:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20166:3:55", + "nodeType": "YulIdentifier", + "src": "20166:3:55" + }, + "nativeSrc": "20166:15:55", + "nodeType": "YulFunctionCall", + "src": "20166:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "20156:6:55", + "nodeType": "YulIdentifier", + "src": "20156:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "20007:1:55", + "nodeType": "YulIdentifier", + "src": "20007:1:55" + }, + { + "name": "length", + "nativeSrc": "20010:6:55", + "nodeType": "YulIdentifier", + "src": "20010:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20004:2:55", + "nodeType": "YulIdentifier", + "src": "20004:2:55" + }, + "nativeSrc": "20004:13:55", + "nodeType": "YulFunctionCall", + "src": "20004:13:55" + }, + "nativeSrc": "19996:195:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20018:18:55", + "nodeType": "YulBlock", + "src": "20018:18:55", + "statements": [ + { + "nativeSrc": "20020:14:55", + "nodeType": "YulAssignment", + "src": "20020:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "20029:1:55", + "nodeType": "YulIdentifier", + "src": "20029:1:55" + }, + { + "kind": "number", + "nativeSrc": "20032:1:55", + "nodeType": "YulLiteral", + "src": "20032:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20025:3:55", + "nodeType": "YulIdentifier", + "src": "20025:3:55" + }, + "nativeSrc": "20025:9:55", + "nodeType": "YulFunctionCall", + "src": "20025:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "20020:1:55", + "nodeType": "YulIdentifier", + "src": "20020:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "20000:3:55", + "nodeType": "YulBlock", + "src": "20000:3:55", + "statements": [] + }, + "src": "19996:195:55" + }, + { + "nativeSrc": "20200:11:55", + "nodeType": "YulAssignment", + "src": "20200:11:55", + "value": { + "name": "pos", + "nativeSrc": "20208:3:55", + "nodeType": "YulIdentifier", + "src": "20208:3:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20200:4:55", + "nodeType": "YulIdentifier", + "src": "20200:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "19559:658:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19679:9:55", + "nodeType": "YulTypedName", + "src": "19679:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19690:6:55", + "nodeType": "YulTypedName", + "src": "19690:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "19701:4:55", + "nodeType": "YulTypedName", + "src": "19701:4:55", + "type": "" + } + ], + "src": "19559:658:55" + }, + { + "body": { + "nativeSrc": "20375:107:55", + "nodeType": "YulBlock", + "src": "20375:107:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20392:9:55", + "nodeType": "YulIdentifier", + "src": "20392:9:55" + }, + { + "kind": "number", + "nativeSrc": "20403:2:55", + "nodeType": "YulLiteral", + "src": "20403:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20385:6:55", + "nodeType": "YulIdentifier", + "src": "20385:6:55" + }, + "nativeSrc": "20385:21:55", + "nodeType": "YulFunctionCall", + "src": "20385:21:55" + }, + "nativeSrc": "20385:21:55", + "nodeType": "YulExpressionStatement", + "src": "20385:21:55" + }, + { + "nativeSrc": "20415:61:55", + "nodeType": "YulAssignment", + "src": "20415:61:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "20449:6:55", + "nodeType": "YulIdentifier", + "src": "20449:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20461:9:55", + "nodeType": "YulIdentifier", + "src": "20461:9:55" + }, + { + "kind": "number", + "nativeSrc": "20472:2:55", + "nodeType": "YulLiteral", + "src": "20472:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20457:3:55", + "nodeType": "YulIdentifier", + "src": "20457:3:55" + }, + "nativeSrc": "20457:18:55", + "nodeType": "YulFunctionCall", + "src": "20457:18:55" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "20423:25:55", + "nodeType": "YulIdentifier", + "src": "20423:25:55" + }, + "nativeSrc": "20423:53:55", + "nodeType": "YulFunctionCall", + "src": "20423:53:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20415:4:55", + "nodeType": "YulIdentifier", + "src": "20415:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_Service_$11914_memory_ptr__to_t_struct$_Service_$11914_memory_ptr__fromStack_reversed", + "nativeSrc": "20222:260:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20344:9:55", + "nodeType": "YulTypedName", + "src": "20344:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "20355:6:55", + "nodeType": "YulTypedName", + "src": "20355:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "20366:4:55", + "nodeType": "YulTypedName", + "src": "20366:4:55", + "type": "" + } + ], + "src": "20222:260:55" + }, + { + "body": { + "nativeSrc": "20619:445:55", + "nodeType": "YulBlock", + "src": "20619:445:55", + "statements": [ + { + "body": { + "nativeSrc": "20665:16:55", + "nodeType": "YulBlock", + "src": "20665:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20674:1:55", + "nodeType": "YulLiteral", + "src": "20674:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20677:1:55", + "nodeType": "YulLiteral", + "src": "20677:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20667:6:55", + "nodeType": "YulIdentifier", + "src": "20667:6:55" + }, + "nativeSrc": "20667:12:55", + "nodeType": "YulFunctionCall", + "src": "20667:12:55" + }, + "nativeSrc": "20667:12:55", + "nodeType": "YulExpressionStatement", + "src": "20667:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "20640:7:55", + "nodeType": "YulIdentifier", + "src": "20640:7:55" + }, + { + "name": "headStart", + "nativeSrc": "20649:9:55", + "nodeType": "YulIdentifier", + "src": "20649:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20636:3:55", + "nodeType": "YulIdentifier", + "src": "20636:3:55" + }, + "nativeSrc": "20636:23:55", + "nodeType": "YulFunctionCall", + "src": "20636:23:55" + }, + { + "kind": "number", + "nativeSrc": "20661:2:55", + "nodeType": "YulLiteral", + "src": "20661:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "20632:3:55", + "nodeType": "YulIdentifier", + "src": "20632:3:55" + }, + "nativeSrc": "20632:32:55", + "nodeType": "YulFunctionCall", + "src": "20632:32:55" + }, + "nativeSrc": "20629:52:55", + "nodeType": "YulIf", + "src": "20629:52:55" + }, + { + "nativeSrc": "20690:37:55", + "nodeType": "YulVariableDeclaration", + "src": "20690:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20717:9:55", + "nodeType": "YulIdentifier", + "src": "20717:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20704:12:55", + "nodeType": "YulIdentifier", + "src": "20704:12:55" + }, + "nativeSrc": "20704:23:55", + "nodeType": "YulFunctionCall", + "src": "20704:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "20694:6:55", + "nodeType": "YulTypedName", + "src": "20694:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "20736:28:55", + "nodeType": "YulVariableDeclaration", + "src": "20736:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20754:2:55", + "nodeType": "YulLiteral", + "src": "20754:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "20758:1:55", + "nodeType": "YulLiteral", + "src": "20758:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20750:3:55", + "nodeType": "YulIdentifier", + "src": "20750:3:55" + }, + "nativeSrc": "20750:10:55", + "nodeType": "YulFunctionCall", + "src": "20750:10:55" + }, + { + "kind": "number", + "nativeSrc": "20762:1:55", + "nodeType": "YulLiteral", + "src": "20762:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20746:3:55", + "nodeType": "YulIdentifier", + "src": "20746:3:55" + }, + "nativeSrc": "20746:18:55", + "nodeType": "YulFunctionCall", + "src": "20746:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "20740:2:55", + "nodeType": "YulTypedName", + "src": "20740:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20791:16:55", + "nodeType": "YulBlock", + "src": "20791:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20800:1:55", + "nodeType": "YulLiteral", + "src": "20800:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20803:1:55", + "nodeType": "YulLiteral", + "src": "20803:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20793:6:55", + "nodeType": "YulIdentifier", + "src": "20793:6:55" + }, + "nativeSrc": "20793:12:55", + "nodeType": "YulFunctionCall", + "src": "20793:12:55" + }, + "nativeSrc": "20793:12:55", + "nodeType": "YulExpressionStatement", + "src": "20793:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "20779:6:55", + "nodeType": "YulIdentifier", + "src": "20779:6:55" + }, + { + "name": "_1", + "nativeSrc": "20787:2:55", + "nodeType": "YulIdentifier", + "src": "20787:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20776:2:55", + "nodeType": "YulIdentifier", + "src": "20776:2:55" + }, + "nativeSrc": "20776:14:55", + "nodeType": "YulFunctionCall", + "src": "20776:14:55" + }, + "nativeSrc": "20773:34:55", + "nodeType": "YulIf", + "src": "20773:34:55" + }, + { + "nativeSrc": "20816:59:55", + "nodeType": "YulAssignment", + "src": "20816:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20847:9:55", + "nodeType": "YulIdentifier", + "src": "20847:9:55" + }, + { + "name": "offset", + "nativeSrc": "20858:6:55", + "nodeType": "YulIdentifier", + "src": "20858:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20843:3:55", + "nodeType": "YulIdentifier", + "src": "20843:3:55" + }, + "nativeSrc": "20843:22:55", + "nodeType": "YulFunctionCall", + "src": "20843:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "20867:7:55", + "nodeType": "YulIdentifier", + "src": "20867:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "20826:16:55", + "nodeType": "YulIdentifier", + "src": "20826:16:55" + }, + "nativeSrc": "20826:49:55", + "nodeType": "YulFunctionCall", + "src": "20826:49:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "20816:6:55", + "nodeType": "YulIdentifier", + "src": "20816:6:55" + } + ] + }, + { + "nativeSrc": "20884:48:55", + "nodeType": "YulVariableDeclaration", + "src": "20884:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20917:9:55", + "nodeType": "YulIdentifier", + "src": "20917:9:55" + }, + { + "kind": "number", + "nativeSrc": "20928:2:55", + "nodeType": "YulLiteral", + "src": "20928:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20913:3:55", + "nodeType": "YulIdentifier", + "src": "20913:3:55" + }, + "nativeSrc": "20913:18:55", + "nodeType": "YulFunctionCall", + "src": "20913:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20900:12:55", + "nodeType": "YulIdentifier", + "src": "20900:12:55" + }, + "nativeSrc": "20900:32:55", + "nodeType": "YulFunctionCall", + "src": "20900:32:55" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "20888:8:55", + "nodeType": "YulTypedName", + "src": "20888:8:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20961:16:55", + "nodeType": "YulBlock", + "src": "20961:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20970:1:55", + "nodeType": "YulLiteral", + "src": "20970:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20973:1:55", + "nodeType": "YulLiteral", + "src": "20973:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20963:6:55", + "nodeType": "YulIdentifier", + "src": "20963:6:55" + }, + "nativeSrc": "20963:12:55", + "nodeType": "YulFunctionCall", + "src": "20963:12:55" + }, + "nativeSrc": "20963:12:55", + "nodeType": "YulExpressionStatement", + "src": "20963:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "20947:8:55", + "nodeType": "YulIdentifier", + "src": "20947:8:55" + }, + { + "name": "_1", + "nativeSrc": "20957:2:55", + "nodeType": "YulIdentifier", + "src": "20957:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20944:2:55", + "nodeType": "YulIdentifier", + "src": "20944:2:55" + }, + "nativeSrc": "20944:16:55", + "nodeType": "YulFunctionCall", + "src": "20944:16:55" + }, + "nativeSrc": "20941:36:55", + "nodeType": "YulIf", + "src": "20941:36:55" + }, + { + "nativeSrc": "20986:72:55", + "nodeType": "YulAssignment", + "src": "20986:72:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21028:9:55", + "nodeType": "YulIdentifier", + "src": "21028:9:55" + }, + { + "name": "offset_1", + "nativeSrc": "21039:8:55", + "nodeType": "YulIdentifier", + "src": "21039:8:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21024:3:55", + "nodeType": "YulIdentifier", + "src": "21024:3:55" + }, + "nativeSrc": "21024:24:55", + "nodeType": "YulFunctionCall", + "src": "21024:24:55" + }, + { + "name": "dataEnd", + "nativeSrc": "21050:7:55", + "nodeType": "YulIdentifier", + "src": "21050:7:55" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "20996:27:55", + "nodeType": "YulIdentifier", + "src": "20996:27:55" + }, + "nativeSrc": "20996:62:55", + "nodeType": "YulFunctionCall", + "src": "20996:62:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "20986:6:55", + "nodeType": "YulIdentifier", + "src": "20986:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "20487:577:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20577:9:55", + "nodeType": "YulTypedName", + "src": "20577:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "20588:7:55", + "nodeType": "YulTypedName", + "src": "20588:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "20600:6:55", + "nodeType": "YulTypedName", + "src": "20600:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "20608:6:55", + "nodeType": "YulTypedName", + "src": "20608:6:55", + "type": "" + } + ], + "src": "20487:577:55" + }, + { + "body": { + "nativeSrc": "21164:228:55", + "nodeType": "YulBlock", + "src": "21164:228:55", + "statements": [ + { + "body": { + "nativeSrc": "21210:16:55", + "nodeType": "YulBlock", + "src": "21210:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21219:1:55", + "nodeType": "YulLiteral", + "src": "21219:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21222:1:55", + "nodeType": "YulLiteral", + "src": "21222:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21212:6:55", + "nodeType": "YulIdentifier", + "src": "21212:6:55" + }, + "nativeSrc": "21212:12:55", + "nodeType": "YulFunctionCall", + "src": "21212:12:55" + }, + "nativeSrc": "21212:12:55", + "nodeType": "YulExpressionStatement", + "src": "21212:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "21185:7:55", + "nodeType": "YulIdentifier", + "src": "21185:7:55" + }, + { + "name": "headStart", + "nativeSrc": "21194:9:55", + "nodeType": "YulIdentifier", + "src": "21194:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21181:3:55", + "nodeType": "YulIdentifier", + "src": "21181:3:55" + }, + "nativeSrc": "21181:23:55", + "nodeType": "YulFunctionCall", + "src": "21181:23:55" + }, + { + "kind": "number", + "nativeSrc": "21206:2:55", + "nodeType": "YulLiteral", + "src": "21206:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21177:3:55", + "nodeType": "YulIdentifier", + "src": "21177:3:55" + }, + "nativeSrc": "21177:32:55", + "nodeType": "YulFunctionCall", + "src": "21177:32:55" + }, + "nativeSrc": "21174:52:55", + "nodeType": "YulIf", + "src": "21174:52:55" + }, + { + "nativeSrc": "21235:36:55", + "nodeType": "YulVariableDeclaration", + "src": "21235:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21261:9:55", + "nodeType": "YulIdentifier", + "src": "21261:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21248:12:55", + "nodeType": "YulIdentifier", + "src": "21248:12:55" + }, + "nativeSrc": "21248:23:55", + "nodeType": "YulFunctionCall", + "src": "21248:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "21239:5:55", + "nodeType": "YulTypedName", + "src": "21239:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "21305:5:55", + "nodeType": "YulIdentifier", + "src": "21305:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "21280:24:55", + "nodeType": "YulIdentifier", + "src": "21280:24:55" + }, + "nativeSrc": "21280:31:55", + "nodeType": "YulFunctionCall", + "src": "21280:31:55" + }, + "nativeSrc": "21280:31:55", + "nodeType": "YulExpressionStatement", + "src": "21280:31:55" + }, + { + "nativeSrc": "21320:15:55", + "nodeType": "YulAssignment", + "src": "21320:15:55", + "value": { + "name": "value", + "nativeSrc": "21330:5:55", + "nodeType": "YulIdentifier", + "src": "21330:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "21320:6:55", + "nodeType": "YulIdentifier", + "src": "21320:6:55" + } + ] + }, + { + "nativeSrc": "21344:42:55", + "nodeType": "YulAssignment", + "src": "21344:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21371:9:55", + "nodeType": "YulIdentifier", + "src": "21371:9:55" + }, + { + "kind": "number", + "nativeSrc": "21382:2:55", + "nodeType": "YulLiteral", + "src": "21382:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21367:3:55", + "nodeType": "YulIdentifier", + "src": "21367:3:55" + }, + "nativeSrc": "21367:18:55", + "nodeType": "YulFunctionCall", + "src": "21367:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21354:12:55", + "nodeType": "YulIdentifier", + "src": "21354:12:55" + }, + "nativeSrc": "21354:32:55", + "nodeType": "YulFunctionCall", + "src": "21354:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "21344:6:55", + "nodeType": "YulIdentifier", + "src": "21344:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payablet_uint256", + "nativeSrc": "21069:323:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "21122:9:55", + "nodeType": "YulTypedName", + "src": "21122:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "21133:7:55", + "nodeType": "YulTypedName", + "src": "21133:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "21145:6:55", + "nodeType": "YulTypedName", + "src": "21145:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "21153:6:55", + "nodeType": "YulTypedName", + "src": "21153:6:55", + "type": "" + } + ], + "src": "21069:323:55" + }, + { + "body": { + "nativeSrc": "21429:95:55", + "nodeType": "YulBlock", + "src": "21429:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21446:1:55", + "nodeType": "YulLiteral", + "src": "21446:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21453:3:55", + "nodeType": "YulLiteral", + "src": "21453:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "21458:10:55", + "nodeType": "YulLiteral", + "src": "21458:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21449:3:55", + "nodeType": "YulIdentifier", + "src": "21449:3:55" + }, + "nativeSrc": "21449:20:55", + "nodeType": "YulFunctionCall", + "src": "21449:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21439:6:55", + "nodeType": "YulIdentifier", + "src": "21439:6:55" + }, + "nativeSrc": "21439:31:55", + "nodeType": "YulFunctionCall", + "src": "21439:31:55" + }, + "nativeSrc": "21439:31:55", + "nodeType": "YulExpressionStatement", + "src": "21439:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21486:1:55", + "nodeType": "YulLiteral", + "src": "21486:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "21489:4:55", + "nodeType": "YulLiteral", + "src": "21489:4:55", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21479:6:55", + "nodeType": "YulIdentifier", + "src": "21479:6:55" + }, + "nativeSrc": "21479:15:55", + "nodeType": "YulFunctionCall", + "src": "21479:15:55" + }, + "nativeSrc": "21479:15:55", + "nodeType": "YulExpressionStatement", + "src": "21479:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21510:1:55", + "nodeType": "YulLiteral", + "src": "21510:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21513:4:55", + "nodeType": "YulLiteral", + "src": "21513:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21503:6:55", + "nodeType": "YulIdentifier", + "src": "21503:6:55" + }, + "nativeSrc": "21503:15:55", + "nodeType": "YulFunctionCall", + "src": "21503:15:55" + }, + "nativeSrc": "21503:15:55", + "nodeType": "YulExpressionStatement", + "src": "21503:15:55" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "21397:127:55", + "nodeType": "YulFunctionDefinition", + "src": "21397:127:55" + }, + { + "body": { + "nativeSrc": "21620:557:55", + "nodeType": "YulBlock", + "src": "21620:557:55", + "statements": [ + { + "body": { + "nativeSrc": "21666:16:55", + "nodeType": "YulBlock", + "src": "21666:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21675:1:55", + "nodeType": "YulLiteral", + "src": "21675:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21678:1:55", + "nodeType": "YulLiteral", + "src": "21678:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21668:6:55", + "nodeType": "YulIdentifier", + "src": "21668:6:55" + }, + "nativeSrc": "21668:12:55", + "nodeType": "YulFunctionCall", + "src": "21668:12:55" + }, + "nativeSrc": "21668:12:55", + "nodeType": "YulExpressionStatement", + "src": "21668:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "21641:7:55", + "nodeType": "YulIdentifier", + "src": "21641:7:55" + }, + { + "name": "headStart", + "nativeSrc": "21650:9:55", + "nodeType": "YulIdentifier", + "src": "21650:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21637:3:55", + "nodeType": "YulIdentifier", + "src": "21637:3:55" + }, + "nativeSrc": "21637:23:55", + "nodeType": "YulFunctionCall", + "src": "21637:23:55" + }, + { + "kind": "number", + "nativeSrc": "21662:2:55", + "nodeType": "YulLiteral", + "src": "21662:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21633:3:55", + "nodeType": "YulIdentifier", + "src": "21633:3:55" + }, + "nativeSrc": "21633:32:55", + "nodeType": "YulFunctionCall", + "src": "21633:32:55" + }, + "nativeSrc": "21630:52:55", + "nodeType": "YulIf", + "src": "21630:52:55" + }, + { + "nativeSrc": "21691:30:55", + "nodeType": "YulVariableDeclaration", + "src": "21691:30:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21711:9:55", + "nodeType": "YulIdentifier", + "src": "21711:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21705:5:55", + "nodeType": "YulIdentifier", + "src": "21705:5:55" + }, + "nativeSrc": "21705:16:55", + "nodeType": "YulFunctionCall", + "src": "21705:16:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "21695:6:55", + "nodeType": "YulTypedName", + "src": "21695:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21764:16:55", + "nodeType": "YulBlock", + "src": "21764:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21773:1:55", + "nodeType": "YulLiteral", + "src": "21773:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21776:1:55", + "nodeType": "YulLiteral", + "src": "21776:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21766:6:55", + "nodeType": "YulIdentifier", + "src": "21766:6:55" + }, + "nativeSrc": "21766:12:55", + "nodeType": "YulFunctionCall", + "src": "21766:12:55" + }, + "nativeSrc": "21766:12:55", + "nodeType": "YulExpressionStatement", + "src": "21766:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "21736:6:55", + "nodeType": "YulIdentifier", + "src": "21736:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21752:2:55", + "nodeType": "YulLiteral", + "src": "21752:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "21756:1:55", + "nodeType": "YulLiteral", + "src": "21756:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21748:3:55", + "nodeType": "YulIdentifier", + "src": "21748:3:55" + }, + "nativeSrc": "21748:10:55", + "nodeType": "YulFunctionCall", + "src": "21748:10:55" + }, + { + "kind": "number", + "nativeSrc": "21760:1:55", + "nodeType": "YulLiteral", + "src": "21760:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21744:3:55", + "nodeType": "YulIdentifier", + "src": "21744:3:55" + }, + "nativeSrc": "21744:18:55", + "nodeType": "YulFunctionCall", + "src": "21744:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21733:2:55", + "nodeType": "YulIdentifier", + "src": "21733:2:55" + }, + "nativeSrc": "21733:30:55", + "nodeType": "YulFunctionCall", + "src": "21733:30:55" + }, + "nativeSrc": "21730:50:55", + "nodeType": "YulIf", + "src": "21730:50:55" + }, + { + "nativeSrc": "21789:32:55", + "nodeType": "YulVariableDeclaration", + "src": "21789:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21803:9:55", + "nodeType": "YulIdentifier", + "src": "21803:9:55" + }, + { + "name": "offset", + "nativeSrc": "21814:6:55", + "nodeType": "YulIdentifier", + "src": "21814:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21799:3:55", + "nodeType": "YulIdentifier", + "src": "21799:3:55" + }, + "nativeSrc": "21799:22:55", + "nodeType": "YulFunctionCall", + "src": "21799:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "21793:2:55", + "nodeType": "YulTypedName", + "src": "21793:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21869:16:55", + "nodeType": "YulBlock", + "src": "21869:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21878:1:55", + "nodeType": "YulLiteral", + "src": "21878:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21881:1:55", + "nodeType": "YulLiteral", + "src": "21881:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21871:6:55", + "nodeType": "YulIdentifier", + "src": "21871:6:55" + }, + "nativeSrc": "21871:12:55", + "nodeType": "YulFunctionCall", + "src": "21871:12:55" + }, + "nativeSrc": "21871:12:55", + "nodeType": "YulExpressionStatement", + "src": "21871:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "21848:2:55", + "nodeType": "YulIdentifier", + "src": "21848:2:55" + }, + { + "kind": "number", + "nativeSrc": "21852:4:55", + "nodeType": "YulLiteral", + "src": "21852:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21844:3:55", + "nodeType": "YulIdentifier", + "src": "21844:3:55" + }, + "nativeSrc": "21844:13:55", + "nodeType": "YulFunctionCall", + "src": "21844:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "21859:7:55", + "nodeType": "YulIdentifier", + "src": "21859:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21840:3:55", + "nodeType": "YulIdentifier", + "src": "21840:3:55" + }, + "nativeSrc": "21840:27:55", + "nodeType": "YulFunctionCall", + "src": "21840:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21833:6:55", + "nodeType": "YulIdentifier", + "src": "21833:6:55" + }, + "nativeSrc": "21833:35:55", + "nodeType": "YulFunctionCall", + "src": "21833:35:55" + }, + "nativeSrc": "21830:55:55", + "nodeType": "YulIf", + "src": "21830:55:55" + }, + { + "nativeSrc": "21894:19:55", + "nodeType": "YulVariableDeclaration", + "src": "21894:19:55", + "value": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "21910:2:55", + "nodeType": "YulIdentifier", + "src": "21910:2:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21904:5:55", + "nodeType": "YulIdentifier", + "src": "21904:5:55" + }, + "nativeSrc": "21904:9:55", + "nodeType": "YulFunctionCall", + "src": "21904:9:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "21898:2:55", + "nodeType": "YulTypedName", + "src": "21898:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "21922:61:55", + "nodeType": "YulVariableDeclaration", + "src": "21922:61:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "21979:2:55", + "nodeType": "YulIdentifier", + "src": "21979:2:55" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "21951:27:55", + "nodeType": "YulIdentifier", + "src": "21951:27:55" + }, + "nativeSrc": "21951:31:55", + "nodeType": "YulFunctionCall", + "src": "21951:31:55" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "21935:15:55", + "nodeType": "YulIdentifier", + "src": "21935:15:55" + }, + "nativeSrc": "21935:48:55", + "nodeType": "YulFunctionCall", + "src": "21935:48:55" + }, + "variables": [ + { + "name": "array", + "nativeSrc": "21926:5:55", + "nodeType": "YulTypedName", + "src": "21926:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nativeSrc": "21999:5:55", + "nodeType": "YulIdentifier", + "src": "21999:5:55" + }, + { + "name": "_2", + "nativeSrc": "22006:2:55", + "nodeType": "YulIdentifier", + "src": "22006:2:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21992:6:55", + "nodeType": "YulIdentifier", + "src": "21992:6:55" + }, + "nativeSrc": "21992:17:55", + "nodeType": "YulFunctionCall", + "src": "21992:17:55" + }, + "nativeSrc": "21992:17:55", + "nodeType": "YulExpressionStatement", + "src": "21992:17:55" + }, + { + "body": { + "nativeSrc": "22055:16:55", + "nodeType": "YulBlock", + "src": "22055:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22064:1:55", + "nodeType": "YulLiteral", + "src": "22064:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22067:1:55", + "nodeType": "YulLiteral", + "src": "22067:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22057:6:55", + "nodeType": "YulIdentifier", + "src": "22057:6:55" + }, + "nativeSrc": "22057:12:55", + "nodeType": "YulFunctionCall", + "src": "22057:12:55" + }, + "nativeSrc": "22057:12:55", + "nodeType": "YulExpressionStatement", + "src": "22057:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "22032:2:55", + "nodeType": "YulIdentifier", + "src": "22032:2:55" + }, + { + "name": "_2", + "nativeSrc": "22036:2:55", + "nodeType": "YulIdentifier", + "src": "22036:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22028:3:55", + "nodeType": "YulIdentifier", + "src": "22028:3:55" + }, + "nativeSrc": "22028:11:55", + "nodeType": "YulFunctionCall", + "src": "22028:11:55" + }, + { + "kind": "number", + "nativeSrc": "22041:2:55", + "nodeType": "YulLiteral", + "src": "22041:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22024:3:55", + "nodeType": "YulIdentifier", + "src": "22024:3:55" + }, + "nativeSrc": "22024:20:55", + "nodeType": "YulFunctionCall", + "src": "22024:20:55" + }, + { + "name": "dataEnd", + "nativeSrc": "22046:7:55", + "nodeType": "YulIdentifier", + "src": "22046:7:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22021:2:55", + "nodeType": "YulIdentifier", + "src": "22021:2:55" + }, + "nativeSrc": "22021:33:55", + "nodeType": "YulFunctionCall", + "src": "22021:33:55" + }, + "nativeSrc": "22018:53:55", + "nodeType": "YulIf", + "src": "22018:53:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "22119:2:55", + "nodeType": "YulIdentifier", + "src": "22119:2:55" + }, + { + "kind": "number", + "nativeSrc": "22123:2:55", + "nodeType": "YulLiteral", + "src": "22123:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22115:3:55", + "nodeType": "YulIdentifier", + "src": "22115:3:55" + }, + "nativeSrc": "22115:11:55", + "nodeType": "YulFunctionCall", + "src": "22115:11:55" + }, + { + "arguments": [ + { + "name": "array", + "nativeSrc": "22132:5:55", + "nodeType": "YulIdentifier", + "src": "22132:5:55" + }, + { + "kind": "number", + "nativeSrc": "22139:2:55", + "nodeType": "YulLiteral", + "src": "22139:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22128:3:55", + "nodeType": "YulIdentifier", + "src": "22128:3:55" + }, + "nativeSrc": "22128:14:55", + "nodeType": "YulFunctionCall", + "src": "22128:14:55" + }, + { + "name": "_2", + "nativeSrc": "22144:2:55", + "nodeType": "YulIdentifier", + "src": "22144:2:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "22080:34:55", + "nodeType": "YulIdentifier", + "src": "22080:34:55" + }, + "nativeSrc": "22080:67:55", + "nodeType": "YulFunctionCall", + "src": "22080:67:55" + }, + "nativeSrc": "22080:67:55", + "nodeType": "YulExpressionStatement", + "src": "22080:67:55" + }, + { + "nativeSrc": "22156:15:55", + "nodeType": "YulAssignment", + "src": "22156:15:55", + "value": { + "name": "array", + "nativeSrc": "22166:5:55", + "nodeType": "YulIdentifier", + "src": "22166:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22156:6:55", + "nodeType": "YulIdentifier", + "src": "22156:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", + "nativeSrc": "21529:648:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "21586:9:55", + "nodeType": "YulTypedName", + "src": "21586:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "21597:7:55", + "nodeType": "YulTypedName", + "src": "21597:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "21609:6:55", + "nodeType": "YulTypedName", + "src": "21609:6:55", + "type": "" + } + ], + "src": "21529:648:55" + }, + { + "body": { + "nativeSrc": "22339:218:55", + "nodeType": "YulBlock", + "src": "22339:218:55", + "statements": [ + { + "nativeSrc": "22349:26:55", + "nodeType": "YulAssignment", + "src": "22349:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22361:9:55", + "nodeType": "YulIdentifier", + "src": "22361:9:55" + }, + { + "kind": "number", + "nativeSrc": "22372:2:55", + "nodeType": "YulLiteral", + "src": "22372:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22357:3:55", + "nodeType": "YulIdentifier", + "src": "22357:3:55" + }, + "nativeSrc": "22357:18:55", + "nodeType": "YulFunctionCall", + "src": "22357:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "22349:4:55", + "nodeType": "YulIdentifier", + "src": "22349:4:55" + } + ] + }, + { + "nativeSrc": "22384:29:55", + "nodeType": "YulVariableDeclaration", + "src": "22384:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22402:3:55", + "nodeType": "YulLiteral", + "src": "22402:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "22407:1:55", + "nodeType": "YulLiteral", + "src": "22407:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22398:3:55", + "nodeType": "YulIdentifier", + "src": "22398:3:55" + }, + "nativeSrc": "22398:11:55", + "nodeType": "YulFunctionCall", + "src": "22398:11:55" + }, + { + "kind": "number", + "nativeSrc": "22411:1:55", + "nodeType": "YulLiteral", + "src": "22411:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22394:3:55", + "nodeType": "YulIdentifier", + "src": "22394:3:55" + }, + "nativeSrc": "22394:19:55", + "nodeType": "YulFunctionCall", + "src": "22394:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "22388:2:55", + "nodeType": "YulTypedName", + "src": "22388:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22429:9:55", + "nodeType": "YulIdentifier", + "src": "22429:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "22444:6:55", + "nodeType": "YulIdentifier", + "src": "22444:6:55" + }, + { + "name": "_1", + "nativeSrc": "22452:2:55", + "nodeType": "YulIdentifier", + "src": "22452:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22440:3:55", + "nodeType": "YulIdentifier", + "src": "22440:3:55" + }, + "nativeSrc": "22440:15:55", + "nodeType": "YulFunctionCall", + "src": "22440:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22422:6:55", + "nodeType": "YulIdentifier", + "src": "22422:6:55" + }, + "nativeSrc": "22422:34:55", + "nodeType": "YulFunctionCall", + "src": "22422:34:55" + }, + "nativeSrc": "22422:34:55", + "nodeType": "YulExpressionStatement", + "src": "22422:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22476:9:55", + "nodeType": "YulIdentifier", + "src": "22476:9:55" + }, + { + "kind": "number", + "nativeSrc": "22487:2:55", + "nodeType": "YulLiteral", + "src": "22487:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22472:3:55", + "nodeType": "YulIdentifier", + "src": "22472:3:55" + }, + "nativeSrc": "22472:18:55", + "nodeType": "YulFunctionCall", + "src": "22472:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "22496:6:55", + "nodeType": "YulIdentifier", + "src": "22496:6:55" + }, + { + "name": "_1", + "nativeSrc": "22504:2:55", + "nodeType": "YulIdentifier", + "src": "22504:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22492:3:55", + "nodeType": "YulIdentifier", + "src": "22492:3:55" + }, + "nativeSrc": "22492:15:55", + "nodeType": "YulFunctionCall", + "src": "22492:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22465:6:55", + "nodeType": "YulIdentifier", + "src": "22465:6:55" + }, + "nativeSrc": "22465:43:55", + "nodeType": "YulFunctionCall", + "src": "22465:43:55" + }, + "nativeSrc": "22465:43:55", + "nodeType": "YulExpressionStatement", + "src": "22465:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22528:9:55", + "nodeType": "YulIdentifier", + "src": "22528:9:55" + }, + { + "kind": "number", + "nativeSrc": "22539:2:55", + "nodeType": "YulLiteral", + "src": "22539:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22524:3:55", + "nodeType": "YulIdentifier", + "src": "22524:3:55" + }, + "nativeSrc": "22524:18:55", + "nodeType": "YulFunctionCall", + "src": "22524:18:55" + }, + { + "name": "value2", + "nativeSrc": "22544:6:55", + "nodeType": "YulIdentifier", + "src": "22544:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22517:6:55", + "nodeType": "YulIdentifier", + "src": "22517:6:55" + }, + "nativeSrc": "22517:34:55", + "nodeType": "YulFunctionCall", + "src": "22517:34:55" + }, + "nativeSrc": "22517:34:55", + "nodeType": "YulExpressionStatement", + "src": "22517:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "22182:375:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22292:9:55", + "nodeType": "YulTypedName", + "src": "22292:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "22303:6:55", + "nodeType": "YulTypedName", + "src": "22303:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22311:6:55", + "nodeType": "YulTypedName", + "src": "22311:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "22319:6:55", + "nodeType": "YulTypedName", + "src": "22319:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "22330:4:55", + "nodeType": "YulTypedName", + "src": "22330:4:55", + "type": "" + } + ], + "src": "22182:375:55" + }, + { + "body": { + "nativeSrc": "22640:167:55", + "nodeType": "YulBlock", + "src": "22640:167:55", + "statements": [ + { + "body": { + "nativeSrc": "22686:16:55", + "nodeType": "YulBlock", + "src": "22686:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22695:1:55", + "nodeType": "YulLiteral", + "src": "22695:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22698:1:55", + "nodeType": "YulLiteral", + "src": "22698:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22688:6:55", + "nodeType": "YulIdentifier", + "src": "22688:6:55" + }, + "nativeSrc": "22688:12:55", + "nodeType": "YulFunctionCall", + "src": "22688:12:55" + }, + "nativeSrc": "22688:12:55", + "nodeType": "YulExpressionStatement", + "src": "22688:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "22661:7:55", + "nodeType": "YulIdentifier", + "src": "22661:7:55" + }, + { + "name": "headStart", + "nativeSrc": "22670:9:55", + "nodeType": "YulIdentifier", + "src": "22670:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22657:3:55", + "nodeType": "YulIdentifier", + "src": "22657:3:55" + }, + "nativeSrc": "22657:23:55", + "nodeType": "YulFunctionCall", + "src": "22657:23:55" + }, + { + "kind": "number", + "nativeSrc": "22682:2:55", + "nodeType": "YulLiteral", + "src": "22682:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "22653:3:55", + "nodeType": "YulIdentifier", + "src": "22653:3:55" + }, + "nativeSrc": "22653:32:55", + "nodeType": "YulFunctionCall", + "src": "22653:32:55" + }, + "nativeSrc": "22650:52:55", + "nodeType": "YulIf", + "src": "22650:52:55" + }, + { + "nativeSrc": "22711:29:55", + "nodeType": "YulVariableDeclaration", + "src": "22711:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22730:9:55", + "nodeType": "YulIdentifier", + "src": "22730:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22724:5:55", + "nodeType": "YulIdentifier", + "src": "22724:5:55" + }, + "nativeSrc": "22724:16:55", + "nodeType": "YulFunctionCall", + "src": "22724:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "22715:5:55", + "nodeType": "YulTypedName", + "src": "22715:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "22771:5:55", + "nodeType": "YulIdentifier", + "src": "22771:5:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "22749:21:55", + "nodeType": "YulIdentifier", + "src": "22749:21:55" + }, + "nativeSrc": "22749:28:55", + "nodeType": "YulFunctionCall", + "src": "22749:28:55" + }, + "nativeSrc": "22749:28:55", + "nodeType": "YulExpressionStatement", + "src": "22749:28:55" + }, + { + "nativeSrc": "22786:15:55", + "nodeType": "YulAssignment", + "src": "22786:15:55", + "value": { + "name": "value", + "nativeSrc": "22796:5:55", + "nodeType": "YulIdentifier", + "src": "22796:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22786:6:55", + "nodeType": "YulIdentifier", + "src": "22786:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "22562:245:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22606:9:55", + "nodeType": "YulTypedName", + "src": "22606:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "22617:7:55", + "nodeType": "YulTypedName", + "src": "22617:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "22629:6:55", + "nodeType": "YulTypedName", + "src": "22629:6:55", + "type": "" + } + ], + "src": "22562:245:55" + }, + { + "body": { + "nativeSrc": "22844:95:55", + "nodeType": "YulBlock", + "src": "22844:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22861:1:55", + "nodeType": "YulLiteral", + "src": "22861:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22868:3:55", + "nodeType": "YulLiteral", + "src": "22868:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "22873:10:55", + "nodeType": "YulLiteral", + "src": "22873:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22864:3:55", + "nodeType": "YulIdentifier", + "src": "22864:3:55" + }, + "nativeSrc": "22864:20:55", + "nodeType": "YulFunctionCall", + "src": "22864:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22854:6:55", + "nodeType": "YulIdentifier", + "src": "22854:6:55" + }, + "nativeSrc": "22854:31:55", + "nodeType": "YulFunctionCall", + "src": "22854:31:55" + }, + "nativeSrc": "22854:31:55", + "nodeType": "YulExpressionStatement", + "src": "22854:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22901:1:55", + "nodeType": "YulLiteral", + "src": "22901:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "22904:4:55", + "nodeType": "YulLiteral", + "src": "22904:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22894:6:55", + "nodeType": "YulIdentifier", + "src": "22894:6:55" + }, + "nativeSrc": "22894:15:55", + "nodeType": "YulFunctionCall", + "src": "22894:15:55" + }, + "nativeSrc": "22894:15:55", + "nodeType": "YulExpressionStatement", + "src": "22894:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22925:1:55", + "nodeType": "YulLiteral", + "src": "22925:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22928:4:55", + "nodeType": "YulLiteral", + "src": "22928:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22918:6:55", + "nodeType": "YulIdentifier", + "src": "22918:6:55" + }, + "nativeSrc": "22918:15:55", + "nodeType": "YulFunctionCall", + "src": "22918:15:55" + }, + "nativeSrc": "22918:15:55", + "nodeType": "YulExpressionStatement", + "src": "22918:15:55" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "22812:127:55", + "nodeType": "YulFunctionDefinition", + "src": "22812:127:55" + }, + { + "body": { + "nativeSrc": "22993:79:55", + "nodeType": "YulBlock", + "src": "22993:79:55", + "statements": [ + { + "nativeSrc": "23003:17:55", + "nodeType": "YulAssignment", + "src": "23003:17:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "23015:1:55", + "nodeType": "YulIdentifier", + "src": "23015:1:55" + }, + { + "name": "y", + "nativeSrc": "23018:1:55", + "nodeType": "YulIdentifier", + "src": "23018:1:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23011:3:55", + "nodeType": "YulIdentifier", + "src": "23011:3:55" + }, + "nativeSrc": "23011:9:55", + "nodeType": "YulFunctionCall", + "src": "23011:9:55" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "23003:4:55", + "nodeType": "YulIdentifier", + "src": "23003:4:55" + } + ] + }, + { + "body": { + "nativeSrc": "23044:22:55", + "nodeType": "YulBlock", + "src": "23044:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "23046:16:55", + "nodeType": "YulIdentifier", + "src": "23046:16:55" + }, + "nativeSrc": "23046:18:55", + "nodeType": "YulFunctionCall", + "src": "23046:18:55" + }, + "nativeSrc": "23046:18:55", + "nodeType": "YulExpressionStatement", + "src": "23046:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "23035:4:55", + "nodeType": "YulIdentifier", + "src": "23035:4:55" + }, + { + "name": "x", + "nativeSrc": "23041:1:55", + "nodeType": "YulIdentifier", + "src": "23041:1:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "23032:2:55", + "nodeType": "YulIdentifier", + "src": "23032:2:55" + }, + "nativeSrc": "23032:11:55", + "nodeType": "YulFunctionCall", + "src": "23032:11:55" + }, + "nativeSrc": "23029:37:55", + "nodeType": "YulIf", + "src": "23029:37:55" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "22944:128:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "22975:1:55", + "nodeType": "YulTypedName", + "src": "22975:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "22978:1:55", + "nodeType": "YulTypedName", + "src": "22978:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "22984:4:55", + "nodeType": "YulTypedName", + "src": "22984:4:55", + "type": "" + } + ], + "src": "22944:128:55" + }, + { + "body": { + "nativeSrc": "23214:145:55", + "nodeType": "YulBlock", + "src": "23214:145:55", + "statements": [ + { + "nativeSrc": "23224:26:55", + "nodeType": "YulAssignment", + "src": "23224:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23236:9:55", + "nodeType": "YulIdentifier", + "src": "23236:9:55" + }, + { + "kind": "number", + "nativeSrc": "23247:2:55", + "nodeType": "YulLiteral", + "src": "23247:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23232:3:55", + "nodeType": "YulIdentifier", + "src": "23232:3:55" + }, + "nativeSrc": "23232:18:55", + "nodeType": "YulFunctionCall", + "src": "23232:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23224:4:55", + "nodeType": "YulIdentifier", + "src": "23224:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23266:9:55", + "nodeType": "YulIdentifier", + "src": "23266:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23281:6:55", + "nodeType": "YulIdentifier", + "src": "23281:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23297:3:55", + "nodeType": "YulLiteral", + "src": "23297:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23302:1:55", + "nodeType": "YulLiteral", + "src": "23302:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23293:3:55", + "nodeType": "YulIdentifier", + "src": "23293:3:55" + }, + "nativeSrc": "23293:11:55", + "nodeType": "YulFunctionCall", + "src": "23293:11:55" + }, + { + "kind": "number", + "nativeSrc": "23306:1:55", + "nodeType": "YulLiteral", + "src": "23306:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23289:3:55", + "nodeType": "YulIdentifier", + "src": "23289:3:55" + }, + "nativeSrc": "23289:19:55", + "nodeType": "YulFunctionCall", + "src": "23289:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23277:3:55", + "nodeType": "YulIdentifier", + "src": "23277:3:55" + }, + "nativeSrc": "23277:32:55", + "nodeType": "YulFunctionCall", + "src": "23277:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23259:6:55", + "nodeType": "YulIdentifier", + "src": "23259:6:55" + }, + "nativeSrc": "23259:51:55", + "nodeType": "YulFunctionCall", + "src": "23259:51:55" + }, + "nativeSrc": "23259:51:55", + "nodeType": "YulExpressionStatement", + "src": "23259:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23330:9:55", + "nodeType": "YulIdentifier", + "src": "23330:9:55" + }, + { + "kind": "number", + "nativeSrc": "23341:2:55", + "nodeType": "YulLiteral", + "src": "23341:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23326:3:55", + "nodeType": "YulIdentifier", + "src": "23326:3:55" + }, + "nativeSrc": "23326:18:55", + "nodeType": "YulFunctionCall", + "src": "23326:18:55" + }, + { + "name": "value1", + "nativeSrc": "23346:6:55", + "nodeType": "YulIdentifier", + "src": "23346:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23319:6:55", + "nodeType": "YulIdentifier", + "src": "23319:6:55" + }, + "nativeSrc": "23319:34:55", + "nodeType": "YulFunctionCall", + "src": "23319:34:55" + }, + "nativeSrc": "23319:34:55", + "nodeType": "YulExpressionStatement", + "src": "23319:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed", + "nativeSrc": "23077:282:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23175:9:55", + "nodeType": "YulTypedName", + "src": "23175:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "23186:6:55", + "nodeType": "YulTypedName", + "src": "23186:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23194:6:55", + "nodeType": "YulTypedName", + "src": "23194:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23205:4:55", + "nodeType": "YulTypedName", + "src": "23205:4:55", + "type": "" + } + ], + "src": "23077:282:55" + }, + { + "body": { + "nativeSrc": "23472:101:55", + "nodeType": "YulBlock", + "src": "23472:101:55", + "statements": [ + { + "nativeSrc": "23482:26:55", + "nodeType": "YulAssignment", + "src": "23482:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23494:9:55", + "nodeType": "YulIdentifier", + "src": "23494:9:55" + }, + { + "kind": "number", + "nativeSrc": "23505:2:55", + "nodeType": "YulLiteral", + "src": "23505:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23490:3:55", + "nodeType": "YulIdentifier", + "src": "23490:3:55" + }, + "nativeSrc": "23490:18:55", + "nodeType": "YulFunctionCall", + "src": "23490:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23482:4:55", + "nodeType": "YulIdentifier", + "src": "23482:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23524:9:55", + "nodeType": "YulIdentifier", + "src": "23524:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23539:6:55", + "nodeType": "YulIdentifier", + "src": "23539:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23555:2:55", + "nodeType": "YulLiteral", + "src": "23555:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "23559:1:55", + "nodeType": "YulLiteral", + "src": "23559:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23551:3:55", + "nodeType": "YulIdentifier", + "src": "23551:3:55" + }, + "nativeSrc": "23551:10:55", + "nodeType": "YulFunctionCall", + "src": "23551:10:55" + }, + { + "kind": "number", + "nativeSrc": "23563:1:55", + "nodeType": "YulLiteral", + "src": "23563:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23547:3:55", + "nodeType": "YulIdentifier", + "src": "23547:3:55" + }, + "nativeSrc": "23547:18:55", + "nodeType": "YulFunctionCall", + "src": "23547:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23535:3:55", + "nodeType": "YulIdentifier", + "src": "23535:3:55" + }, + "nativeSrc": "23535:31:55", + "nodeType": "YulFunctionCall", + "src": "23535:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23517:6:55", + "nodeType": "YulIdentifier", + "src": "23517:6:55" + }, + "nativeSrc": "23517:50:55", + "nodeType": "YulFunctionCall", + "src": "23517:50:55" + }, + "nativeSrc": "23517:50:55", + "nodeType": "YulExpressionStatement", + "src": "23517:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "23364:209:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23441:9:55", + "nodeType": "YulTypedName", + "src": "23441:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23452:6:55", + "nodeType": "YulTypedName", + "src": "23452:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23463:4:55", + "nodeType": "YulTypedName", + "src": "23463:4:55", + "type": "" + } + ], + "src": "23364:209:55" + }, + { + "body": { + "nativeSrc": "23875:447:55", + "nodeType": "YulBlock", + "src": "23875:447:55", + "statements": [ + { + "nativeSrc": "23885:27:55", + "nodeType": "YulAssignment", + "src": "23885:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23897:9:55", + "nodeType": "YulIdentifier", + "src": "23897:9:55" + }, + { + "kind": "number", + "nativeSrc": "23908:3:55", + "nodeType": "YulLiteral", + "src": "23908:3:55", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23893:3:55", + "nodeType": "YulIdentifier", + "src": "23893:3:55" + }, + "nativeSrc": "23893:19:55", + "nodeType": "YulFunctionCall", + "src": "23893:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23885:4:55", + "nodeType": "YulIdentifier", + "src": "23885:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23928:9:55", + "nodeType": "YulIdentifier", + "src": "23928:9:55" + }, + { + "name": "value0", + "nativeSrc": "23939:6:55", + "nodeType": "YulIdentifier", + "src": "23939:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23921:6:55", + "nodeType": "YulIdentifier", + "src": "23921:6:55" + }, + "nativeSrc": "23921:25:55", + "nodeType": "YulFunctionCall", + "src": "23921:25:55" + }, + "nativeSrc": "23921:25:55", + "nodeType": "YulExpressionStatement", + "src": "23921:25:55" + }, + { + "nativeSrc": "23955:29:55", + "nodeType": "YulVariableDeclaration", + "src": "23955:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23973:3:55", + "nodeType": "YulLiteral", + "src": "23973:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23978:1:55", + "nodeType": "YulLiteral", + "src": "23978:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23969:3:55", + "nodeType": "YulIdentifier", + "src": "23969:3:55" + }, + "nativeSrc": "23969:11:55", + "nodeType": "YulFunctionCall", + "src": "23969:11:55" + }, + { + "kind": "number", + "nativeSrc": "23982:1:55", + "nodeType": "YulLiteral", + "src": "23982:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23965:3:55", + "nodeType": "YulIdentifier", + "src": "23965:3:55" + }, + "nativeSrc": "23965:19:55", + "nodeType": "YulFunctionCall", + "src": "23965:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "23959:2:55", + "nodeType": "YulTypedName", + "src": "23959:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24004:9:55", + "nodeType": "YulIdentifier", + "src": "24004:9:55" + }, + { + "kind": "number", + "nativeSrc": "24015:2:55", + "nodeType": "YulLiteral", + "src": "24015:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24000:3:55", + "nodeType": "YulIdentifier", + "src": "24000:3:55" + }, + "nativeSrc": "24000:18:55", + "nodeType": "YulFunctionCall", + "src": "24000:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "24024:6:55", + "nodeType": "YulIdentifier", + "src": "24024:6:55" + }, + { + "name": "_1", + "nativeSrc": "24032:2:55", + "nodeType": "YulIdentifier", + "src": "24032:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24020:3:55", + "nodeType": "YulIdentifier", + "src": "24020:3:55" + }, + "nativeSrc": "24020:15:55", + "nodeType": "YulFunctionCall", + "src": "24020:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23993:6:55", + "nodeType": "YulIdentifier", + "src": "23993:6:55" + }, + "nativeSrc": "23993:43:55", + "nodeType": "YulFunctionCall", + "src": "23993:43:55" + }, + "nativeSrc": "23993:43:55", + "nodeType": "YulExpressionStatement", + "src": "23993:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24056:9:55", + "nodeType": "YulIdentifier", + "src": "24056:9:55" + }, + { + "kind": "number", + "nativeSrc": "24067:2:55", + "nodeType": "YulLiteral", + "src": "24067:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24052:3:55", + "nodeType": "YulIdentifier", + "src": "24052:3:55" + }, + "nativeSrc": "24052:18:55", + "nodeType": "YulFunctionCall", + "src": "24052:18:55" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "24076:6:55", + "nodeType": "YulIdentifier", + "src": "24076:6:55" + }, + { + "name": "_1", + "nativeSrc": "24084:2:55", + "nodeType": "YulIdentifier", + "src": "24084:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24072:3:55", + "nodeType": "YulIdentifier", + "src": "24072:3:55" + }, + "nativeSrc": "24072:15:55", + "nodeType": "YulFunctionCall", + "src": "24072:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24045:6:55", + "nodeType": "YulIdentifier", + "src": "24045:6:55" + }, + "nativeSrc": "24045:43:55", + "nodeType": "YulFunctionCall", + "src": "24045:43:55" + }, + "nativeSrc": "24045:43:55", + "nodeType": "YulExpressionStatement", + "src": "24045:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24108:9:55", + "nodeType": "YulIdentifier", + "src": "24108:9:55" + }, + { + "kind": "number", + "nativeSrc": "24119:2:55", + "nodeType": "YulLiteral", + "src": "24119:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24104:3:55", + "nodeType": "YulIdentifier", + "src": "24104:3:55" + }, + "nativeSrc": "24104:18:55", + "nodeType": "YulFunctionCall", + "src": "24104:18:55" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "24128:6:55", + "nodeType": "YulIdentifier", + "src": "24128:6:55" + }, + { + "name": "_1", + "nativeSrc": "24136:2:55", + "nodeType": "YulIdentifier", + "src": "24136:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24124:3:55", + "nodeType": "YulIdentifier", + "src": "24124:3:55" + }, + "nativeSrc": "24124:15:55", + "nodeType": "YulFunctionCall", + "src": "24124:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24097:6:55", + "nodeType": "YulIdentifier", + "src": "24097:6:55" + }, + "nativeSrc": "24097:43:55", + "nodeType": "YulFunctionCall", + "src": "24097:43:55" + }, + "nativeSrc": "24097:43:55", + "nodeType": "YulExpressionStatement", + "src": "24097:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24160:9:55", + "nodeType": "YulIdentifier", + "src": "24160:9:55" + }, + { + "kind": "number", + "nativeSrc": "24171:3:55", + "nodeType": "YulLiteral", + "src": "24171:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24156:3:55", + "nodeType": "YulIdentifier", + "src": "24156:3:55" + }, + "nativeSrc": "24156:19:55", + "nodeType": "YulFunctionCall", + "src": "24156:19:55" + }, + { + "name": "value4", + "nativeSrc": "24177:6:55", + "nodeType": "YulIdentifier", + "src": "24177:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24149:6:55", + "nodeType": "YulIdentifier", + "src": "24149:6:55" + }, + "nativeSrc": "24149:35:55", + "nodeType": "YulFunctionCall", + "src": "24149:35:55" + }, + "nativeSrc": "24149:35:55", + "nodeType": "YulExpressionStatement", + "src": "24149:35:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24204:9:55", + "nodeType": "YulIdentifier", + "src": "24204:9:55" + }, + { + "kind": "number", + "nativeSrc": "24215:3:55", + "nodeType": "YulLiteral", + "src": "24215:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24200:3:55", + "nodeType": "YulIdentifier", + "src": "24200:3:55" + }, + "nativeSrc": "24200:19:55", + "nodeType": "YulFunctionCall", + "src": "24200:19:55" + }, + { + "name": "value5", + "nativeSrc": "24221:6:55", + "nodeType": "YulIdentifier", + "src": "24221:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24193:6:55", + "nodeType": "YulIdentifier", + "src": "24193:6:55" + }, + "nativeSrc": "24193:35:55", + "nodeType": "YulFunctionCall", + "src": "24193:35:55" + }, + "nativeSrc": "24193:35:55", + "nodeType": "YulExpressionStatement", + "src": "24193:35:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24248:9:55", + "nodeType": "YulIdentifier", + "src": "24248:9:55" + }, + { + "kind": "number", + "nativeSrc": "24259:3:55", + "nodeType": "YulLiteral", + "src": "24259:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24244:3:55", + "nodeType": "YulIdentifier", + "src": "24244:3:55" + }, + "nativeSrc": "24244:19:55", + "nodeType": "YulFunctionCall", + "src": "24244:19:55" + }, + { + "name": "value6", + "nativeSrc": "24265:6:55", + "nodeType": "YulIdentifier", + "src": "24265:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24237:6:55", + "nodeType": "YulIdentifier", + "src": "24237:6:55" + }, + "nativeSrc": "24237:35:55", + "nodeType": "YulFunctionCall", + "src": "24237:35:55" + }, + "nativeSrc": "24237:35:55", + "nodeType": "YulExpressionStatement", + "src": "24237:35:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24292:9:55", + "nodeType": "YulIdentifier", + "src": "24292:9:55" + }, + { + "kind": "number", + "nativeSrc": "24303:3:55", + "nodeType": "YulLiteral", + "src": "24303:3:55", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24288:3:55", + "nodeType": "YulIdentifier", + "src": "24288:3:55" + }, + "nativeSrc": "24288:19:55", + "nodeType": "YulFunctionCall", + "src": "24288:19:55" + }, + { + "name": "value7", + "nativeSrc": "24309:6:55", + "nodeType": "YulIdentifier", + "src": "24309:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24281:6:55", + "nodeType": "YulIdentifier", + "src": "24281:6:55" + }, + "nativeSrc": "24281:35:55", + "nodeType": "YulFunctionCall", + "src": "24281:35:55" + }, + "nativeSrc": "24281:35:55", + "nodeType": "YulExpressionStatement", + "src": "24281:35:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "23578:744:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23788:9:55", + "nodeType": "YulTypedName", + "src": "23788:9:55", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "23799:6:55", + "nodeType": "YulTypedName", + "src": "23799:6:55", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "23807:6:55", + "nodeType": "YulTypedName", + "src": "23807:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "23815:6:55", + "nodeType": "YulTypedName", + "src": "23815:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "23823:6:55", + "nodeType": "YulTypedName", + "src": "23823:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "23831:6:55", + "nodeType": "YulTypedName", + "src": "23831:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "23839:6:55", + "nodeType": "YulTypedName", + "src": "23839:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "23847:6:55", + "nodeType": "YulTypedName", + "src": "23847:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23855:6:55", + "nodeType": "YulTypedName", + "src": "23855:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23866:4:55", + "nodeType": "YulTypedName", + "src": "23866:4:55", + "type": "" + } + ], + "src": "23578:744:55" + }, + { + "body": { + "nativeSrc": "24611:383:55", + "nodeType": "YulBlock", + "src": "24611:383:55", + "statements": [ + { + "nativeSrc": "24621:29:55", + "nodeType": "YulVariableDeclaration", + "src": "24621:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24639:3:55", + "nodeType": "YulLiteral", + "src": "24639:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "24644:1:55", + "nodeType": "YulLiteral", + "src": "24644:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "24635:3:55", + "nodeType": "YulIdentifier", + "src": "24635:3:55" + }, + "nativeSrc": "24635:11:55", + "nodeType": "YulFunctionCall", + "src": "24635:11:55" + }, + { + "kind": "number", + "nativeSrc": "24648:1:55", + "nodeType": "YulLiteral", + "src": "24648:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24631:3:55", + "nodeType": "YulIdentifier", + "src": "24631:3:55" + }, + "nativeSrc": "24631:19:55", + "nodeType": "YulFunctionCall", + "src": "24631:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "24625:2:55", + "nodeType": "YulTypedName", + "src": "24625:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24666:9:55", + "nodeType": "YulIdentifier", + "src": "24666:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "24681:6:55", + "nodeType": "YulIdentifier", + "src": "24681:6:55" + }, + { + "name": "_1", + "nativeSrc": "24689:2:55", + "nodeType": "YulIdentifier", + "src": "24689:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24677:3:55", + "nodeType": "YulIdentifier", + "src": "24677:3:55" + }, + "nativeSrc": "24677:15:55", + "nodeType": "YulFunctionCall", + "src": "24677:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24659:6:55", + "nodeType": "YulIdentifier", + "src": "24659:6:55" + }, + "nativeSrc": "24659:34:55", + "nodeType": "YulFunctionCall", + "src": "24659:34:55" + }, + "nativeSrc": "24659:34:55", + "nodeType": "YulExpressionStatement", + "src": "24659:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24713:9:55", + "nodeType": "YulIdentifier", + "src": "24713:9:55" + }, + { + "kind": "number", + "nativeSrc": "24724:2:55", + "nodeType": "YulLiteral", + "src": "24724:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24709:3:55", + "nodeType": "YulIdentifier", + "src": "24709:3:55" + }, + "nativeSrc": "24709:18:55", + "nodeType": "YulFunctionCall", + "src": "24709:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "24733:6:55", + "nodeType": "YulIdentifier", + "src": "24733:6:55" + }, + { + "name": "_1", + "nativeSrc": "24741:2:55", + "nodeType": "YulIdentifier", + "src": "24741:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24729:3:55", + "nodeType": "YulIdentifier", + "src": "24729:3:55" + }, + "nativeSrc": "24729:15:55", + "nodeType": "YulFunctionCall", + "src": "24729:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24702:6:55", + "nodeType": "YulIdentifier", + "src": "24702:6:55" + }, + "nativeSrc": "24702:43:55", + "nodeType": "YulFunctionCall", + "src": "24702:43:55" + }, + "nativeSrc": "24702:43:55", + "nodeType": "YulExpressionStatement", + "src": "24702:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24765:9:55", + "nodeType": "YulIdentifier", + "src": "24765:9:55" + }, + { + "kind": "number", + "nativeSrc": "24776:2:55", + "nodeType": "YulLiteral", + "src": "24776:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24761:3:55", + "nodeType": "YulIdentifier", + "src": "24761:3:55" + }, + "nativeSrc": "24761:18:55", + "nodeType": "YulFunctionCall", + "src": "24761:18:55" + }, + { + "kind": "number", + "nativeSrc": "24781:3:55", + "nodeType": "YulLiteral", + "src": "24781:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24754:6:55", + "nodeType": "YulIdentifier", + "src": "24754:6:55" + }, + "nativeSrc": "24754:31:55", + "nodeType": "YulFunctionCall", + "src": "24754:31:55" + }, + "nativeSrc": "24754:31:55", + "nodeType": "YulExpressionStatement", + "src": "24754:31:55" + }, + { + "nativeSrc": "24794:54:55", + "nodeType": "YulAssignment", + "src": "24794:54:55", + "value": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "24820:6:55", + "nodeType": "YulIdentifier", + "src": "24820:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24832:9:55", + "nodeType": "YulIdentifier", + "src": "24832:9:55" + }, + { + "kind": "number", + "nativeSrc": "24843:3:55", + "nodeType": "YulLiteral", + "src": "24843:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24828:3:55", + "nodeType": "YulIdentifier", + "src": "24828:3:55" + }, + "nativeSrc": "24828:19:55", + "nodeType": "YulFunctionCall", + "src": "24828:19:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "24802:17:55", + "nodeType": "YulIdentifier", + "src": "24802:17:55" + }, + "nativeSrc": "24802:46:55", + "nodeType": "YulFunctionCall", + "src": "24802:46:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "24794:4:55", + "nodeType": "YulIdentifier", + "src": "24794:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24868:9:55", + "nodeType": "YulIdentifier", + "src": "24868:9:55" + }, + { + "kind": "number", + "nativeSrc": "24879:2:55", + "nodeType": "YulLiteral", + "src": "24879:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24864:3:55", + "nodeType": "YulIdentifier", + "src": "24864:3:55" + }, + "nativeSrc": "24864:18:55", + "nodeType": "YulFunctionCall", + "src": "24864:18:55" + }, + { + "name": "value3", + "nativeSrc": "24884:6:55", + "nodeType": "YulIdentifier", + "src": "24884:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24857:6:55", + "nodeType": "YulIdentifier", + "src": "24857:6:55" + }, + "nativeSrc": "24857:34:55", + "nodeType": "YulFunctionCall", + "src": "24857:34:55" + }, + "nativeSrc": "24857:34:55", + "nodeType": "YulExpressionStatement", + "src": "24857:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24911:9:55", + "nodeType": "YulIdentifier", + "src": "24911:9:55" + }, + { + "kind": "number", + "nativeSrc": "24922:3:55", + "nodeType": "YulLiteral", + "src": "24922:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24907:3:55", + "nodeType": "YulIdentifier", + "src": "24907:3:55" + }, + "nativeSrc": "24907:19:55", + "nodeType": "YulFunctionCall", + "src": "24907:19:55" + }, + { + "name": "value4", + "nativeSrc": "24928:6:55", + "nodeType": "YulIdentifier", + "src": "24928:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24900:6:55", + "nodeType": "YulIdentifier", + "src": "24900:6:55" + }, + "nativeSrc": "24900:35:55", + "nodeType": "YulFunctionCall", + "src": "24900:35:55" + }, + "nativeSrc": "24900:35:55", + "nodeType": "YulExpressionStatement", + "src": "24900:35:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24955:9:55", + "nodeType": "YulIdentifier", + "src": "24955:9:55" + }, + { + "kind": "number", + "nativeSrc": "24966:3:55", + "nodeType": "YulLiteral", + "src": "24966:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24951:3:55", + "nodeType": "YulIdentifier", + "src": "24951:3:55" + }, + "nativeSrc": "24951:19:55", + "nodeType": "YulFunctionCall", + "src": "24951:19:55" + }, + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "24976:6:55", + "nodeType": "YulIdentifier", + "src": "24976:6:55" + }, + { + "name": "_1", + "nativeSrc": "24984:2:55", + "nodeType": "YulIdentifier", + "src": "24984:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24972:3:55", + "nodeType": "YulIdentifier", + "src": "24972:3:55" + }, + "nativeSrc": "24972:15:55", + "nodeType": "YulFunctionCall", + "src": "24972:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24944:6:55", + "nodeType": "YulIdentifier", + "src": "24944:6:55" + }, + "nativeSrc": "24944:44:55", + "nodeType": "YulFunctionCall", + "src": "24944:44:55" + }, + "nativeSrc": "24944:44:55", + "nodeType": "YulExpressionStatement", + "src": "24944:44:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed", + "nativeSrc": "24327:667:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "24540:9:55", + "nodeType": "YulTypedName", + "src": "24540:9:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "24551:6:55", + "nodeType": "YulTypedName", + "src": "24551:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "24559:6:55", + "nodeType": "YulTypedName", + "src": "24559:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "24567:6:55", + "nodeType": "YulTypedName", + "src": "24567:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "24575:6:55", + "nodeType": "YulTypedName", + "src": "24575:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "24583:6:55", + "nodeType": "YulTypedName", + "src": "24583:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "24591:6:55", + "nodeType": "YulTypedName", + "src": "24591:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "24602:4:55", + "nodeType": "YulTypedName", + "src": "24602:4:55", + "type": "" + } + ], + "src": "24327:667:55" + }, + { + "body": { + "nativeSrc": "25054:325:55", + "nodeType": "YulBlock", + "src": "25054:325:55", + "statements": [ + { + "nativeSrc": "25064:22:55", + "nodeType": "YulAssignment", + "src": "25064:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25078:1:55", + "nodeType": "YulLiteral", + "src": "25078:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "25081:4:55", + "nodeType": "YulIdentifier", + "src": "25081:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "25074:3:55", + "nodeType": "YulIdentifier", + "src": "25074:3:55" + }, + "nativeSrc": "25074:12:55", + "nodeType": "YulFunctionCall", + "src": "25074:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "25064:6:55", + "nodeType": "YulIdentifier", + "src": "25064:6:55" + } + ] + }, + { + "nativeSrc": "25095:38:55", + "nodeType": "YulVariableDeclaration", + "src": "25095:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "25125:4:55", + "nodeType": "YulIdentifier", + "src": "25125:4:55" + }, + { + "kind": "number", + "nativeSrc": "25131:1:55", + "nodeType": "YulLiteral", + "src": "25131:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25121:3:55", + "nodeType": "YulIdentifier", + "src": "25121:3:55" + }, + "nativeSrc": "25121:12:55", + "nodeType": "YulFunctionCall", + "src": "25121:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25099:18:55", + "nodeType": "YulTypedName", + "src": "25099:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25172:31:55", + "nodeType": "YulBlock", + "src": "25172:31:55", + "statements": [ + { + "nativeSrc": "25174:27:55", + "nodeType": "YulAssignment", + "src": "25174:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "25188:6:55", + "nodeType": "YulIdentifier", + "src": "25188:6:55" + }, + { + "kind": "number", + "nativeSrc": "25196:4:55", + "nodeType": "YulLiteral", + "src": "25196:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25184:3:55", + "nodeType": "YulIdentifier", + "src": "25184:3:55" + }, + "nativeSrc": "25184:17:55", + "nodeType": "YulFunctionCall", + "src": "25184:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "25174:6:55", + "nodeType": "YulIdentifier", + "src": "25174:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25152:18:55", + "nodeType": "YulIdentifier", + "src": "25152:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25145:6:55", + "nodeType": "YulIdentifier", + "src": "25145:6:55" + }, + "nativeSrc": "25145:26:55", + "nodeType": "YulFunctionCall", + "src": "25145:26:55" + }, + "nativeSrc": "25142:61:55", + "nodeType": "YulIf", + "src": "25142:61:55" + }, + { + "body": { + "nativeSrc": "25262:111:55", + "nodeType": "YulBlock", + "src": "25262:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25283:1:55", + "nodeType": "YulLiteral", + "src": "25283:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25290:3:55", + "nodeType": "YulLiteral", + "src": "25290:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "25295:10:55", + "nodeType": "YulLiteral", + "src": "25295:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25286:3:55", + "nodeType": "YulIdentifier", + "src": "25286:3:55" + }, + "nativeSrc": "25286:20:55", + "nodeType": "YulFunctionCall", + "src": "25286:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25276:6:55", + "nodeType": "YulIdentifier", + "src": "25276:6:55" + }, + "nativeSrc": "25276:31:55", + "nodeType": "YulFunctionCall", + "src": "25276:31:55" + }, + "nativeSrc": "25276:31:55", + "nodeType": "YulExpressionStatement", + "src": "25276:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25327:1:55", + "nodeType": "YulLiteral", + "src": "25327:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "25330:4:55", + "nodeType": "YulLiteral", + "src": "25330:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25320:6:55", + "nodeType": "YulIdentifier", + "src": "25320:6:55" + }, + "nativeSrc": "25320:15:55", + "nodeType": "YulFunctionCall", + "src": "25320:15:55" + }, + "nativeSrc": "25320:15:55", + "nodeType": "YulExpressionStatement", + "src": "25320:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25355:1:55", + "nodeType": "YulLiteral", + "src": "25355:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25358:4:55", + "nodeType": "YulLiteral", + "src": "25358:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25348:6:55", + "nodeType": "YulIdentifier", + "src": "25348:6:55" + }, + "nativeSrc": "25348:15:55", + "nodeType": "YulFunctionCall", + "src": "25348:15:55" + }, + "nativeSrc": "25348:15:55", + "nodeType": "YulExpressionStatement", + "src": "25348:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25218:18:55", + "nodeType": "YulIdentifier", + "src": "25218:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "25241:6:55", + "nodeType": "YulIdentifier", + "src": "25241:6:55" + }, + { + "kind": "number", + "nativeSrc": "25249:2:55", + "nodeType": "YulLiteral", + "src": "25249:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "25238:2:55", + "nodeType": "YulIdentifier", + "src": "25238:2:55" + }, + "nativeSrc": "25238:14:55", + "nodeType": "YulFunctionCall", + "src": "25238:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "25215:2:55", + "nodeType": "YulIdentifier", + "src": "25215:2:55" + }, + "nativeSrc": "25215:38:55", + "nodeType": "YulFunctionCall", + "src": "25215:38:55" + }, + "nativeSrc": "25212:161:55", + "nodeType": "YulIf", + "src": "25212:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "24999:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "25034:4:55", + "nodeType": "YulTypedName", + "src": "25034:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "25043:6:55", + "nodeType": "YulTypedName", + "src": "25043:6:55", + "type": "" + } + ], + "src": "24999:380:55" + }, + { + "body": { + "nativeSrc": "25465:103:55", + "nodeType": "YulBlock", + "src": "25465:103:55", + "statements": [ + { + "body": { + "nativeSrc": "25511:16:55", + "nodeType": "YulBlock", + "src": "25511:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25520:1:55", + "nodeType": "YulLiteral", + "src": "25520:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25523:1:55", + "nodeType": "YulLiteral", + "src": "25523:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25513:6:55", + "nodeType": "YulIdentifier", + "src": "25513:6:55" + }, + "nativeSrc": "25513:12:55", + "nodeType": "YulFunctionCall", + "src": "25513:12:55" + }, + "nativeSrc": "25513:12:55", + "nodeType": "YulExpressionStatement", + "src": "25513:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "25486:7:55", + "nodeType": "YulIdentifier", + "src": "25486:7:55" + }, + { + "name": "headStart", + "nativeSrc": "25495:9:55", + "nodeType": "YulIdentifier", + "src": "25495:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25482:3:55", + "nodeType": "YulIdentifier", + "src": "25482:3:55" + }, + "nativeSrc": "25482:23:55", + "nodeType": "YulFunctionCall", + "src": "25482:23:55" + }, + { + "kind": "number", + "nativeSrc": "25507:2:55", + "nodeType": "YulLiteral", + "src": "25507:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "25478:3:55", + "nodeType": "YulIdentifier", + "src": "25478:3:55" + }, + "nativeSrc": "25478:32:55", + "nodeType": "YulFunctionCall", + "src": "25478:32:55" + }, + "nativeSrc": "25475:52:55", + "nodeType": "YulIf", + "src": "25475:52:55" + }, + { + "nativeSrc": "25536:26:55", + "nodeType": "YulAssignment", + "src": "25536:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25552:9:55", + "nodeType": "YulIdentifier", + "src": "25552:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25546:5:55", + "nodeType": "YulIdentifier", + "src": "25546:5:55" + }, + "nativeSrc": "25546:16:55", + "nodeType": "YulFunctionCall", + "src": "25546:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "25536:6:55", + "nodeType": "YulIdentifier", + "src": "25536:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "25384:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "25431:9:55", + "nodeType": "YulTypedName", + "src": "25431:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "25442:7:55", + "nodeType": "YulTypedName", + "src": "25442:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "25454:6:55", + "nodeType": "YulTypedName", + "src": "25454:6:55", + "type": "" + } + ], + "src": "25384:184:55" + }, + { + "body": { + "nativeSrc": "25625:116:55", + "nodeType": "YulBlock", + "src": "25625:116:55", + "statements": [ + { + "nativeSrc": "25635:20:55", + "nodeType": "YulAssignment", + "src": "25635:20:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "25650:1:55", + "nodeType": "YulIdentifier", + "src": "25650:1:55" + }, + { + "name": "y", + "nativeSrc": "25653:1:55", + "nodeType": "YulIdentifier", + "src": "25653:1:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "25646:3:55", + "nodeType": "YulIdentifier", + "src": "25646:3:55" + }, + "nativeSrc": "25646:9:55", + "nodeType": "YulFunctionCall", + "src": "25646:9:55" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "25635:7:55", + "nodeType": "YulIdentifier", + "src": "25635:7:55" + } + ] + }, + { + "body": { + "nativeSrc": "25713:22:55", + "nodeType": "YulBlock", + "src": "25713:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "25715:16:55", + "nodeType": "YulIdentifier", + "src": "25715:16:55" + }, + "nativeSrc": "25715:18:55", + "nodeType": "YulFunctionCall", + "src": "25715:18:55" + }, + "nativeSrc": "25715:18:55", + "nodeType": "YulExpressionStatement", + "src": "25715:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "25684:1:55", + "nodeType": "YulIdentifier", + "src": "25684:1:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25677:6:55", + "nodeType": "YulIdentifier", + "src": "25677:6:55" + }, + "nativeSrc": "25677:9:55", + "nodeType": "YulFunctionCall", + "src": "25677:9:55" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "25691:1:55", + "nodeType": "YulIdentifier", + "src": "25691:1:55" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "25698:7:55", + "nodeType": "YulIdentifier", + "src": "25698:7:55" + }, + { + "name": "x", + "nativeSrc": "25707:1:55", + "nodeType": "YulIdentifier", + "src": "25707:1:55" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "25694:3:55", + "nodeType": "YulIdentifier", + "src": "25694:3:55" + }, + "nativeSrc": "25694:15:55", + "nodeType": "YulFunctionCall", + "src": "25694:15:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "25688:2:55", + "nodeType": "YulIdentifier", + "src": "25688:2:55" + }, + "nativeSrc": "25688:22:55", + "nodeType": "YulFunctionCall", + "src": "25688:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "25674:2:55", + "nodeType": "YulIdentifier", + "src": "25674:2:55" + }, + "nativeSrc": "25674:37:55", + "nodeType": "YulFunctionCall", + "src": "25674:37:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25667:6:55", + "nodeType": "YulIdentifier", + "src": "25667:6:55" + }, + "nativeSrc": "25667:45:55", + "nodeType": "YulFunctionCall", + "src": "25667:45:55" + }, + "nativeSrc": "25664:71:55", + "nodeType": "YulIf", + "src": "25664:71:55" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "25573:168:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25604:1:55", + "nodeType": "YulTypedName", + "src": "25604:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25607:1:55", + "nodeType": "YulTypedName", + "src": "25607:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "25613:7:55", + "nodeType": "YulTypedName", + "src": "25613:7:55", + "type": "" + } + ], + "src": "25573:168:55" + }, + { + "body": { + "nativeSrc": "25792:171:55", + "nodeType": "YulBlock", + "src": "25792:171:55", + "statements": [ + { + "body": { + "nativeSrc": "25823:111:55", + "nodeType": "YulBlock", + "src": "25823:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25844:1:55", + "nodeType": "YulLiteral", + "src": "25844:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25851:3:55", + "nodeType": "YulLiteral", + "src": "25851:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "25856:10:55", + "nodeType": "YulLiteral", + "src": "25856:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25847:3:55", + "nodeType": "YulIdentifier", + "src": "25847:3:55" + }, + "nativeSrc": "25847:20:55", + "nodeType": "YulFunctionCall", + "src": "25847:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25837:6:55", + "nodeType": "YulIdentifier", + "src": "25837:6:55" + }, + "nativeSrc": "25837:31:55", + "nodeType": "YulFunctionCall", + "src": "25837:31:55" + }, + "nativeSrc": "25837:31:55", + "nodeType": "YulExpressionStatement", + "src": "25837:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25888:1:55", + "nodeType": "YulLiteral", + "src": "25888:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "25891:4:55", + "nodeType": "YulLiteral", + "src": "25891:4:55", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25881:6:55", + "nodeType": "YulIdentifier", + "src": "25881:6:55" + }, + "nativeSrc": "25881:15:55", + "nodeType": "YulFunctionCall", + "src": "25881:15:55" + }, + "nativeSrc": "25881:15:55", + "nodeType": "YulExpressionStatement", + "src": "25881:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25916:1:55", + "nodeType": "YulLiteral", + "src": "25916:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25919:4:55", + "nodeType": "YulLiteral", + "src": "25919:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25909:6:55", + "nodeType": "YulIdentifier", + "src": "25909:6:55" + }, + "nativeSrc": "25909:15:55", + "nodeType": "YulFunctionCall", + "src": "25909:15:55" + }, + "nativeSrc": "25909:15:55", + "nodeType": "YulExpressionStatement", + "src": "25909:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nativeSrc": "25812:1:55", + "nodeType": "YulIdentifier", + "src": "25812:1:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25805:6:55", + "nodeType": "YulIdentifier", + "src": "25805:6:55" + }, + "nativeSrc": "25805:9:55", + "nodeType": "YulFunctionCall", + "src": "25805:9:55" + }, + "nativeSrc": "25802:132:55", + "nodeType": "YulIf", + "src": "25802:132:55" + }, + { + "nativeSrc": "25943:14:55", + "nodeType": "YulAssignment", + "src": "25943:14:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "25952:1:55", + "nodeType": "YulIdentifier", + "src": "25952:1:55" + }, + { + "name": "y", + "nativeSrc": "25955:1:55", + "nodeType": "YulIdentifier", + "src": "25955:1:55" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "25948:3:55", + "nodeType": "YulIdentifier", + "src": "25948:3:55" + }, + "nativeSrc": "25948:9:55", + "nodeType": "YulFunctionCall", + "src": "25948:9:55" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "25943:1:55", + "nodeType": "YulIdentifier", + "src": "25943:1:55" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nativeSrc": "25746:217:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25777:1:55", + "nodeType": "YulTypedName", + "src": "25777:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25780:1:55", + "nodeType": "YulTypedName", + "src": "25780:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nativeSrc": "25786:1:55", + "nodeType": "YulTypedName", + "src": "25786:1:55", + "type": "" + } + ], + "src": "25746:217:55" + }, + { + "body": { + "nativeSrc": "26016:77:55", + "nodeType": "YulBlock", + "src": "26016:77:55", + "statements": [ + { + "nativeSrc": "26026:16:55", + "nodeType": "YulAssignment", + "src": "26026:16:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "26037:1:55", + "nodeType": "YulIdentifier", + "src": "26037:1:55" + }, + { + "name": "y", + "nativeSrc": "26040:1:55", + "nodeType": "YulIdentifier", + "src": "26040:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26033:3:55", + "nodeType": "YulIdentifier", + "src": "26033:3:55" + }, + "nativeSrc": "26033:9:55", + "nodeType": "YulFunctionCall", + "src": "26033:9:55" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "26026:3:55", + "nodeType": "YulIdentifier", + "src": "26026:3:55" + } + ] + }, + { + "body": { + "nativeSrc": "26065:22:55", + "nodeType": "YulBlock", + "src": "26065:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "26067:16:55", + "nodeType": "YulIdentifier", + "src": "26067:16:55" + }, + "nativeSrc": "26067:18:55", + "nodeType": "YulFunctionCall", + "src": "26067:18:55" + }, + "nativeSrc": "26067:18:55", + "nodeType": "YulExpressionStatement", + "src": "26067:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "26057:1:55", + "nodeType": "YulIdentifier", + "src": "26057:1:55" + }, + { + "name": "sum", + "nativeSrc": "26060:3:55", + "nodeType": "YulIdentifier", + "src": "26060:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "26054:2:55", + "nodeType": "YulIdentifier", + "src": "26054:2:55" + }, + "nativeSrc": "26054:10:55", + "nodeType": "YulFunctionCall", + "src": "26054:10:55" + }, + "nativeSrc": "26051:36:55", + "nodeType": "YulIf", + "src": "26051:36:55" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "25968:125:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25999:1:55", + "nodeType": "YulTypedName", + "src": "25999:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "26002:1:55", + "nodeType": "YulTypedName", + "src": "26002:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "26008:3:55", + "nodeType": "YulTypedName", + "src": "26008:3:55", + "type": "" + } + ], + "src": "25968:125:55" + }, + { + "body": { + "nativeSrc": "26179:170:55", + "nodeType": "YulBlock", + "src": "26179:170:55", + "statements": [ + { + "body": { + "nativeSrc": "26225:16:55", + "nodeType": "YulBlock", + "src": "26225:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26234:1:55", + "nodeType": "YulLiteral", + "src": "26234:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "26237:1:55", + "nodeType": "YulLiteral", + "src": "26237:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "26227:6:55", + "nodeType": "YulIdentifier", + "src": "26227:6:55" + }, + "nativeSrc": "26227:12:55", + "nodeType": "YulFunctionCall", + "src": "26227:12:55" + }, + "nativeSrc": "26227:12:55", + "nodeType": "YulExpressionStatement", + "src": "26227:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "26200:7:55", + "nodeType": "YulIdentifier", + "src": "26200:7:55" + }, + { + "name": "headStart", + "nativeSrc": "26209:9:55", + "nodeType": "YulIdentifier", + "src": "26209:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "26196:3:55", + "nodeType": "YulIdentifier", + "src": "26196:3:55" + }, + "nativeSrc": "26196:23:55", + "nodeType": "YulFunctionCall", + "src": "26196:23:55" + }, + { + "kind": "number", + "nativeSrc": "26221:2:55", + "nodeType": "YulLiteral", + "src": "26221:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "26192:3:55", + "nodeType": "YulIdentifier", + "src": "26192:3:55" + }, + "nativeSrc": "26192:32:55", + "nodeType": "YulFunctionCall", + "src": "26192:32:55" + }, + "nativeSrc": "26189:52:55", + "nodeType": "YulIf", + "src": "26189:52:55" + }, + { + "nativeSrc": "26250:29:55", + "nodeType": "YulVariableDeclaration", + "src": "26250:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26269:9:55", + "nodeType": "YulIdentifier", + "src": "26269:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26263:5:55", + "nodeType": "YulIdentifier", + "src": "26263:5:55" + }, + "nativeSrc": "26263:16:55", + "nodeType": "YulFunctionCall", + "src": "26263:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "26254:5:55", + "nodeType": "YulTypedName", + "src": "26254:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "26313:5:55", + "nodeType": "YulIdentifier", + "src": "26313:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "26288:24:55", + "nodeType": "YulIdentifier", + "src": "26288:24:55" + }, + "nativeSrc": "26288:31:55", + "nodeType": "YulFunctionCall", + "src": "26288:31:55" + }, + "nativeSrc": "26288:31:55", + "nodeType": "YulExpressionStatement", + "src": "26288:31:55" + }, + { + "nativeSrc": "26328:15:55", + "nodeType": "YulAssignment", + "src": "26328:15:55", + "value": { + "name": "value", + "nativeSrc": "26338:5:55", + "nodeType": "YulIdentifier", + "src": "26338:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "26328:6:55", + "nodeType": "YulIdentifier", + "src": "26328:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nativeSrc": "26098:251:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "26145:9:55", + "nodeType": "YulTypedName", + "src": "26145:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "26156:7:55", + "nodeType": "YulTypedName", + "src": "26156:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "26168:6:55", + "nodeType": "YulTypedName", + "src": "26168:6:55", + "type": "" + } + ], + "src": "26098:251:55" + }, + { + "body": { + "nativeSrc": "26511:162:55", + "nodeType": "YulBlock", + "src": "26511:162:55", + "statements": [ + { + "nativeSrc": "26521:26:55", + "nodeType": "YulAssignment", + "src": "26521:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26533:9:55", + "nodeType": "YulIdentifier", + "src": "26533:9:55" + }, + { + "kind": "number", + "nativeSrc": "26544:2:55", + "nodeType": "YulLiteral", + "src": "26544:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26529:3:55", + "nodeType": "YulIdentifier", + "src": "26529:3:55" + }, + "nativeSrc": "26529:18:55", + "nodeType": "YulFunctionCall", + "src": "26529:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "26521:4:55", + "nodeType": "YulIdentifier", + "src": "26521:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26563:9:55", + "nodeType": "YulIdentifier", + "src": "26563:9:55" + }, + { + "name": "value0", + "nativeSrc": "26574:6:55", + "nodeType": "YulIdentifier", + "src": "26574:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26556:6:55", + "nodeType": "YulIdentifier", + "src": "26556:6:55" + }, + "nativeSrc": "26556:25:55", + "nodeType": "YulFunctionCall", + "src": "26556:25:55" + }, + "nativeSrc": "26556:25:55", + "nodeType": "YulExpressionStatement", + "src": "26556:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26601:9:55", + "nodeType": "YulIdentifier", + "src": "26601:9:55" + }, + { + "kind": "number", + "nativeSrc": "26612:2:55", + "nodeType": "YulLiteral", + "src": "26612:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26597:3:55", + "nodeType": "YulIdentifier", + "src": "26597:3:55" + }, + "nativeSrc": "26597:18:55", + "nodeType": "YulFunctionCall", + "src": "26597:18:55" + }, + { + "name": "value1", + "nativeSrc": "26617:6:55", + "nodeType": "YulIdentifier", + "src": "26617:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26590:6:55", + "nodeType": "YulIdentifier", + "src": "26590:6:55" + }, + "nativeSrc": "26590:34:55", + "nodeType": "YulFunctionCall", + "src": "26590:34:55" + }, + "nativeSrc": "26590:34:55", + "nodeType": "YulExpressionStatement", + "src": "26590:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26644:9:55", + "nodeType": "YulIdentifier", + "src": "26644:9:55" + }, + { + "kind": "number", + "nativeSrc": "26655:2:55", + "nodeType": "YulLiteral", + "src": "26655:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26640:3:55", + "nodeType": "YulIdentifier", + "src": "26640:3:55" + }, + "nativeSrc": "26640:18:55", + "nodeType": "YulFunctionCall", + "src": "26640:18:55" + }, + { + "name": "value2", + "nativeSrc": "26660:6:55", + "nodeType": "YulIdentifier", + "src": "26660:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26633:6:55", + "nodeType": "YulIdentifier", + "src": "26633:6:55" + }, + "nativeSrc": "26633:34:55", + "nodeType": "YulFunctionCall", + "src": "26633:34:55" + }, + "nativeSrc": "26633:34:55", + "nodeType": "YulExpressionStatement", + "src": "26633:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "26354:319:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "26464:9:55", + "nodeType": "YulTypedName", + "src": "26464:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "26475:6:55", + "nodeType": "YulTypedName", + "src": "26475:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "26483:6:55", + "nodeType": "YulTypedName", + "src": "26483:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "26491:6:55", + "nodeType": "YulTypedName", + "src": "26491:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "26502:4:55", + "nodeType": "YulTypedName", + "src": "26502:4:55", + "type": "" + } + ], + "src": "26354:319:55" + }, + { + "body": { + "nativeSrc": "26926:144:55", + "nodeType": "YulBlock", + "src": "26926:144:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "26943:3:55", + "nodeType": "YulIdentifier", + "src": "26943:3:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26952:3:55", + "nodeType": "YulLiteral", + "src": "26952:3:55", + "type": "", + "value": "240" + }, + { + "kind": "number", + "nativeSrc": "26957:4:55", + "nodeType": "YulLiteral", + "src": "26957:4:55", + "type": "", + "value": "6401" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26948:3:55", + "nodeType": "YulIdentifier", + "src": "26948:3:55" + }, + "nativeSrc": "26948:14:55", + "nodeType": "YulFunctionCall", + "src": "26948:14:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26936:6:55", + "nodeType": "YulIdentifier", + "src": "26936:6:55" + }, + "nativeSrc": "26936:27:55", + "nodeType": "YulFunctionCall", + "src": "26936:27:55" + }, + "nativeSrc": "26936:27:55", + "nodeType": "YulExpressionStatement", + "src": "26936:27:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "26983:3:55", + "nodeType": "YulIdentifier", + "src": "26983:3:55" + }, + { + "kind": "number", + "nativeSrc": "26988:1:55", + "nodeType": "YulLiteral", + "src": "26988:1:55", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26979:3:55", + "nodeType": "YulIdentifier", + "src": "26979:3:55" + }, + "nativeSrc": "26979:11:55", + "nodeType": "YulFunctionCall", + "src": "26979:11:55" + }, + { + "name": "value0", + "nativeSrc": "26992:6:55", + "nodeType": "YulIdentifier", + "src": "26992:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26972:6:55", + "nodeType": "YulIdentifier", + "src": "26972:6:55" + }, + "nativeSrc": "26972:27:55", + "nodeType": "YulFunctionCall", + "src": "26972:27:55" + }, + "nativeSrc": "26972:27:55", + "nodeType": "YulExpressionStatement", + "src": "26972:27:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27019:3:55", + "nodeType": "YulIdentifier", + "src": "27019:3:55" + }, + { + "kind": "number", + "nativeSrc": "27024:2:55", + "nodeType": "YulLiteral", + "src": "27024:2:55", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27015:3:55", + "nodeType": "YulIdentifier", + "src": "27015:3:55" + }, + "nativeSrc": "27015:12:55", + "nodeType": "YulFunctionCall", + "src": "27015:12:55" + }, + { + "name": "value1", + "nativeSrc": "27029:6:55", + "nodeType": "YulIdentifier", + "src": "27029:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27008:6:55", + "nodeType": "YulIdentifier", + "src": "27008:6:55" + }, + "nativeSrc": "27008:28:55", + "nodeType": "YulFunctionCall", + "src": "27008:28:55" + }, + "nativeSrc": "27008:28:55", + "nodeType": "YulExpressionStatement", + "src": "27008:28:55" + }, + { + "nativeSrc": "27045:19:55", + "nodeType": "YulAssignment", + "src": "27045:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27056:3:55", + "nodeType": "YulIdentifier", + "src": "27056:3:55" + }, + { + "kind": "number", + "nativeSrc": "27061:2:55", + "nodeType": "YulLiteral", + "src": "27061:2:55", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27052:3:55", + "nodeType": "YulIdentifier", + "src": "27052:3:55" + }, + "nativeSrc": "27052:12:55", + "nodeType": "YulFunctionCall", + "src": "27052:12:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "27045:3:55", + "nodeType": "YulIdentifier", + "src": "27045:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "26678:392:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "26894:3:55", + "nodeType": "YulTypedName", + "src": "26894:3:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "26899:6:55", + "nodeType": "YulTypedName", + "src": "26899:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "26907:6:55", + "nodeType": "YulTypedName", + "src": "26907:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "26918:3:55", + "nodeType": "YulTypedName", + "src": "26918:3:55", + "type": "" + } + ], + "src": "26678:392:55" + }, + { + "body": { + "nativeSrc": "27156:103:55", + "nodeType": "YulBlock", + "src": "27156:103:55", + "statements": [ + { + "body": { + "nativeSrc": "27202:16:55", + "nodeType": "YulBlock", + "src": "27202:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27211:1:55", + "nodeType": "YulLiteral", + "src": "27211:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27214:1:55", + "nodeType": "YulLiteral", + "src": "27214:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27204:6:55", + "nodeType": "YulIdentifier", + "src": "27204:6:55" + }, + "nativeSrc": "27204:12:55", + "nodeType": "YulFunctionCall", + "src": "27204:12:55" + }, + "nativeSrc": "27204:12:55", + "nodeType": "YulExpressionStatement", + "src": "27204:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "27177:7:55", + "nodeType": "YulIdentifier", + "src": "27177:7:55" + }, + { + "name": "headStart", + "nativeSrc": "27186:9:55", + "nodeType": "YulIdentifier", + "src": "27186:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "27173:3:55", + "nodeType": "YulIdentifier", + "src": "27173:3:55" + }, + "nativeSrc": "27173:23:55", + "nodeType": "YulFunctionCall", + "src": "27173:23:55" + }, + { + "kind": "number", + "nativeSrc": "27198:2:55", + "nodeType": "YulLiteral", + "src": "27198:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "27169:3:55", + "nodeType": "YulIdentifier", + "src": "27169:3:55" + }, + "nativeSrc": "27169:32:55", + "nodeType": "YulFunctionCall", + "src": "27169:32:55" + }, + "nativeSrc": "27166:52:55", + "nodeType": "YulIf", + "src": "27166:52:55" + }, + { + "nativeSrc": "27227:26:55", + "nodeType": "YulAssignment", + "src": "27227:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27243:9:55", + "nodeType": "YulIdentifier", + "src": "27243:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27237:5:55", + "nodeType": "YulIdentifier", + "src": "27237:5:55" + }, + "nativeSrc": "27237:16:55", + "nodeType": "YulFunctionCall", + "src": "27237:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "27227:6:55", + "nodeType": "YulIdentifier", + "src": "27227:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "27075:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27122:9:55", + "nodeType": "YulTypedName", + "src": "27122:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "27133:7:55", + "nodeType": "YulTypedName", + "src": "27133:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "27145:6:55", + "nodeType": "YulTypedName", + "src": "27145:6:55", + "type": "" + } + ], + "src": "27075:184:55" + }, + { + "body": { + "nativeSrc": "27449:206:55", + "nodeType": "YulBlock", + "src": "27449:206:55", + "statements": [ + { + "nativeSrc": "27459:27:55", + "nodeType": "YulAssignment", + "src": "27459:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27471:9:55", + "nodeType": "YulIdentifier", + "src": "27471:9:55" + }, + { + "kind": "number", + "nativeSrc": "27482:3:55", + "nodeType": "YulLiteral", + "src": "27482:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27467:3:55", + "nodeType": "YulIdentifier", + "src": "27467:3:55" + }, + "nativeSrc": "27467:19:55", + "nodeType": "YulFunctionCall", + "src": "27467:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "27459:4:55", + "nodeType": "YulIdentifier", + "src": "27459:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27502:9:55", + "nodeType": "YulIdentifier", + "src": "27502:9:55" + }, + { + "name": "value0", + "nativeSrc": "27513:6:55", + "nodeType": "YulIdentifier", + "src": "27513:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27495:6:55", + "nodeType": "YulIdentifier", + "src": "27495:6:55" + }, + "nativeSrc": "27495:25:55", + "nodeType": "YulFunctionCall", + "src": "27495:25:55" + }, + "nativeSrc": "27495:25:55", + "nodeType": "YulExpressionStatement", + "src": "27495:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27540:9:55", + "nodeType": "YulIdentifier", + "src": "27540:9:55" + }, + { + "kind": "number", + "nativeSrc": "27551:2:55", + "nodeType": "YulLiteral", + "src": "27551:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27536:3:55", + "nodeType": "YulIdentifier", + "src": "27536:3:55" + }, + "nativeSrc": "27536:18:55", + "nodeType": "YulFunctionCall", + "src": "27536:18:55" + }, + { + "name": "value1", + "nativeSrc": "27556:6:55", + "nodeType": "YulIdentifier", + "src": "27556:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27529:6:55", + "nodeType": "YulIdentifier", + "src": "27529:6:55" + }, + "nativeSrc": "27529:34:55", + "nodeType": "YulFunctionCall", + "src": "27529:34:55" + }, + "nativeSrc": "27529:34:55", + "nodeType": "YulExpressionStatement", + "src": "27529:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27583:9:55", + "nodeType": "YulIdentifier", + "src": "27583:9:55" + }, + { + "kind": "number", + "nativeSrc": "27594:2:55", + "nodeType": "YulLiteral", + "src": "27594:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27579:3:55", + "nodeType": "YulIdentifier", + "src": "27579:3:55" + }, + "nativeSrc": "27579:18:55", + "nodeType": "YulFunctionCall", + "src": "27579:18:55" + }, + { + "name": "value2", + "nativeSrc": "27599:6:55", + "nodeType": "YulIdentifier", + "src": "27599:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27572:6:55", + "nodeType": "YulIdentifier", + "src": "27572:6:55" + }, + "nativeSrc": "27572:34:55", + "nodeType": "YulFunctionCall", + "src": "27572:34:55" + }, + "nativeSrc": "27572:34:55", + "nodeType": "YulExpressionStatement", + "src": "27572:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27626:9:55", + "nodeType": "YulIdentifier", + "src": "27626:9:55" + }, + { + "kind": "number", + "nativeSrc": "27637:2:55", + "nodeType": "YulLiteral", + "src": "27637:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27622:3:55", + "nodeType": "YulIdentifier", + "src": "27622:3:55" + }, + "nativeSrc": "27622:18:55", + "nodeType": "YulFunctionCall", + "src": "27622:18:55" + }, + { + "name": "value3", + "nativeSrc": "27642:6:55", + "nodeType": "YulIdentifier", + "src": "27642:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27615:6:55", + "nodeType": "YulIdentifier", + "src": "27615:6:55" + }, + "nativeSrc": "27615:34:55", + "nodeType": "YulFunctionCall", + "src": "27615:34:55" + }, + "nativeSrc": "27615:34:55", + "nodeType": "YulExpressionStatement", + "src": "27615:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed", + "nativeSrc": "27264:391:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27394:9:55", + "nodeType": "YulTypedName", + "src": "27394:9:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "27405:6:55", + "nodeType": "YulTypedName", + "src": "27405:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "27413:6:55", + "nodeType": "YulTypedName", + "src": "27413:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "27421:6:55", + "nodeType": "YulTypedName", + "src": "27421:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "27429:6:55", + "nodeType": "YulTypedName", + "src": "27429:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "27440:4:55", + "nodeType": "YulTypedName", + "src": "27440:4:55", + "type": "" + } + ], + "src": "27264:391:55" + }, + { + "body": { + "nativeSrc": "27789:119:55", + "nodeType": "YulBlock", + "src": "27789:119:55", + "statements": [ + { + "nativeSrc": "27799:26:55", + "nodeType": "YulAssignment", + "src": "27799:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27811:9:55", + "nodeType": "YulIdentifier", + "src": "27811:9:55" + }, + { + "kind": "number", + "nativeSrc": "27822:2:55", + "nodeType": "YulLiteral", + "src": "27822:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27807:3:55", + "nodeType": "YulIdentifier", + "src": "27807:3:55" + }, + "nativeSrc": "27807:18:55", + "nodeType": "YulFunctionCall", + "src": "27807:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "27799:4:55", + "nodeType": "YulIdentifier", + "src": "27799:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27841:9:55", + "nodeType": "YulIdentifier", + "src": "27841:9:55" + }, + { + "name": "value0", + "nativeSrc": "27852:6:55", + "nodeType": "YulIdentifier", + "src": "27852:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27834:6:55", + "nodeType": "YulIdentifier", + "src": "27834:6:55" + }, + "nativeSrc": "27834:25:55", + "nodeType": "YulFunctionCall", + "src": "27834:25:55" + }, + "nativeSrc": "27834:25:55", + "nodeType": "YulExpressionStatement", + "src": "27834:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27879:9:55", + "nodeType": "YulIdentifier", + "src": "27879:9:55" + }, + { + "kind": "number", + "nativeSrc": "27890:2:55", + "nodeType": "YulLiteral", + "src": "27890:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27875:3:55", + "nodeType": "YulIdentifier", + "src": "27875:3:55" + }, + "nativeSrc": "27875:18:55", + "nodeType": "YulFunctionCall", + "src": "27875:18:55" + }, + { + "name": "value1", + "nativeSrc": "27895:6:55", + "nodeType": "YulIdentifier", + "src": "27895:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27868:6:55", + "nodeType": "YulIdentifier", + "src": "27868:6:55" + }, + "nativeSrc": "27868:34:55", + "nodeType": "YulFunctionCall", + "src": "27868:34:55" + }, + "nativeSrc": "27868:34:55", + "nodeType": "YulExpressionStatement", + "src": "27868:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed", + "nativeSrc": "27660:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27750:9:55", + "nodeType": "YulTypedName", + "src": "27750:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "27761:6:55", + "nodeType": "YulTypedName", + "src": "27761:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "27769:6:55", + "nodeType": "YulTypedName", + "src": "27769:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "27780:4:55", + "nodeType": "YulTypedName", + "src": "27780:4:55", + "type": "" + } + ], + "src": "27660:248:55" + }, + { + "body": { + "nativeSrc": "28042:175:55", + "nodeType": "YulBlock", + "src": "28042:175:55", + "statements": [ + { + "nativeSrc": "28052:26:55", + "nodeType": "YulAssignment", + "src": "28052:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28064:9:55", + "nodeType": "YulIdentifier", + "src": "28064:9:55" + }, + { + "kind": "number", + "nativeSrc": "28075:2:55", + "nodeType": "YulLiteral", + "src": "28075:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28060:3:55", + "nodeType": "YulIdentifier", + "src": "28060:3:55" + }, + "nativeSrc": "28060:18:55", + "nodeType": "YulFunctionCall", + "src": "28060:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28052:4:55", + "nodeType": "YulIdentifier", + "src": "28052:4:55" + } + ] + }, + { + "nativeSrc": "28087:29:55", + "nodeType": "YulVariableDeclaration", + "src": "28087:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28105:3:55", + "nodeType": "YulLiteral", + "src": "28105:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "28110:1:55", + "nodeType": "YulLiteral", + "src": "28110:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28101:3:55", + "nodeType": "YulIdentifier", + "src": "28101:3:55" + }, + "nativeSrc": "28101:11:55", + "nodeType": "YulFunctionCall", + "src": "28101:11:55" + }, + { + "kind": "number", + "nativeSrc": "28114:1:55", + "nodeType": "YulLiteral", + "src": "28114:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28097:3:55", + "nodeType": "YulIdentifier", + "src": "28097:3:55" + }, + "nativeSrc": "28097:19:55", + "nodeType": "YulFunctionCall", + "src": "28097:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "28091:2:55", + "nodeType": "YulTypedName", + "src": "28091:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28132:9:55", + "nodeType": "YulIdentifier", + "src": "28132:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "28147:6:55", + "nodeType": "YulIdentifier", + "src": "28147:6:55" + }, + { + "name": "_1", + "nativeSrc": "28155:2:55", + "nodeType": "YulIdentifier", + "src": "28155:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28143:3:55", + "nodeType": "YulIdentifier", + "src": "28143:3:55" + }, + "nativeSrc": "28143:15:55", + "nodeType": "YulFunctionCall", + "src": "28143:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28125:6:55", + "nodeType": "YulIdentifier", + "src": "28125:6:55" + }, + "nativeSrc": "28125:34:55", + "nodeType": "YulFunctionCall", + "src": "28125:34:55" + }, + "nativeSrc": "28125:34:55", + "nodeType": "YulExpressionStatement", + "src": "28125:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28179:9:55", + "nodeType": "YulIdentifier", + "src": "28179:9:55" + }, + { + "kind": "number", + "nativeSrc": "28190:2:55", + "nodeType": "YulLiteral", + "src": "28190:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28175:3:55", + "nodeType": "YulIdentifier", + "src": "28175:3:55" + }, + "nativeSrc": "28175:18:55", + "nodeType": "YulFunctionCall", + "src": "28175:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "28199:6:55", + "nodeType": "YulIdentifier", + "src": "28199:6:55" + }, + { + "name": "_1", + "nativeSrc": "28207:2:55", + "nodeType": "YulIdentifier", + "src": "28207:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28195:3:55", + "nodeType": "YulIdentifier", + "src": "28195:3:55" + }, + "nativeSrc": "28195:15:55", + "nodeType": "YulFunctionCall", + "src": "28195:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28168:6:55", + "nodeType": "YulIdentifier", + "src": "28168:6:55" + }, + "nativeSrc": "28168:43:55", + "nodeType": "YulFunctionCall", + "src": "28168:43:55" + }, + "nativeSrc": "28168:43:55", + "nodeType": "YulExpressionStatement", + "src": "28168:43:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nativeSrc": "27913:304:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28003:9:55", + "nodeType": "YulTypedName", + "src": "28003:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28014:6:55", + "nodeType": "YulTypedName", + "src": "28014:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28022:6:55", + "nodeType": "YulTypedName", + "src": "28022:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28033:4:55", + "nodeType": "YulTypedName", + "src": "28033:4:55", + "type": "" + } + ], + "src": "27913:304:55" + }, + { + "body": { + "nativeSrc": "28413:14:55", + "nodeType": "YulBlock", + "src": "28413:14:55", + "statements": [ + { + "nativeSrc": "28415:10:55", + "nodeType": "YulAssignment", + "src": "28415:10:55", + "value": { + "name": "pos", + "nativeSrc": "28422:3:55", + "nodeType": "YulIdentifier", + "src": "28422:3:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "28415:3:55", + "nodeType": "YulIdentifier", + "src": "28415:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "28222:205:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "28397:3:55", + "nodeType": "YulTypedName", + "src": "28397:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "28405:3:55", + "nodeType": "YulTypedName", + "src": "28405:3:55", + "type": "" + } + ], + "src": "28222:205:55" + }, + { + "body": { + "nativeSrc": "28488:65:55", + "nodeType": "YulBlock", + "src": "28488:65:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28505:1:55", + "nodeType": "YulLiteral", + "src": "28505:1:55", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "28508:3:55", + "nodeType": "YulIdentifier", + "src": "28508:3:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28498:6:55", + "nodeType": "YulIdentifier", + "src": "28498:6:55" + }, + "nativeSrc": "28498:14:55", + "nodeType": "YulFunctionCall", + "src": "28498:14:55" + }, + "nativeSrc": "28498:14:55", + "nodeType": "YulExpressionStatement", + "src": "28498:14:55" + }, + { + "nativeSrc": "28521:26:55", + "nodeType": "YulAssignment", + "src": "28521:26:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28539:1:55", + "nodeType": "YulLiteral", + "src": "28539:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "28542:4:55", + "nodeType": "YulLiteral", + "src": "28542:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "28529:9:55", + "nodeType": "YulIdentifier", + "src": "28529:9:55" + }, + "nativeSrc": "28529:18:55", + "nodeType": "YulFunctionCall", + "src": "28529:18:55" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "28521:4:55", + "nodeType": "YulIdentifier", + "src": "28521:4:55" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "28432:121:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "28471:3:55", + "nodeType": "YulTypedName", + "src": "28471:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "28479:4:55", + "nodeType": "YulTypedName", + "src": "28479:4:55", + "type": "" + } + ], + "src": "28432:121:55" + }, + { + "body": { + "nativeSrc": "28639:462:55", + "nodeType": "YulBlock", + "src": "28639:462:55", + "statements": [ + { + "body": { + "nativeSrc": "28672:423:55", + "nodeType": "YulBlock", + "src": "28672:423:55", + "statements": [ + { + "nativeSrc": "28686:11:55", + "nodeType": "YulVariableDeclaration", + "src": "28686:11:55", + "value": { + "kind": "number", + "nativeSrc": "28696:1:55", + "nodeType": "YulLiteral", + "src": "28696:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "28690:2:55", + "nodeType": "YulTypedName", + "src": "28690:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28717:1:55", + "nodeType": "YulLiteral", + "src": "28717:1:55", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "28720:5:55", + "nodeType": "YulIdentifier", + "src": "28720:5:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28710:6:55", + "nodeType": "YulIdentifier", + "src": "28710:6:55" + }, + "nativeSrc": "28710:16:55", + "nodeType": "YulFunctionCall", + "src": "28710:16:55" + }, + "nativeSrc": "28710:16:55", + "nodeType": "YulExpressionStatement", + "src": "28710:16:55" + }, + { + "nativeSrc": "28739:30:55", + "nodeType": "YulVariableDeclaration", + "src": "28739:30:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28761:1:55", + "nodeType": "YulLiteral", + "src": "28761:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "28764:4:55", + "nodeType": "YulLiteral", + "src": "28764:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "28751:9:55", + "nodeType": "YulIdentifier", + "src": "28751:9:55" + }, + "nativeSrc": "28751:18:55", + "nodeType": "YulFunctionCall", + "src": "28751:18:55" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "28743:4:55", + "nodeType": "YulTypedName", + "src": "28743:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "28782:57:55", + "nodeType": "YulVariableDeclaration", + "src": "28782:57:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "28805:4:55", + "nodeType": "YulIdentifier", + "src": "28805:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28815:1:55", + "nodeType": "YulLiteral", + "src": "28815:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "28822:10:55", + "nodeType": "YulIdentifier", + "src": "28822:10:55" + }, + { + "kind": "number", + "nativeSrc": "28834:2:55", + "nodeType": "YulLiteral", + "src": "28834:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28818:3:55", + "nodeType": "YulIdentifier", + "src": "28818:3:55" + }, + "nativeSrc": "28818:19:55", + "nodeType": "YulFunctionCall", + "src": "28818:19:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "28811:3:55", + "nodeType": "YulIdentifier", + "src": "28811:3:55" + }, + "nativeSrc": "28811:27:55", + "nodeType": "YulFunctionCall", + "src": "28811:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28801:3:55", + "nodeType": "YulIdentifier", + "src": "28801:3:55" + }, + "nativeSrc": "28801:38:55", + "nodeType": "YulFunctionCall", + "src": "28801:38:55" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "28786:11:55", + "nodeType": "YulTypedName", + "src": "28786:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "28876:23:55", + "nodeType": "YulBlock", + "src": "28876:23:55", + "statements": [ + { + "nativeSrc": "28878:19:55", + "nodeType": "YulAssignment", + "src": "28878:19:55", + "value": { + "name": "data", + "nativeSrc": "28893:4:55", + "nodeType": "YulIdentifier", + "src": "28893:4:55" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "28878:11:55", + "nodeType": "YulIdentifier", + "src": "28878:11:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "28858:10:55", + "nodeType": "YulIdentifier", + "src": "28858:10:55" + }, + { + "kind": "number", + "nativeSrc": "28870:4:55", + "nodeType": "YulLiteral", + "src": "28870:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28855:2:55", + "nodeType": "YulIdentifier", + "src": "28855:2:55" + }, + "nativeSrc": "28855:20:55", + "nodeType": "YulFunctionCall", + "src": "28855:20:55" + }, + "nativeSrc": "28852:47:55", + "nodeType": "YulIf", + "src": "28852:47:55" + }, + { + "nativeSrc": "28912:41:55", + "nodeType": "YulVariableDeclaration", + "src": "28912:41:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "28926:4:55", + "nodeType": "YulIdentifier", + "src": "28926:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28936:1:55", + "nodeType": "YulLiteral", + "src": "28936:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "28943:3:55", + "nodeType": "YulIdentifier", + "src": "28943:3:55" + }, + { + "kind": "number", + "nativeSrc": "28948:2:55", + "nodeType": "YulLiteral", + "src": "28948:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28939:3:55", + "nodeType": "YulIdentifier", + "src": "28939:3:55" + }, + "nativeSrc": "28939:12:55", + "nodeType": "YulFunctionCall", + "src": "28939:12:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "28932:3:55", + "nodeType": "YulIdentifier", + "src": "28932:3:55" + }, + "nativeSrc": "28932:20:55", + "nodeType": "YulFunctionCall", + "src": "28932:20:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28922:3:55", + "nodeType": "YulIdentifier", + "src": "28922:3:55" + }, + "nativeSrc": "28922:31:55", + "nodeType": "YulFunctionCall", + "src": "28922:31:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "28916:2:55", + "nodeType": "YulTypedName", + "src": "28916:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "28966:24:55", + "nodeType": "YulVariableDeclaration", + "src": "28966:24:55", + "value": { + "name": "deleteStart", + "nativeSrc": "28979:11:55", + "nodeType": "YulIdentifier", + "src": "28979:11:55" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "28970:5:55", + "nodeType": "YulTypedName", + "src": "28970:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29064:21:55", + "nodeType": "YulBlock", + "src": "29064:21:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29073:5:55", + "nodeType": "YulIdentifier", + "src": "29073:5:55" + }, + { + "name": "_1", + "nativeSrc": "29080:2:55", + "nodeType": "YulIdentifier", + "src": "29080:2:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "29066:6:55", + "nodeType": "YulIdentifier", + "src": "29066:6:55" + }, + "nativeSrc": "29066:17:55", + "nodeType": "YulFunctionCall", + "src": "29066:17:55" + }, + "nativeSrc": "29066:17:55", + "nodeType": "YulExpressionStatement", + "src": "29066:17:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29014:5:55", + "nodeType": "YulIdentifier", + "src": "29014:5:55" + }, + { + "name": "_2", + "nativeSrc": "29021:2:55", + "nodeType": "YulIdentifier", + "src": "29021:2:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "29011:2:55", + "nodeType": "YulIdentifier", + "src": "29011:2:55" + }, + "nativeSrc": "29011:13:55", + "nodeType": "YulFunctionCall", + "src": "29011:13:55" + }, + "nativeSrc": "29003:82:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "29025:26:55", + "nodeType": "YulBlock", + "src": "29025:26:55", + "statements": [ + { + "nativeSrc": "29027:22:55", + "nodeType": "YulAssignment", + "src": "29027:22:55", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29040:5:55", + "nodeType": "YulIdentifier", + "src": "29040:5:55" + }, + { + "kind": "number", + "nativeSrc": "29047:1:55", + "nodeType": "YulLiteral", + "src": "29047:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29036:3:55", + "nodeType": "YulIdentifier", + "src": "29036:3:55" + }, + "nativeSrc": "29036:13:55", + "nodeType": "YulFunctionCall", + "src": "29036:13:55" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "29027:5:55", + "nodeType": "YulIdentifier", + "src": "29027:5:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "29007:3:55", + "nodeType": "YulBlock", + "src": "29007:3:55", + "statements": [] + }, + "src": "29003:82:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "28655:3:55", + "nodeType": "YulIdentifier", + "src": "28655:3:55" + }, + { + "kind": "number", + "nativeSrc": "28660:2:55", + "nodeType": "YulLiteral", + "src": "28660:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28652:2:55", + "nodeType": "YulIdentifier", + "src": "28652:2:55" + }, + "nativeSrc": "28652:11:55", + "nodeType": "YulFunctionCall", + "src": "28652:11:55" + }, + "nativeSrc": "28649:446:55", + "nodeType": "YulIf", + "src": "28649:446:55" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "28558:543:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "28611:5:55", + "nodeType": "YulTypedName", + "src": "28611:5:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "28618:3:55", + "nodeType": "YulTypedName", + "src": "28618:3:55", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "28623:10:55", + "nodeType": "YulTypedName", + "src": "28623:10:55", + "type": "" + } + ], + "src": "28558:543:55" + }, + { + "body": { + "nativeSrc": "29191:81:55", + "nodeType": "YulBlock", + "src": "29191:81:55", + "statements": [ + { + "nativeSrc": "29201:65:55", + "nodeType": "YulAssignment", + "src": "29201:65:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "29216:4:55", + "nodeType": "YulIdentifier", + "src": "29216:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29234:1:55", + "nodeType": "YulLiteral", + "src": "29234:1:55", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "29237:3:55", + "nodeType": "YulIdentifier", + "src": "29237:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29230:3:55", + "nodeType": "YulIdentifier", + "src": "29230:3:55" + }, + "nativeSrc": "29230:11:55", + "nodeType": "YulFunctionCall", + "src": "29230:11:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29247:1:55", + "nodeType": "YulLiteral", + "src": "29247:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29243:3:55", + "nodeType": "YulIdentifier", + "src": "29243:3:55" + }, + "nativeSrc": "29243:6:55", + "nodeType": "YulFunctionCall", + "src": "29243:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29226:3:55", + "nodeType": "YulIdentifier", + "src": "29226:3:55" + }, + "nativeSrc": "29226:24:55", + "nodeType": "YulFunctionCall", + "src": "29226:24:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29222:3:55", + "nodeType": "YulIdentifier", + "src": "29222:3:55" + }, + "nativeSrc": "29222:29:55", + "nodeType": "YulFunctionCall", + "src": "29222:29:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29212:3:55", + "nodeType": "YulIdentifier", + "src": "29212:3:55" + }, + "nativeSrc": "29212:40:55", + "nodeType": "YulFunctionCall", + "src": "29212:40:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29258:1:55", + "nodeType": "YulLiteral", + "src": "29258:1:55", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "29261:3:55", + "nodeType": "YulIdentifier", + "src": "29261:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29254:3:55", + "nodeType": "YulIdentifier", + "src": "29254:3:55" + }, + "nativeSrc": "29254:11:55", + "nodeType": "YulFunctionCall", + "src": "29254:11:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "29209:2:55", + "nodeType": "YulIdentifier", + "src": "29209:2:55" + }, + "nativeSrc": "29209:57:55", + "nodeType": "YulFunctionCall", + "src": "29209:57:55" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "29201:4:55", + "nodeType": "YulIdentifier", + "src": "29201:4:55" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "29106:166:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "29168:4:55", + "nodeType": "YulTypedName", + "src": "29168:4:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "29174:3:55", + "nodeType": "YulTypedName", + "src": "29174:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "29182:4:55", + "nodeType": "YulTypedName", + "src": "29182:4:55", + "type": "" + } + ], + "src": "29106:166:55" + }, + { + "body": { + "nativeSrc": "29373:1249:55", + "nodeType": "YulBlock", + "src": "29373:1249:55", + "statements": [ + { + "nativeSrc": "29383:24:55", + "nodeType": "YulVariableDeclaration", + "src": "29383:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "29403:3:55", + "nodeType": "YulIdentifier", + "src": "29403:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29397:5:55", + "nodeType": "YulIdentifier", + "src": "29397:5:55" + }, + "nativeSrc": "29397:10:55", + "nodeType": "YulFunctionCall", + "src": "29397:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "29387:6:55", + "nodeType": "YulTypedName", + "src": "29387:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29450:22:55", + "nodeType": "YulBlock", + "src": "29450:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "29452:16:55", + "nodeType": "YulIdentifier", + "src": "29452:16:55" + }, + "nativeSrc": "29452:18:55", + "nodeType": "YulFunctionCall", + "src": "29452:18:55" + }, + "nativeSrc": "29452:18:55", + "nodeType": "YulExpressionStatement", + "src": "29452:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "29422:6:55", + "nodeType": "YulIdentifier", + "src": "29422:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29438:2:55", + "nodeType": "YulLiteral", + "src": "29438:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "29442:1:55", + "nodeType": "YulLiteral", + "src": "29442:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29434:3:55", + "nodeType": "YulIdentifier", + "src": "29434:3:55" + }, + "nativeSrc": "29434:10:55", + "nodeType": "YulFunctionCall", + "src": "29434:10:55" + }, + { + "kind": "number", + "nativeSrc": "29446:1:55", + "nodeType": "YulLiteral", + "src": "29446:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29430:3:55", + "nodeType": "YulIdentifier", + "src": "29430:3:55" + }, + "nativeSrc": "29430:18:55", + "nodeType": "YulFunctionCall", + "src": "29430:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "29419:2:55", + "nodeType": "YulIdentifier", + "src": "29419:2:55" + }, + "nativeSrc": "29419:30:55", + "nodeType": "YulFunctionCall", + "src": "29419:30:55" + }, + "nativeSrc": "29416:56:55", + "nodeType": "YulIf", + "src": "29416:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "29525:4:55", + "nodeType": "YulIdentifier", + "src": "29525:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "29563:4:55", + "nodeType": "YulIdentifier", + "src": "29563:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "29557:5:55", + "nodeType": "YulIdentifier", + "src": "29557:5:55" + }, + "nativeSrc": "29557:11:55", + "nodeType": "YulFunctionCall", + "src": "29557:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "29531:25:55", + "nodeType": "YulIdentifier", + "src": "29531:25:55" + }, + "nativeSrc": "29531:38:55", + "nodeType": "YulFunctionCall", + "src": "29531:38:55" + }, + { + "name": "newLen", + "nativeSrc": "29571:6:55", + "nodeType": "YulIdentifier", + "src": "29571:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "29481:43:55", + "nodeType": "YulIdentifier", + "src": "29481:43:55" + }, + "nativeSrc": "29481:97:55", + "nodeType": "YulFunctionCall", + "src": "29481:97:55" + }, + "nativeSrc": "29481:97:55", + "nodeType": "YulExpressionStatement", + "src": "29481:97:55" + }, + { + "nativeSrc": "29587:18:55", + "nodeType": "YulVariableDeclaration", + "src": "29587:18:55", + "value": { + "kind": "number", + "nativeSrc": "29604:1:55", + "nodeType": "YulLiteral", + "src": "29604:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "29591:9:55", + "nodeType": "YulTypedName", + "src": "29591:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "29614:23:55", + "nodeType": "YulVariableDeclaration", + "src": "29614:23:55", + "value": { + "kind": "number", + "nativeSrc": "29633:4:55", + "nodeType": "YulLiteral", + "src": "29633:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "29618:11:55", + "nodeType": "YulTypedName", + "src": "29618:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "29646:17:55", + "nodeType": "YulAssignment", + "src": "29646:17:55", + "value": { + "kind": "number", + "nativeSrc": "29659:4:55", + "nodeType": "YulLiteral", + "src": "29659:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "29646:9:55", + "nodeType": "YulIdentifier", + "src": "29646:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "29709:656:55", + "nodeType": "YulBlock", + "src": "29709:656:55", + "statements": [ + { + "nativeSrc": "29723:35:55", + "nodeType": "YulVariableDeclaration", + "src": "29723:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "29742:6:55", + "nodeType": "YulIdentifier", + "src": "29742:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29754:2:55", + "nodeType": "YulLiteral", + "src": "29754:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29750:3:55", + "nodeType": "YulIdentifier", + "src": "29750:3:55" + }, + "nativeSrc": "29750:7:55", + "nodeType": "YulFunctionCall", + "src": "29750:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29738:3:55", + "nodeType": "YulIdentifier", + "src": "29738:3:55" + }, + "nativeSrc": "29738:20:55", + "nodeType": "YulFunctionCall", + "src": "29738:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "29727:7:55", + "nodeType": "YulTypedName", + "src": "29727:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "29771:49:55", + "nodeType": "YulVariableDeclaration", + "src": "29771:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "29815:4:55", + "nodeType": "YulIdentifier", + "src": "29815:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "29785:29:55", + "nodeType": "YulIdentifier", + "src": "29785:29:55" + }, + "nativeSrc": "29785:35:55", + "nodeType": "YulFunctionCall", + "src": "29785:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "29775:6:55", + "nodeType": "YulTypedName", + "src": "29775:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "29833:10:55", + "nodeType": "YulVariableDeclaration", + "src": "29833:10:55", + "value": { + "kind": "number", + "nativeSrc": "29842:1:55", + "nodeType": "YulLiteral", + "src": "29842:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "29837:1:55", + "nodeType": "YulTypedName", + "src": "29837:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29920:172:55", + "nodeType": "YulBlock", + "src": "29920:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "29945:6:55", + "nodeType": "YulIdentifier", + "src": "29945:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "29963:3:55", + "nodeType": "YulIdentifier", + "src": "29963:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "29968:9:55", + "nodeType": "YulIdentifier", + "src": "29968:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29959:3:55", + "nodeType": "YulIdentifier", + "src": "29959:3:55" + }, + "nativeSrc": "29959:19:55", + "nodeType": "YulFunctionCall", + "src": "29959:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29953:5:55", + "nodeType": "YulIdentifier", + "src": "29953:5:55" + }, + "nativeSrc": "29953:26:55", + "nodeType": "YulFunctionCall", + "src": "29953:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "29938:6:55", + "nodeType": "YulIdentifier", + "src": "29938:6:55" + }, + "nativeSrc": "29938:42:55", + "nodeType": "YulFunctionCall", + "src": "29938:42:55" + }, + "nativeSrc": "29938:42:55", + "nodeType": "YulExpressionStatement", + "src": "29938:42:55" + }, + { + "nativeSrc": "29997:24:55", + "nodeType": "YulAssignment", + "src": "29997:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "30011:6:55", + "nodeType": "YulIdentifier", + "src": "30011:6:55" + }, + { + "kind": "number", + "nativeSrc": "30019:1:55", + "nodeType": "YulLiteral", + "src": "30019:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30007:3:55", + "nodeType": "YulIdentifier", + "src": "30007:3:55" + }, + "nativeSrc": "30007:14:55", + "nodeType": "YulFunctionCall", + "src": "30007:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "29997:6:55", + "nodeType": "YulIdentifier", + "src": "29997:6:55" + } + ] + }, + { + "nativeSrc": "30038:40:55", + "nodeType": "YulAssignment", + "src": "30038:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "30055:9:55", + "nodeType": "YulIdentifier", + "src": "30055:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "30066:11:55", + "nodeType": "YulIdentifier", + "src": "30066:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30051:3:55", + "nodeType": "YulIdentifier", + "src": "30051:3:55" + }, + "nativeSrc": "30051:27:55", + "nodeType": "YulFunctionCall", + "src": "30051:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "30038:9:55", + "nodeType": "YulIdentifier", + "src": "30038:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "29867:1:55", + "nodeType": "YulIdentifier", + "src": "29867:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "29870:7:55", + "nodeType": "YulIdentifier", + "src": "29870:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "29864:2:55", + "nodeType": "YulIdentifier", + "src": "29864:2:55" + }, + "nativeSrc": "29864:14:55", + "nodeType": "YulFunctionCall", + "src": "29864:14:55" + }, + "nativeSrc": "29856:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "29879:28:55", + "nodeType": "YulBlock", + "src": "29879:28:55", + "statements": [ + { + "nativeSrc": "29881:24:55", + "nodeType": "YulAssignment", + "src": "29881:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "29890:1:55", + "nodeType": "YulIdentifier", + "src": "29890:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "29893:11:55", + "nodeType": "YulIdentifier", + "src": "29893:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29886:3:55", + "nodeType": "YulIdentifier", + "src": "29886:3:55" + }, + "nativeSrc": "29886:19:55", + "nodeType": "YulFunctionCall", + "src": "29886:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "29881:1:55", + "nodeType": "YulIdentifier", + "src": "29881:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "29860:3:55", + "nodeType": "YulBlock", + "src": "29860:3:55", + "statements": [] + }, + "src": "29856:236:55" + }, + { + "body": { + "nativeSrc": "30140:166:55", + "nodeType": "YulBlock", + "src": "30140:166:55", + "statements": [ + { + "nativeSrc": "30158:43:55", + "nodeType": "YulVariableDeclaration", + "src": "30158:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "30185:3:55", + "nodeType": "YulIdentifier", + "src": "30185:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "30190:9:55", + "nodeType": "YulIdentifier", + "src": "30190:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30181:3:55", + "nodeType": "YulIdentifier", + "src": "30181:3:55" + }, + "nativeSrc": "30181:19:55", + "nodeType": "YulFunctionCall", + "src": "30181:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30175:5:55", + "nodeType": "YulIdentifier", + "src": "30175:5:55" + }, + "nativeSrc": "30175:26:55", + "nodeType": "YulFunctionCall", + "src": "30175:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "30162:9:55", + "nodeType": "YulTypedName", + "src": "30162:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "30225:6:55", + "nodeType": "YulIdentifier", + "src": "30225:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "30237:9:55", + "nodeType": "YulIdentifier", + "src": "30237:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30264:1:55", + "nodeType": "YulLiteral", + "src": "30264:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "30267:6:55", + "nodeType": "YulIdentifier", + "src": "30267:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30260:3:55", + "nodeType": "YulIdentifier", + "src": "30260:3:55" + }, + "nativeSrc": "30260:14:55", + "nodeType": "YulFunctionCall", + "src": "30260:14:55" + }, + { + "kind": "number", + "nativeSrc": "30276:3:55", + "nodeType": "YulLiteral", + "src": "30276:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30256:3:55", + "nodeType": "YulIdentifier", + "src": "30256:3:55" + }, + "nativeSrc": "30256:24:55", + "nodeType": "YulFunctionCall", + "src": "30256:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30286:1:55", + "nodeType": "YulLiteral", + "src": "30286:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "30282:3:55", + "nodeType": "YulIdentifier", + "src": "30282:3:55" + }, + "nativeSrc": "30282:6:55", + "nodeType": "YulFunctionCall", + "src": "30282:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30252:3:55", + "nodeType": "YulIdentifier", + "src": "30252:3:55" + }, + "nativeSrc": "30252:37:55", + "nodeType": "YulFunctionCall", + "src": "30252:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "30248:3:55", + "nodeType": "YulIdentifier", + "src": "30248:3:55" + }, + "nativeSrc": "30248:42:55", + "nodeType": "YulFunctionCall", + "src": "30248:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30233:3:55", + "nodeType": "YulIdentifier", + "src": "30233:3:55" + }, + "nativeSrc": "30233:58:55", + "nodeType": "YulFunctionCall", + "src": "30233:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30218:6:55", + "nodeType": "YulIdentifier", + "src": "30218:6:55" + }, + "nativeSrc": "30218:74:55", + "nodeType": "YulFunctionCall", + "src": "30218:74:55" + }, + "nativeSrc": "30218:74:55", + "nodeType": "YulExpressionStatement", + "src": "30218:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "30111:7:55", + "nodeType": "YulIdentifier", + "src": "30111:7:55" + }, + { + "name": "newLen", + "nativeSrc": "30120:6:55", + "nodeType": "YulIdentifier", + "src": "30120:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30108:2:55", + "nodeType": "YulIdentifier", + "src": "30108:2:55" + }, + "nativeSrc": "30108:19:55", + "nodeType": "YulFunctionCall", + "src": "30108:19:55" + }, + "nativeSrc": "30105:201:55", + "nodeType": "YulIf", + "src": "30105:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30326:4:55", + "nodeType": "YulIdentifier", + "src": "30326:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30340:1:55", + "nodeType": "YulLiteral", + "src": "30340:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "30343:6:55", + "nodeType": "YulIdentifier", + "src": "30343:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30336:3:55", + "nodeType": "YulIdentifier", + "src": "30336:3:55" + }, + "nativeSrc": "30336:14:55", + "nodeType": "YulFunctionCall", + "src": "30336:14:55" + }, + { + "kind": "number", + "nativeSrc": "30352:1:55", + "nodeType": "YulLiteral", + "src": "30352:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30332:3:55", + "nodeType": "YulIdentifier", + "src": "30332:3:55" + }, + "nativeSrc": "30332:22:55", + "nodeType": "YulFunctionCall", + "src": "30332:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30319:6:55", + "nodeType": "YulIdentifier", + "src": "30319:6:55" + }, + "nativeSrc": "30319:36:55", + "nodeType": "YulFunctionCall", + "src": "30319:36:55" + }, + "nativeSrc": "30319:36:55", + "nodeType": "YulExpressionStatement", + "src": "30319:36:55" + } + ] + }, + "nativeSrc": "29702:663:55", + "nodeType": "YulCase", + "src": "29702:663:55", + "value": { + "kind": "number", + "nativeSrc": "29707:1:55", + "nodeType": "YulLiteral", + "src": "29707:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "30382:234:55", + "nodeType": "YulBlock", + "src": "30382:234:55", + "statements": [ + { + "nativeSrc": "30396:14:55", + "nodeType": "YulVariableDeclaration", + "src": "30396:14:55", + "value": { + "kind": "number", + "nativeSrc": "30409:1:55", + "nodeType": "YulLiteral", + "src": "30409:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "30400:5:55", + "nodeType": "YulTypedName", + "src": "30400:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30445:67:55", + "nodeType": "YulBlock", + "src": "30445:67:55", + "statements": [ + { + "nativeSrc": "30463:35:55", + "nodeType": "YulAssignment", + "src": "30463:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "30482:3:55", + "nodeType": "YulIdentifier", + "src": "30482:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "30487:9:55", + "nodeType": "YulIdentifier", + "src": "30487:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30478:3:55", + "nodeType": "YulIdentifier", + "src": "30478:3:55" + }, + "nativeSrc": "30478:19:55", + "nodeType": "YulFunctionCall", + "src": "30478:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30472:5:55", + "nodeType": "YulIdentifier", + "src": "30472:5:55" + }, + "nativeSrc": "30472:26:55", + "nodeType": "YulFunctionCall", + "src": "30472:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "30463:5:55", + "nodeType": "YulIdentifier", + "src": "30463:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "30426:6:55", + "nodeType": "YulIdentifier", + "src": "30426:6:55" + }, + "nativeSrc": "30423:89:55", + "nodeType": "YulIf", + "src": "30423:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30532:4:55", + "nodeType": "YulIdentifier", + "src": "30532:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "30591:5:55", + "nodeType": "YulIdentifier", + "src": "30591:5:55" + }, + { + "name": "newLen", + "nativeSrc": "30598:6:55", + "nodeType": "YulIdentifier", + "src": "30598:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "30538:52:55", + "nodeType": "YulIdentifier", + "src": "30538:52:55" + }, + "nativeSrc": "30538:67:55", + "nodeType": "YulFunctionCall", + "src": "30538:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30525:6:55", + "nodeType": "YulIdentifier", + "src": "30525:6:55" + }, + "nativeSrc": "30525:81:55", + "nodeType": "YulFunctionCall", + "src": "30525:81:55" + }, + "nativeSrc": "30525:81:55", + "nodeType": "YulExpressionStatement", + "src": "30525:81:55" + } + ] + }, + "nativeSrc": "30374:242:55", + "nodeType": "YulCase", + "src": "30374:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "29682:6:55", + "nodeType": "YulIdentifier", + "src": "29682:6:55" + }, + { + "kind": "number", + "nativeSrc": "29690:2:55", + "nodeType": "YulLiteral", + "src": "29690:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "29679:2:55", + "nodeType": "YulIdentifier", + "src": "29679:2:55" + }, + "nativeSrc": "29679:14:55", + "nodeType": "YulFunctionCall", + "src": "29679:14:55" + }, + "nativeSrc": "29672:944:55", + "nodeType": "YulSwitch", + "src": "29672:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "29277:1345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "29358:4:55", + "nodeType": "YulTypedName", + "src": "29358:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "29364:3:55", + "nodeType": "YulTypedName", + "src": "29364:3:55", + "type": "" + } + ], + "src": "29277:1345:55" + }, + { + "body": { + "nativeSrc": "30776:142:55", + "nodeType": "YulBlock", + "src": "30776:142:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30793:9:55", + "nodeType": "YulIdentifier", + "src": "30793:9:55" + }, + { + "name": "value0", + "nativeSrc": "30804:6:55", + "nodeType": "YulIdentifier", + "src": "30804:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30786:6:55", + "nodeType": "YulIdentifier", + "src": "30786:6:55" + }, + "nativeSrc": "30786:25:55", + "nodeType": "YulFunctionCall", + "src": "30786:25:55" + }, + "nativeSrc": "30786:25:55", + "nodeType": "YulExpressionStatement", + "src": "30786:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30831:9:55", + "nodeType": "YulIdentifier", + "src": "30831:9:55" + }, + { + "kind": "number", + "nativeSrc": "30842:2:55", + "nodeType": "YulLiteral", + "src": "30842:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30827:3:55", + "nodeType": "YulIdentifier", + "src": "30827:3:55" + }, + "nativeSrc": "30827:18:55", + "nodeType": "YulFunctionCall", + "src": "30827:18:55" + }, + { + "kind": "number", + "nativeSrc": "30847:2:55", + "nodeType": "YulLiteral", + "src": "30847:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30820:6:55", + "nodeType": "YulIdentifier", + "src": "30820:6:55" + }, + "nativeSrc": "30820:30:55", + "nodeType": "YulFunctionCall", + "src": "30820:30:55" + }, + "nativeSrc": "30820:30:55", + "nodeType": "YulExpressionStatement", + "src": "30820:30:55" + }, + { + "nativeSrc": "30859:53:55", + "nodeType": "YulAssignment", + "src": "30859:53:55", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "30885:6:55", + "nodeType": "YulIdentifier", + "src": "30885:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30897:9:55", + "nodeType": "YulIdentifier", + "src": "30897:9:55" + }, + { + "kind": "number", + "nativeSrc": "30908:2:55", + "nodeType": "YulLiteral", + "src": "30908:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30893:3:55", + "nodeType": "YulIdentifier", + "src": "30893:3:55" + }, + "nativeSrc": "30893:18:55", + "nodeType": "YulFunctionCall", + "src": "30893:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "30867:17:55", + "nodeType": "YulIdentifier", + "src": "30867:17:55" + }, + "nativeSrc": "30867:45:55", + "nodeType": "YulFunctionCall", + "src": "30867:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "30859:4:55", + "nodeType": "YulIdentifier", + "src": "30859:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "30627:291:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "30737:9:55", + "nodeType": "YulTypedName", + "src": "30737:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "30748:6:55", + "nodeType": "YulTypedName", + "src": "30748:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "30756:6:55", + "nodeType": "YulTypedName", + "src": "30756:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "30767:4:55", + "nodeType": "YulTypedName", + "src": "30767:4:55", + "type": "" + } + ], + "src": "30627:291:55" + }, + { + "body": { + "nativeSrc": "31062:150:55", + "nodeType": "YulBlock", + "src": "31062:150:55", + "statements": [ + { + "nativeSrc": "31072:27:55", + "nodeType": "YulVariableDeclaration", + "src": "31072:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31092:6:55", + "nodeType": "YulIdentifier", + "src": "31092:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31086:5:55", + "nodeType": "YulIdentifier", + "src": "31086:5:55" + }, + "nativeSrc": "31086:13:55", + "nodeType": "YulFunctionCall", + "src": "31086:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "31076:6:55", + "nodeType": "YulTypedName", + "src": "31076:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31147:6:55", + "nodeType": "YulIdentifier", + "src": "31147:6:55" + }, + { + "kind": "number", + "nativeSrc": "31155:4:55", + "nodeType": "YulLiteral", + "src": "31155:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31143:3:55", + "nodeType": "YulIdentifier", + "src": "31143:3:55" + }, + "nativeSrc": "31143:17:55", + "nodeType": "YulFunctionCall", + "src": "31143:17:55" + }, + { + "name": "pos", + "nativeSrc": "31162:3:55", + "nodeType": "YulIdentifier", + "src": "31162:3:55" + }, + { + "name": "length", + "nativeSrc": "31167:6:55", + "nodeType": "YulIdentifier", + "src": "31167:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "31108:34:55", + "nodeType": "YulIdentifier", + "src": "31108:34:55" + }, + "nativeSrc": "31108:66:55", + "nodeType": "YulFunctionCall", + "src": "31108:66:55" + }, + "nativeSrc": "31108:66:55", + "nodeType": "YulExpressionStatement", + "src": "31108:66:55" + }, + { + "nativeSrc": "31183:23:55", + "nodeType": "YulAssignment", + "src": "31183:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "31194:3:55", + "nodeType": "YulIdentifier", + "src": "31194:3:55" + }, + { + "name": "length", + "nativeSrc": "31199:6:55", + "nodeType": "YulIdentifier", + "src": "31199:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31190:3:55", + "nodeType": "YulIdentifier", + "src": "31190:3:55" + }, + "nativeSrc": "31190:16:55", + "nodeType": "YulFunctionCall", + "src": "31190:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "31183:3:55", + "nodeType": "YulIdentifier", + "src": "31183:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "30923:289:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "31038:3:55", + "nodeType": "YulTypedName", + "src": "31038:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31043:6:55", + "nodeType": "YulTypedName", + "src": "31043:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "31054:3:55", + "nodeType": "YulTypedName", + "src": "31054:3:55", + "type": "" + } + ], + "src": "30923:289:55" + }, + { + "body": { + "nativeSrc": "31353:707:55", + "nodeType": "YulBlock", + "src": "31353:707:55", + "statements": [ + { + "nativeSrc": "31363:12:55", + "nodeType": "YulVariableDeclaration", + "src": "31363:12:55", + "value": { + "kind": "number", + "nativeSrc": "31374:1:55", + "nodeType": "YulLiteral", + "src": "31374:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "ret", + "nativeSrc": "31367:3:55", + "nodeType": "YulTypedName", + "src": "31367:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "31384:30:55", + "nodeType": "YulVariableDeclaration", + "src": "31384:30:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31407:6:55", + "nodeType": "YulIdentifier", + "src": "31407:6:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "31401:5:55", + "nodeType": "YulIdentifier", + "src": "31401:5:55" + }, + "nativeSrc": "31401:13:55", + "nodeType": "YulFunctionCall", + "src": "31401:13:55" + }, + "variables": [ + { + "name": "slotValue", + "nativeSrc": "31388:9:55", + "nodeType": "YulTypedName", + "src": "31388:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "31423:50:55", + "nodeType": "YulVariableDeclaration", + "src": "31423:50:55", + "value": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "31463:9:55", + "nodeType": "YulIdentifier", + "src": "31463:9:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "31437:25:55", + "nodeType": "YulIdentifier", + "src": "31437:25:55" + }, + "nativeSrc": "31437:36:55", + "nodeType": "YulFunctionCall", + "src": "31437:36:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "31427:6:55", + "nodeType": "YulTypedName", + "src": "31427:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "31482:11:55", + "nodeType": "YulVariableDeclaration", + "src": "31482:11:55", + "value": { + "kind": "number", + "nativeSrc": "31492:1:55", + "nodeType": "YulLiteral", + "src": "31492:1:55", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "31486:2:55", + "nodeType": "YulTypedName", + "src": "31486:2:55", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "31542:126:55", + "nodeType": "YulBlock", + "src": "31542:126:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "31563:3:55", + "nodeType": "YulIdentifier", + "src": "31563:3:55" + }, + { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "31572:9:55", + "nodeType": "YulIdentifier", + "src": "31572:9:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31587:3:55", + "nodeType": "YulLiteral", + "src": "31587:3:55", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "31583:3:55", + "nodeType": "YulIdentifier", + "src": "31583:3:55" + }, + "nativeSrc": "31583:8:55", + "nodeType": "YulFunctionCall", + "src": "31583:8:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "31568:3:55", + "nodeType": "YulIdentifier", + "src": "31568:3:55" + }, + "nativeSrc": "31568:24:55", + "nodeType": "YulFunctionCall", + "src": "31568:24:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31556:6:55", + "nodeType": "YulIdentifier", + "src": "31556:6:55" + }, + "nativeSrc": "31556:37:55", + "nodeType": "YulFunctionCall", + "src": "31556:37:55" + }, + "nativeSrc": "31556:37:55", + "nodeType": "YulExpressionStatement", + "src": "31556:37:55" + }, + { + "nativeSrc": "31606:52:55", + "nodeType": "YulAssignment", + "src": "31606:52:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "31617:3:55", + "nodeType": "YulIdentifier", + "src": "31617:3:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "31626:6:55", + "nodeType": "YulIdentifier", + "src": "31626:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "31648:6:55", + "nodeType": "YulIdentifier", + "src": "31648:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31641:6:55", + "nodeType": "YulIdentifier", + "src": "31641:6:55" + }, + "nativeSrc": "31641:14:55", + "nodeType": "YulFunctionCall", + "src": "31641:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31634:6:55", + "nodeType": "YulIdentifier", + "src": "31634:6:55" + }, + "nativeSrc": "31634:22:55", + "nodeType": "YulFunctionCall", + "src": "31634:22:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "31622:3:55", + "nodeType": "YulIdentifier", + "src": "31622:3:55" + }, + "nativeSrc": "31622:35:55", + "nodeType": "YulFunctionCall", + "src": "31622:35:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31613:3:55", + "nodeType": "YulIdentifier", + "src": "31613:3:55" + }, + "nativeSrc": "31613:45:55", + "nodeType": "YulFunctionCall", + "src": "31613:45:55" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "31606:3:55", + "nodeType": "YulIdentifier", + "src": "31606:3:55" + } + ] + } + ] + }, + "nativeSrc": "31535:133:55", + "nodeType": "YulCase", + "src": "31535:133:55", + "value": { + "kind": "number", + "nativeSrc": "31540:1:55", + "nodeType": "YulLiteral", + "src": "31540:1:55", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "31684:351:55", + "nodeType": "YulBlock", + "src": "31684:351:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31705:1:55", + "nodeType": "YulLiteral", + "src": "31705:1:55", + "type": "", + "value": "0" + }, + { + "name": "value0", + "nativeSrc": "31708:6:55", + "nodeType": "YulIdentifier", + "src": "31708:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31698:6:55", + "nodeType": "YulIdentifier", + "src": "31698:6:55" + }, + "nativeSrc": "31698:17:55", + "nodeType": "YulFunctionCall", + "src": "31698:17:55" + }, + "nativeSrc": "31698:17:55", + "nodeType": "YulExpressionStatement", + "src": "31698:17:55" + }, + { + "nativeSrc": "31728:14:55", + "nodeType": "YulVariableDeclaration", + "src": "31728:14:55", + "value": { + "kind": "number", + "nativeSrc": "31738:4:55", + "nodeType": "YulLiteral", + "src": "31738:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "31732:2:55", + "nodeType": "YulTypedName", + "src": "31732:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "31755:33:55", + "nodeType": "YulVariableDeclaration", + "src": "31755:33:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31780:1:55", + "nodeType": "YulLiteral", + "src": "31780:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "31783:4:55", + "nodeType": "YulLiteral", + "src": "31783:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "31770:9:55", + "nodeType": "YulIdentifier", + "src": "31770:9:55" + }, + "nativeSrc": "31770:18:55", + "nodeType": "YulFunctionCall", + "src": "31770:18:55" + }, + "variables": [ + { + "name": "dataPos", + "nativeSrc": "31759:7:55", + "nodeType": "YulTypedName", + "src": "31759:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "31801:10:55", + "nodeType": "YulVariableDeclaration", + "src": "31801:10:55", + "value": { + "kind": "number", + "nativeSrc": "31810:1:55", + "nodeType": "YulLiteral", + "src": "31810:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "31805:1:55", + "nodeType": "YulTypedName", + "src": "31805:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31878:111:55", + "nodeType": "YulBlock", + "src": "31878:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "31907:3:55", + "nodeType": "YulIdentifier", + "src": "31907:3:55" + }, + { + "name": "i", + "nativeSrc": "31912:1:55", + "nodeType": "YulIdentifier", + "src": "31912:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31903:3:55", + "nodeType": "YulIdentifier", + "src": "31903:3:55" + }, + "nativeSrc": "31903:11:55", + "nodeType": "YulFunctionCall", + "src": "31903:11:55" + }, + { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "31922:7:55", + "nodeType": "YulIdentifier", + "src": "31922:7:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "31916:5:55", + "nodeType": "YulIdentifier", + "src": "31916:5:55" + }, + "nativeSrc": "31916:14:55", + "nodeType": "YulFunctionCall", + "src": "31916:14:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31896:6:55", + "nodeType": "YulIdentifier", + "src": "31896:6:55" + }, + "nativeSrc": "31896:35:55", + "nodeType": "YulFunctionCall", + "src": "31896:35:55" + }, + "nativeSrc": "31896:35:55", + "nodeType": "YulExpressionStatement", + "src": "31896:35:55" + }, + { + "nativeSrc": "31948:27:55", + "nodeType": "YulAssignment", + "src": "31948:27:55", + "value": { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "31963:7:55", + "nodeType": "YulIdentifier", + "src": "31963:7:55" + }, + { + "name": "_1", + "nativeSrc": "31972:2:55", + "nodeType": "YulIdentifier", + "src": "31972:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31959:3:55", + "nodeType": "YulIdentifier", + "src": "31959:3:55" + }, + "nativeSrc": "31959:16:55", + "nodeType": "YulFunctionCall", + "src": "31959:16:55" + }, + "variableNames": [ + { + "name": "dataPos", + "nativeSrc": "31948:7:55", + "nodeType": "YulIdentifier", + "src": "31948:7:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "31835:1:55", + "nodeType": "YulIdentifier", + "src": "31835:1:55" + }, + { + "name": "length", + "nativeSrc": "31838:6:55", + "nodeType": "YulIdentifier", + "src": "31838:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31832:2:55", + "nodeType": "YulIdentifier", + "src": "31832:2:55" + }, + "nativeSrc": "31832:13:55", + "nodeType": "YulFunctionCall", + "src": "31832:13:55" + }, + "nativeSrc": "31824:165:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "31846:19:55", + "nodeType": "YulBlock", + "src": "31846:19:55", + "statements": [ + { + "nativeSrc": "31848:15:55", + "nodeType": "YulAssignment", + "src": "31848:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "31857:1:55", + "nodeType": "YulIdentifier", + "src": "31857:1:55" + }, + { + "name": "_2", + "nativeSrc": "31860:2:55", + "nodeType": "YulIdentifier", + "src": "31860:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31853:3:55", + "nodeType": "YulIdentifier", + "src": "31853:3:55" + }, + "nativeSrc": "31853:10:55", + "nodeType": "YulFunctionCall", + "src": "31853:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "31848:1:55", + "nodeType": "YulIdentifier", + "src": "31848:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "31828:3:55", + "nodeType": "YulBlock", + "src": "31828:3:55", + "statements": [] + }, + "src": "31824:165:55" + }, + { + "nativeSrc": "32002:23:55", + "nodeType": "YulAssignment", + "src": "32002:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "32013:3:55", + "nodeType": "YulIdentifier", + "src": "32013:3:55" + }, + { + "name": "length", + "nativeSrc": "32018:6:55", + "nodeType": "YulIdentifier", + "src": "32018:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32009:3:55", + "nodeType": "YulIdentifier", + "src": "32009:3:55" + }, + "nativeSrc": "32009:16:55", + "nodeType": "YulFunctionCall", + "src": "32009:16:55" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "32002:3:55", + "nodeType": "YulIdentifier", + "src": "32002:3:55" + } + ] + } + ] + }, + "nativeSrc": "31677:358:55", + "nodeType": "YulCase", + "src": "31677:358:55", + "value": { + "kind": "number", + "nativeSrc": "31682:1:55", + "nodeType": "YulLiteral", + "src": "31682:1:55", + "type": "", + "value": "1" + } + } + ], + "expression": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "31513:9:55", + "nodeType": "YulIdentifier", + "src": "31513:9:55" + }, + { + "kind": "number", + "nativeSrc": "31524:1:55", + "nodeType": "YulLiteral", + "src": "31524:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "31509:3:55", + "nodeType": "YulIdentifier", + "src": "31509:3:55" + }, + "nativeSrc": "31509:17:55", + "nodeType": "YulFunctionCall", + "src": "31509:17:55" + }, + "nativeSrc": "31502:533:55", + "nodeType": "YulSwitch", + "src": "31502:533:55" + }, + { + "nativeSrc": "32044:10:55", + "nodeType": "YulAssignment", + "src": "32044:10:55", + "value": { + "name": "ret", + "nativeSrc": "32051:3:55", + "nodeType": "YulIdentifier", + "src": "32051:3:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "32044:3:55", + "nodeType": "YulIdentifier", + "src": "32044:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "31217:843:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "31329:3:55", + "nodeType": "YulTypedName", + "src": "31329:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31334:6:55", + "nodeType": "YulTypedName", + "src": "31334:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "31345:3:55", + "nodeType": "YulTypedName", + "src": "31345:3:55", + "type": "" + } + ], + "src": "31217:843:55" + }, + { + "body": { + "nativeSrc": "32162:1338:55", + "nodeType": "YulBlock", + "src": "32162:1338:55", + "statements": [ + { + "body": { + "nativeSrc": "32189:9:55", + "nodeType": "YulBlock", + "src": "32189:9:55", + "statements": [ + { + "nativeSrc": "32191:5:55", + "nodeType": "YulLeave", + "src": "32191:5:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32178:4:55", + "nodeType": "YulIdentifier", + "src": "32178:4:55" + }, + { + "name": "src", + "nativeSrc": "32184:3:55", + "nodeType": "YulIdentifier", + "src": "32184:3:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "32175:2:55", + "nodeType": "YulIdentifier", + "src": "32175:2:55" + }, + "nativeSrc": "32175:13:55", + "nodeType": "YulFunctionCall", + "src": "32175:13:55" + }, + "nativeSrc": "32172:26:55", + "nodeType": "YulIf", + "src": "32172:26:55" + }, + { + "nativeSrc": "32207:51:55", + "nodeType": "YulVariableDeclaration", + "src": "32207:51:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "32253:3:55", + "nodeType": "YulIdentifier", + "src": "32253:3:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "32247:5:55", + "nodeType": "YulIdentifier", + "src": "32247:5:55" + }, + "nativeSrc": "32247:10:55", + "nodeType": "YulFunctionCall", + "src": "32247:10:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "32221:25:55", + "nodeType": "YulIdentifier", + "src": "32221:25:55" + }, + "nativeSrc": "32221:37:55", + "nodeType": "YulFunctionCall", + "src": "32221:37:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "32211:6:55", + "nodeType": "YulTypedName", + "src": "32211:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "32301:22:55", + "nodeType": "YulBlock", + "src": "32301:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "32303:16:55", + "nodeType": "YulIdentifier", + "src": "32303:16:55" + }, + "nativeSrc": "32303:18:55", + "nodeType": "YulFunctionCall", + "src": "32303:18:55" + }, + "nativeSrc": "32303:18:55", + "nodeType": "YulExpressionStatement", + "src": "32303:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "32273:6:55", + "nodeType": "YulIdentifier", + "src": "32273:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32289:2:55", + "nodeType": "YulLiteral", + "src": "32289:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "32293:1:55", + "nodeType": "YulLiteral", + "src": "32293:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32285:3:55", + "nodeType": "YulIdentifier", + "src": "32285:3:55" + }, + "nativeSrc": "32285:10:55", + "nodeType": "YulFunctionCall", + "src": "32285:10:55" + }, + { + "kind": "number", + "nativeSrc": "32297:1:55", + "nodeType": "YulLiteral", + "src": "32297:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32281:3:55", + "nodeType": "YulIdentifier", + "src": "32281:3:55" + }, + "nativeSrc": "32281:18:55", + "nodeType": "YulFunctionCall", + "src": "32281:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32270:2:55", + "nodeType": "YulIdentifier", + "src": "32270:2:55" + }, + "nativeSrc": "32270:30:55", + "nodeType": "YulFunctionCall", + "src": "32270:30:55" + }, + "nativeSrc": "32267:56:55", + "nodeType": "YulIf", + "src": "32267:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32376:4:55", + "nodeType": "YulIdentifier", + "src": "32376:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32414:4:55", + "nodeType": "YulIdentifier", + "src": "32414:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "32408:5:55", + "nodeType": "YulIdentifier", + "src": "32408:5:55" + }, + "nativeSrc": "32408:11:55", + "nodeType": "YulFunctionCall", + "src": "32408:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "32382:25:55", + "nodeType": "YulIdentifier", + "src": "32382:25:55" + }, + "nativeSrc": "32382:38:55", + "nodeType": "YulFunctionCall", + "src": "32382:38:55" + }, + { + "name": "newLen", + "nativeSrc": "32422:6:55", + "nodeType": "YulIdentifier", + "src": "32422:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "32332:43:55", + "nodeType": "YulIdentifier", + "src": "32332:43:55" + }, + "nativeSrc": "32332:97:55", + "nodeType": "YulFunctionCall", + "src": "32332:97:55" + }, + "nativeSrc": "32332:97:55", + "nodeType": "YulExpressionStatement", + "src": "32332:97:55" + }, + { + "nativeSrc": "32438:18:55", + "nodeType": "YulVariableDeclaration", + "src": "32438:18:55", + "value": { + "kind": "number", + "nativeSrc": "32455:1:55", + "nodeType": "YulLiteral", + "src": "32455:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "32442:9:55", + "nodeType": "YulTypedName", + "src": "32442:9:55", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "32502:741:55", + "nodeType": "YulBlock", + "src": "32502:741:55", + "statements": [ + { + "nativeSrc": "32516:35:55", + "nodeType": "YulVariableDeclaration", + "src": "32516:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "32535:6:55", + "nodeType": "YulIdentifier", + "src": "32535:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32547:2:55", + "nodeType": "YulLiteral", + "src": "32547:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "32543:3:55", + "nodeType": "YulIdentifier", + "src": "32543:3:55" + }, + "nativeSrc": "32543:7:55", + "nodeType": "YulFunctionCall", + "src": "32543:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "32531:3:55", + "nodeType": "YulIdentifier", + "src": "32531:3:55" + }, + "nativeSrc": "32531:20:55", + "nodeType": "YulFunctionCall", + "src": "32531:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "32520:7:55", + "nodeType": "YulTypedName", + "src": "32520:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "32564:47:55", + "nodeType": "YulVariableDeclaration", + "src": "32564:47:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "32607:3:55", + "nodeType": "YulIdentifier", + "src": "32607:3:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "32577:29:55", + "nodeType": "YulIdentifier", + "src": "32577:29:55" + }, + "nativeSrc": "32577:34:55", + "nodeType": "YulFunctionCall", + "src": "32577:34:55" + }, + "variables": [ + { + "name": "src_1", + "nativeSrc": "32568:5:55", + "nodeType": "YulTypedName", + "src": "32568:5:55", + "type": "" + } + ] + }, + { + "nativeSrc": "32624:49:55", + "nodeType": "YulVariableDeclaration", + "src": "32624:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32668:4:55", + "nodeType": "YulIdentifier", + "src": "32668:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "32638:29:55", + "nodeType": "YulIdentifier", + "src": "32638:29:55" + }, + "nativeSrc": "32638:35:55", + "nodeType": "YulFunctionCall", + "src": "32638:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "32628:6:55", + "nodeType": "YulTypedName", + "src": "32628:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "32686:18:55", + "nodeType": "YulVariableDeclaration", + "src": "32686:18:55", + "value": { + "name": "srcOffset", + "nativeSrc": "32695:9:55", + "nodeType": "YulIdentifier", + "src": "32695:9:55" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "32690:1:55", + "nodeType": "YulTypedName", + "src": "32690:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "32774:194:55", + "nodeType": "YulBlock", + "src": "32774:194:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "32799:6:55", + "nodeType": "YulIdentifier", + "src": "32799:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "32817:5:55", + "nodeType": "YulIdentifier", + "src": "32817:5:55" + }, + { + "name": "srcOffset", + "nativeSrc": "32824:9:55", + "nodeType": "YulIdentifier", + "src": "32824:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32813:3:55", + "nodeType": "YulIdentifier", + "src": "32813:3:55" + }, + "nativeSrc": "32813:21:55", + "nodeType": "YulFunctionCall", + "src": "32813:21:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "32807:5:55", + "nodeType": "YulIdentifier", + "src": "32807:5:55" + }, + "nativeSrc": "32807:28:55", + "nodeType": "YulFunctionCall", + "src": "32807:28:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "32792:6:55", + "nodeType": "YulIdentifier", + "src": "32792:6:55" + }, + "nativeSrc": "32792:44:55", + "nodeType": "YulFunctionCall", + "src": "32792:44:55" + }, + "nativeSrc": "32792:44:55", + "nodeType": "YulExpressionStatement", + "src": "32792:44:55" + }, + { + "nativeSrc": "32853:11:55", + "nodeType": "YulVariableDeclaration", + "src": "32853:11:55", + "value": { + "kind": "number", + "nativeSrc": "32863:1:55", + "nodeType": "YulLiteral", + "src": "32863:1:55", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "32857:2:55", + "nodeType": "YulTypedName", + "src": "32857:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "32881:25:55", + "nodeType": "YulAssignment", + "src": "32881:25:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "32895:6:55", + "nodeType": "YulIdentifier", + "src": "32895:6:55" + }, + { + "name": "_1", + "nativeSrc": "32903:2:55", + "nodeType": "YulIdentifier", + "src": "32903:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32891:3:55", + "nodeType": "YulIdentifier", + "src": "32891:3:55" + }, + "nativeSrc": "32891:15:55", + "nodeType": "YulFunctionCall", + "src": "32891:15:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "32881:6:55", + "nodeType": "YulIdentifier", + "src": "32881:6:55" + } + ] + }, + { + "nativeSrc": "32923:31:55", + "nodeType": "YulAssignment", + "src": "32923:31:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "32940:9:55", + "nodeType": "YulIdentifier", + "src": "32940:9:55" + }, + { + "name": "_1", + "nativeSrc": "32951:2:55", + "nodeType": "YulIdentifier", + "src": "32951:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32936:3:55", + "nodeType": "YulIdentifier", + "src": "32936:3:55" + }, + "nativeSrc": "32936:18:55", + "nodeType": "YulFunctionCall", + "src": "32936:18:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "32923:9:55", + "nodeType": "YulIdentifier", + "src": "32923:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "32728:1:55", + "nodeType": "YulIdentifier", + "src": "32728:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "32731:7:55", + "nodeType": "YulIdentifier", + "src": "32731:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "32725:2:55", + "nodeType": "YulIdentifier", + "src": "32725:2:55" + }, + "nativeSrc": "32725:14:55", + "nodeType": "YulFunctionCall", + "src": "32725:14:55" + }, + "nativeSrc": "32717:251:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "32740:21:55", + "nodeType": "YulBlock", + "src": "32740:21:55", + "statements": [ + { + "nativeSrc": "32742:17:55", + "nodeType": "YulAssignment", + "src": "32742:17:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "32751:1:55", + "nodeType": "YulIdentifier", + "src": "32751:1:55" + }, + { + "kind": "number", + "nativeSrc": "32754:4:55", + "nodeType": "YulLiteral", + "src": "32754:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32747:3:55", + "nodeType": "YulIdentifier", + "src": "32747:3:55" + }, + "nativeSrc": "32747:12:55", + "nodeType": "YulFunctionCall", + "src": "32747:12:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "32742:1:55", + "nodeType": "YulIdentifier", + "src": "32742:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "32721:3:55", + "nodeType": "YulBlock", + "src": "32721:3:55", + "statements": [] + }, + "src": "32717:251:55" + }, + { + "body": { + "nativeSrc": "33016:168:55", + "nodeType": "YulBlock", + "src": "33016:168:55", + "statements": [ + { + "nativeSrc": "33034:45:55", + "nodeType": "YulVariableDeclaration", + "src": "33034:45:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "33061:5:55", + "nodeType": "YulIdentifier", + "src": "33061:5:55" + }, + { + "name": "srcOffset", + "nativeSrc": "33068:9:55", + "nodeType": "YulIdentifier", + "src": "33068:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33057:3:55", + "nodeType": "YulIdentifier", + "src": "33057:3:55" + }, + "nativeSrc": "33057:21:55", + "nodeType": "YulFunctionCall", + "src": "33057:21:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33051:5:55", + "nodeType": "YulIdentifier", + "src": "33051:5:55" + }, + "nativeSrc": "33051:28:55", + "nodeType": "YulFunctionCall", + "src": "33051:28:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "33038:9:55", + "nodeType": "YulTypedName", + "src": "33038:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "33103:6:55", + "nodeType": "YulIdentifier", + "src": "33103:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "33115:9:55", + "nodeType": "YulIdentifier", + "src": "33115:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33142:1:55", + "nodeType": "YulLiteral", + "src": "33142:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "33145:6:55", + "nodeType": "YulIdentifier", + "src": "33145:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33138:3:55", + "nodeType": "YulIdentifier", + "src": "33138:3:55" + }, + "nativeSrc": "33138:14:55", + "nodeType": "YulFunctionCall", + "src": "33138:14:55" + }, + { + "kind": "number", + "nativeSrc": "33154:3:55", + "nodeType": "YulLiteral", + "src": "33154:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33134:3:55", + "nodeType": "YulIdentifier", + "src": "33134:3:55" + }, + "nativeSrc": "33134:24:55", + "nodeType": "YulFunctionCall", + "src": "33134:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33164:1:55", + "nodeType": "YulLiteral", + "src": "33164:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33160:3:55", + "nodeType": "YulIdentifier", + "src": "33160:3:55" + }, + "nativeSrc": "33160:6:55", + "nodeType": "YulFunctionCall", + "src": "33160:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33130:3:55", + "nodeType": "YulIdentifier", + "src": "33130:3:55" + }, + "nativeSrc": "33130:37:55", + "nodeType": "YulFunctionCall", + "src": "33130:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33126:3:55", + "nodeType": "YulIdentifier", + "src": "33126:3:55" + }, + "nativeSrc": "33126:42:55", + "nodeType": "YulFunctionCall", + "src": "33126:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33111:3:55", + "nodeType": "YulIdentifier", + "src": "33111:3:55" + }, + "nativeSrc": "33111:58:55", + "nodeType": "YulFunctionCall", + "src": "33111:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33096:6:55", + "nodeType": "YulIdentifier", + "src": "33096:6:55" + }, + "nativeSrc": "33096:74:55", + "nodeType": "YulFunctionCall", + "src": "33096:74:55" + }, + "nativeSrc": "33096:74:55", + "nodeType": "YulExpressionStatement", + "src": "33096:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "32987:7:55", + "nodeType": "YulIdentifier", + "src": "32987:7:55" + }, + { + "name": "newLen", + "nativeSrc": "32996:6:55", + "nodeType": "YulIdentifier", + "src": "32996:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "32984:2:55", + "nodeType": "YulIdentifier", + "src": "32984:2:55" + }, + "nativeSrc": "32984:19:55", + "nodeType": "YulFunctionCall", + "src": "32984:19:55" + }, + "nativeSrc": "32981:203:55", + "nodeType": "YulIf", + "src": "32981:203:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33204:4:55", + "nodeType": "YulIdentifier", + "src": "33204:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33218:1:55", + "nodeType": "YulLiteral", + "src": "33218:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "33221:6:55", + "nodeType": "YulIdentifier", + "src": "33221:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33214:3:55", + "nodeType": "YulIdentifier", + "src": "33214:3:55" + }, + "nativeSrc": "33214:14:55", + "nodeType": "YulFunctionCall", + "src": "33214:14:55" + }, + { + "kind": "number", + "nativeSrc": "33230:1:55", + "nodeType": "YulLiteral", + "src": "33230:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33210:3:55", + "nodeType": "YulIdentifier", + "src": "33210:3:55" + }, + "nativeSrc": "33210:22:55", + "nodeType": "YulFunctionCall", + "src": "33210:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33197:6:55", + "nodeType": "YulIdentifier", + "src": "33197:6:55" + }, + "nativeSrc": "33197:36:55", + "nodeType": "YulFunctionCall", + "src": "33197:36:55" + }, + "nativeSrc": "33197:36:55", + "nodeType": "YulExpressionStatement", + "src": "33197:36:55" + } + ] + }, + "nativeSrc": "32495:748:55", + "nodeType": "YulCase", + "src": "32495:748:55", + "value": { + "kind": "number", + "nativeSrc": "32500:1:55", + "nodeType": "YulLiteral", + "src": "32500:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "33260:234:55", + "nodeType": "YulBlock", + "src": "33260:234:55", + "statements": [ + { + "nativeSrc": "33274:14:55", + "nodeType": "YulVariableDeclaration", + "src": "33274:14:55", + "value": { + "kind": "number", + "nativeSrc": "33287:1:55", + "nodeType": "YulLiteral", + "src": "33287:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "33278:5:55", + "nodeType": "YulTypedName", + "src": "33278:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33323:67:55", + "nodeType": "YulBlock", + "src": "33323:67:55", + "statements": [ + { + "nativeSrc": "33341:35:55", + "nodeType": "YulAssignment", + "src": "33341:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "33360:3:55", + "nodeType": "YulIdentifier", + "src": "33360:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "33365:9:55", + "nodeType": "YulIdentifier", + "src": "33365:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33356:3:55", + "nodeType": "YulIdentifier", + "src": "33356:3:55" + }, + "nativeSrc": "33356:19:55", + "nodeType": "YulFunctionCall", + "src": "33356:19:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33350:5:55", + "nodeType": "YulIdentifier", + "src": "33350:5:55" + }, + "nativeSrc": "33350:26:55", + "nodeType": "YulFunctionCall", + "src": "33350:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "33341:5:55", + "nodeType": "YulIdentifier", + "src": "33341:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "33304:6:55", + "nodeType": "YulIdentifier", + "src": "33304:6:55" + }, + "nativeSrc": "33301:89:55", + "nodeType": "YulIf", + "src": "33301:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33410:4:55", + "nodeType": "YulIdentifier", + "src": "33410:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "33469:5:55", + "nodeType": "YulIdentifier", + "src": "33469:5:55" + }, + { + "name": "newLen", + "nativeSrc": "33476:6:55", + "nodeType": "YulIdentifier", + "src": "33476:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "33416:52:55", + "nodeType": "YulIdentifier", + "src": "33416:52:55" + }, + "nativeSrc": "33416:67:55", + "nodeType": "YulFunctionCall", + "src": "33416:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33403:6:55", + "nodeType": "YulIdentifier", + "src": "33403:6:55" + }, + "nativeSrc": "33403:81:55", + "nodeType": "YulFunctionCall", + "src": "33403:81:55" + }, + "nativeSrc": "33403:81:55", + "nodeType": "YulExpressionStatement", + "src": "33403:81:55" + } + ] + }, + "nativeSrc": "33252:242:55", + "nodeType": "YulCase", + "src": "33252:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "32475:6:55", + "nodeType": "YulIdentifier", + "src": "32475:6:55" + }, + { + "kind": "number", + "nativeSrc": "32483:2:55", + "nodeType": "YulLiteral", + "src": "32483:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32472:2:55", + "nodeType": "YulIdentifier", + "src": "32472:2:55" + }, + "nativeSrc": "32472:14:55", + "nodeType": "YulFunctionCall", + "src": "32472:14:55" + }, + "nativeSrc": "32465:1029:55", + "nodeType": "YulSwitch", + "src": "32465:1029:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage", + "nativeSrc": "32065:1435:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "32147:4:55", + "nodeType": "YulTypedName", + "src": "32147:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "32153:3:55", + "nodeType": "YulTypedName", + "src": "32153:3:55", + "type": "" + } + ], + "src": "32065:1435:55" + }, + { + "body": { + "nativeSrc": "33537:95:55", + "nodeType": "YulBlock", + "src": "33537:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33554:1:55", + "nodeType": "YulLiteral", + "src": "33554:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33561:3:55", + "nodeType": "YulLiteral", + "src": "33561:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "33566:10:55", + "nodeType": "YulLiteral", + "src": "33566:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33557:3:55", + "nodeType": "YulIdentifier", + "src": "33557:3:55" + }, + "nativeSrc": "33557:20:55", + "nodeType": "YulFunctionCall", + "src": "33557:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33547:6:55", + "nodeType": "YulIdentifier", + "src": "33547:6:55" + }, + "nativeSrc": "33547:31:55", + "nodeType": "YulFunctionCall", + "src": "33547:31:55" + }, + "nativeSrc": "33547:31:55", + "nodeType": "YulExpressionStatement", + "src": "33547:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33594:1:55", + "nodeType": "YulLiteral", + "src": "33594:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "33597:4:55", + "nodeType": "YulLiteral", + "src": "33597:4:55", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33587:6:55", + "nodeType": "YulIdentifier", + "src": "33587:6:55" + }, + "nativeSrc": "33587:15:55", + "nodeType": "YulFunctionCall", + "src": "33587:15:55" + }, + "nativeSrc": "33587:15:55", + "nodeType": "YulExpressionStatement", + "src": "33587:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33618:1:55", + "nodeType": "YulLiteral", + "src": "33618:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "33621:4:55", + "nodeType": "YulLiteral", + "src": "33621:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33611:6:55", + "nodeType": "YulIdentifier", + "src": "33611:6:55" + }, + "nativeSrc": "33611:15:55", + "nodeType": "YulFunctionCall", + "src": "33611:15:55" + }, + "nativeSrc": "33611:15:55", + "nodeType": "YulExpressionStatement", + "src": "33611:15:55" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "33505:127:55", + "nodeType": "YulFunctionDefinition", + "src": "33505:127:55" + }, + { + "body": { + "nativeSrc": "33760:135:55", + "nodeType": "YulBlock", + "src": "33760:135:55", + "statements": [ + { + "nativeSrc": "33770:26:55", + "nodeType": "YulAssignment", + "src": "33770:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "33782:9:55", + "nodeType": "YulIdentifier", + "src": "33782:9:55" + }, + { + "kind": "number", + "nativeSrc": "33793:2:55", + "nodeType": "YulLiteral", + "src": "33793:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33778:3:55", + "nodeType": "YulIdentifier", + "src": "33778:3:55" + }, + "nativeSrc": "33778:18:55", + "nodeType": "YulFunctionCall", + "src": "33778:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "33770:4:55", + "nodeType": "YulIdentifier", + "src": "33770:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "33812:9:55", + "nodeType": "YulIdentifier", + "src": "33812:9:55" + }, + { + "name": "value0", + "nativeSrc": "33823:6:55", + "nodeType": "YulIdentifier", + "src": "33823:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33805:6:55", + "nodeType": "YulIdentifier", + "src": "33805:6:55" + }, + "nativeSrc": "33805:25:55", + "nodeType": "YulFunctionCall", + "src": "33805:25:55" + }, + "nativeSrc": "33805:25:55", + "nodeType": "YulExpressionStatement", + "src": "33805:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "33850:9:55", + "nodeType": "YulIdentifier", + "src": "33850:9:55" + }, + { + "kind": "number", + "nativeSrc": "33861:2:55", + "nodeType": "YulLiteral", + "src": "33861:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33846:3:55", + "nodeType": "YulIdentifier", + "src": "33846:3:55" + }, + "nativeSrc": "33846:18:55", + "nodeType": "YulFunctionCall", + "src": "33846:18:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "33880:6:55", + "nodeType": "YulIdentifier", + "src": "33880:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33873:6:55", + "nodeType": "YulIdentifier", + "src": "33873:6:55" + }, + "nativeSrc": "33873:14:55", + "nodeType": "YulFunctionCall", + "src": "33873:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33866:6:55", + "nodeType": "YulIdentifier", + "src": "33866:6:55" + }, + "nativeSrc": "33866:22:55", + "nodeType": "YulFunctionCall", + "src": "33866:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33839:6:55", + "nodeType": "YulIdentifier", + "src": "33839:6:55" + }, + "nativeSrc": "33839:50:55", + "nodeType": "YulFunctionCall", + "src": "33839:50:55" + }, + "nativeSrc": "33839:50:55", + "nodeType": "YulExpressionStatement", + "src": "33839:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed", + "nativeSrc": "33637:258:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "33721:9:55", + "nodeType": "YulTypedName", + "src": "33721:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "33732:6:55", + "nodeType": "YulTypedName", + "src": "33732:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "33740:6:55", + "nodeType": "YulTypedName", + "src": "33740:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "33751:4:55", + "nodeType": "YulTypedName", + "src": "33751:4:55", + "type": "" + } + ], + "src": "33637:258:55" + }, + { + "body": { + "nativeSrc": "33994:1249:55", + "nodeType": "YulBlock", + "src": "33994:1249:55", + "statements": [ + { + "nativeSrc": "34004:24:55", + "nodeType": "YulVariableDeclaration", + "src": "34004:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "34024:3:55", + "nodeType": "YulIdentifier", + "src": "34024:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34018:5:55", + "nodeType": "YulIdentifier", + "src": "34018:5:55" + }, + "nativeSrc": "34018:10:55", + "nodeType": "YulFunctionCall", + "src": "34018:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "34008:6:55", + "nodeType": "YulTypedName", + "src": "34008:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34071:22:55", + "nodeType": "YulBlock", + "src": "34071:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "34073:16:55", + "nodeType": "YulIdentifier", + "src": "34073:16:55" + }, + "nativeSrc": "34073:18:55", + "nodeType": "YulFunctionCall", + "src": "34073:18:55" + }, + "nativeSrc": "34073:18:55", + "nodeType": "YulExpressionStatement", + "src": "34073:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34043:6:55", + "nodeType": "YulIdentifier", + "src": "34043:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34059:2:55", + "nodeType": "YulLiteral", + "src": "34059:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "34063:1:55", + "nodeType": "YulLiteral", + "src": "34063:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34055:3:55", + "nodeType": "YulIdentifier", + "src": "34055:3:55" + }, + "nativeSrc": "34055:10:55", + "nodeType": "YulFunctionCall", + "src": "34055:10:55" + }, + { + "kind": "number", + "nativeSrc": "34067:1:55", + "nodeType": "YulLiteral", + "src": "34067:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "34051:3:55", + "nodeType": "YulIdentifier", + "src": "34051:3:55" + }, + "nativeSrc": "34051:18:55", + "nodeType": "YulFunctionCall", + "src": "34051:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "34040:2:55", + "nodeType": "YulIdentifier", + "src": "34040:2:55" + }, + "nativeSrc": "34040:30:55", + "nodeType": "YulFunctionCall", + "src": "34040:30:55" + }, + "nativeSrc": "34037:56:55", + "nodeType": "YulIf", + "src": "34037:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34146:4:55", + "nodeType": "YulIdentifier", + "src": "34146:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34184:4:55", + "nodeType": "YulIdentifier", + "src": "34184:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "34178:5:55", + "nodeType": "YulIdentifier", + "src": "34178:5:55" + }, + "nativeSrc": "34178:11:55", + "nodeType": "YulFunctionCall", + "src": "34178:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "34152:25:55", + "nodeType": "YulIdentifier", + "src": "34152:25:55" + }, + "nativeSrc": "34152:38:55", + "nodeType": "YulFunctionCall", + "src": "34152:38:55" + }, + { + "name": "newLen", + "nativeSrc": "34192:6:55", + "nodeType": "YulIdentifier", + "src": "34192:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "34102:43:55", + "nodeType": "YulIdentifier", + "src": "34102:43:55" + }, + "nativeSrc": "34102:97:55", + "nodeType": "YulFunctionCall", + "src": "34102:97:55" + }, + "nativeSrc": "34102:97:55", + "nodeType": "YulExpressionStatement", + "src": "34102:97:55" + }, + { + "nativeSrc": "34208:18:55", + "nodeType": "YulVariableDeclaration", + "src": "34208:18:55", + "value": { + "kind": "number", + "nativeSrc": "34225:1:55", + "nodeType": "YulLiteral", + "src": "34225:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "34212:9:55", + "nodeType": "YulTypedName", + "src": "34212:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "34235:23:55", + "nodeType": "YulVariableDeclaration", + "src": "34235:23:55", + "value": { + "kind": "number", + "nativeSrc": "34254:4:55", + "nodeType": "YulLiteral", + "src": "34254:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "34239:11:55", + "nodeType": "YulTypedName", + "src": "34239:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "34267:17:55", + "nodeType": "YulAssignment", + "src": "34267:17:55", + "value": { + "kind": "number", + "nativeSrc": "34280:4:55", + "nodeType": "YulLiteral", + "src": "34280:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "34267:9:55", + "nodeType": "YulIdentifier", + "src": "34267:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "34330:656:55", + "nodeType": "YulBlock", + "src": "34330:656:55", + "statements": [ + { + "nativeSrc": "34344:35:55", + "nodeType": "YulVariableDeclaration", + "src": "34344:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34363:6:55", + "nodeType": "YulIdentifier", + "src": "34363:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34375:2:55", + "nodeType": "YulLiteral", + "src": "34375:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34371:3:55", + "nodeType": "YulIdentifier", + "src": "34371:3:55" + }, + "nativeSrc": "34371:7:55", + "nodeType": "YulFunctionCall", + "src": "34371:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34359:3:55", + "nodeType": "YulIdentifier", + "src": "34359:3:55" + }, + "nativeSrc": "34359:20:55", + "nodeType": "YulFunctionCall", + "src": "34359:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "34348:7:55", + "nodeType": "YulTypedName", + "src": "34348:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "34392:49:55", + "nodeType": "YulVariableDeclaration", + "src": "34392:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34436:4:55", + "nodeType": "YulIdentifier", + "src": "34436:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "34406:29:55", + "nodeType": "YulIdentifier", + "src": "34406:29:55" + }, + "nativeSrc": "34406:35:55", + "nodeType": "YulFunctionCall", + "src": "34406:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "34396:6:55", + "nodeType": "YulTypedName", + "src": "34396:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "34454:10:55", + "nodeType": "YulVariableDeclaration", + "src": "34454:10:55", + "value": { + "kind": "number", + "nativeSrc": "34463:1:55", + "nodeType": "YulLiteral", + "src": "34463:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "34458:1:55", + "nodeType": "YulTypedName", + "src": "34458:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34541:172:55", + "nodeType": "YulBlock", + "src": "34541:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34566:6:55", + "nodeType": "YulIdentifier", + "src": "34566:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "34584:3:55", + "nodeType": "YulIdentifier", + "src": "34584:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "34589:9:55", + "nodeType": "YulIdentifier", + "src": "34589:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34580:3:55", + "nodeType": "YulIdentifier", + "src": "34580:3:55" + }, + "nativeSrc": "34580:19:55", + "nodeType": "YulFunctionCall", + "src": "34580:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34574:5:55", + "nodeType": "YulIdentifier", + "src": "34574:5:55" + }, + "nativeSrc": "34574:26:55", + "nodeType": "YulFunctionCall", + "src": "34574:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34559:6:55", + "nodeType": "YulIdentifier", + "src": "34559:6:55" + }, + "nativeSrc": "34559:42:55", + "nodeType": "YulFunctionCall", + "src": "34559:42:55" + }, + "nativeSrc": "34559:42:55", + "nodeType": "YulExpressionStatement", + "src": "34559:42:55" + }, + { + "nativeSrc": "34618:24:55", + "nodeType": "YulAssignment", + "src": "34618:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34632:6:55", + "nodeType": "YulIdentifier", + "src": "34632:6:55" + }, + { + "kind": "number", + "nativeSrc": "34640:1:55", + "nodeType": "YulLiteral", + "src": "34640:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34628:3:55", + "nodeType": "YulIdentifier", + "src": "34628:3:55" + }, + "nativeSrc": "34628:14:55", + "nodeType": "YulFunctionCall", + "src": "34628:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "34618:6:55", + "nodeType": "YulIdentifier", + "src": "34618:6:55" + } + ] + }, + { + "nativeSrc": "34659:40:55", + "nodeType": "YulAssignment", + "src": "34659:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "34676:9:55", + "nodeType": "YulIdentifier", + "src": "34676:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "34687:11:55", + "nodeType": "YulIdentifier", + "src": "34687:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34672:3:55", + "nodeType": "YulIdentifier", + "src": "34672:3:55" + }, + "nativeSrc": "34672:27:55", + "nodeType": "YulFunctionCall", + "src": "34672:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "34659:9:55", + "nodeType": "YulIdentifier", + "src": "34659:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "34488:1:55", + "nodeType": "YulIdentifier", + "src": "34488:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "34491:7:55", + "nodeType": "YulIdentifier", + "src": "34491:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "34485:2:55", + "nodeType": "YulIdentifier", + "src": "34485:2:55" + }, + "nativeSrc": "34485:14:55", + "nodeType": "YulFunctionCall", + "src": "34485:14:55" + }, + "nativeSrc": "34477:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "34500:28:55", + "nodeType": "YulBlock", + "src": "34500:28:55", + "statements": [ + { + "nativeSrc": "34502:24:55", + "nodeType": "YulAssignment", + "src": "34502:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "34511:1:55", + "nodeType": "YulIdentifier", + "src": "34511:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "34514:11:55", + "nodeType": "YulIdentifier", + "src": "34514:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34507:3:55", + "nodeType": "YulIdentifier", + "src": "34507:3:55" + }, + "nativeSrc": "34507:19:55", + "nodeType": "YulFunctionCall", + "src": "34507:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "34502:1:55", + "nodeType": "YulIdentifier", + "src": "34502:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "34481:3:55", + "nodeType": "YulBlock", + "src": "34481:3:55", + "statements": [] + }, + "src": "34477:236:55" + }, + { + "body": { + "nativeSrc": "34761:166:55", + "nodeType": "YulBlock", + "src": "34761:166:55", + "statements": [ + { + "nativeSrc": "34779:43:55", + "nodeType": "YulVariableDeclaration", + "src": "34779:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "34806:3:55", + "nodeType": "YulIdentifier", + "src": "34806:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "34811:9:55", + "nodeType": "YulIdentifier", + "src": "34811:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34802:3:55", + "nodeType": "YulIdentifier", + "src": "34802:3:55" + }, + "nativeSrc": "34802:19:55", + "nodeType": "YulFunctionCall", + "src": "34802:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34796:5:55", + "nodeType": "YulIdentifier", + "src": "34796:5:55" + }, + "nativeSrc": "34796:26:55", + "nodeType": "YulFunctionCall", + "src": "34796:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "34783:9:55", + "nodeType": "YulTypedName", + "src": "34783:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34846:6:55", + "nodeType": "YulIdentifier", + "src": "34846:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "34858:9:55", + "nodeType": "YulIdentifier", + "src": "34858:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34885:1:55", + "nodeType": "YulLiteral", + "src": "34885:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "34888:6:55", + "nodeType": "YulIdentifier", + "src": "34888:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34881:3:55", + "nodeType": "YulIdentifier", + "src": "34881:3:55" + }, + "nativeSrc": "34881:14:55", + "nodeType": "YulFunctionCall", + "src": "34881:14:55" + }, + { + "kind": "number", + "nativeSrc": "34897:3:55", + "nodeType": "YulLiteral", + "src": "34897:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34877:3:55", + "nodeType": "YulIdentifier", + "src": "34877:3:55" + }, + "nativeSrc": "34877:24:55", + "nodeType": "YulFunctionCall", + "src": "34877:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34907:1:55", + "nodeType": "YulLiteral", + "src": "34907:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34903:3:55", + "nodeType": "YulIdentifier", + "src": "34903:3:55" + }, + "nativeSrc": "34903:6:55", + "nodeType": "YulFunctionCall", + "src": "34903:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "34873:3:55", + "nodeType": "YulIdentifier", + "src": "34873:3:55" + }, + "nativeSrc": "34873:37:55", + "nodeType": "YulFunctionCall", + "src": "34873:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34869:3:55", + "nodeType": "YulIdentifier", + "src": "34869:3:55" + }, + "nativeSrc": "34869:42:55", + "nodeType": "YulFunctionCall", + "src": "34869:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34854:3:55", + "nodeType": "YulIdentifier", + "src": "34854:3:55" + }, + "nativeSrc": "34854:58:55", + "nodeType": "YulFunctionCall", + "src": "34854:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34839:6:55", + "nodeType": "YulIdentifier", + "src": "34839:6:55" + }, + "nativeSrc": "34839:74:55", + "nodeType": "YulFunctionCall", + "src": "34839:74:55" + }, + "nativeSrc": "34839:74:55", + "nodeType": "YulExpressionStatement", + "src": "34839:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "34732:7:55", + "nodeType": "YulIdentifier", + "src": "34732:7:55" + }, + { + "name": "newLen", + "nativeSrc": "34741:6:55", + "nodeType": "YulIdentifier", + "src": "34741:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "34729:2:55", + "nodeType": "YulIdentifier", + "src": "34729:2:55" + }, + "nativeSrc": "34729:19:55", + "nodeType": "YulFunctionCall", + "src": "34729:19:55" + }, + "nativeSrc": "34726:201:55", + "nodeType": "YulIf", + "src": "34726:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34947:4:55", + "nodeType": "YulIdentifier", + "src": "34947:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34961:1:55", + "nodeType": "YulLiteral", + "src": "34961:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "34964:6:55", + "nodeType": "YulIdentifier", + "src": "34964:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34957:3:55", + "nodeType": "YulIdentifier", + "src": "34957:3:55" + }, + "nativeSrc": "34957:14:55", + "nodeType": "YulFunctionCall", + "src": "34957:14:55" + }, + { + "kind": "number", + "nativeSrc": "34973:1:55", + "nodeType": "YulLiteral", + "src": "34973:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34953:3:55", + "nodeType": "YulIdentifier", + "src": "34953:3:55" + }, + "nativeSrc": "34953:22:55", + "nodeType": "YulFunctionCall", + "src": "34953:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34940:6:55", + "nodeType": "YulIdentifier", + "src": "34940:6:55" + }, + "nativeSrc": "34940:36:55", + "nodeType": "YulFunctionCall", + "src": "34940:36:55" + }, + "nativeSrc": "34940:36:55", + "nodeType": "YulExpressionStatement", + "src": "34940:36:55" + } + ] + }, + "nativeSrc": "34323:663:55", + "nodeType": "YulCase", + "src": "34323:663:55", + "value": { + "kind": "number", + "nativeSrc": "34328:1:55", + "nodeType": "YulLiteral", + "src": "34328:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "35003:234:55", + "nodeType": "YulBlock", + "src": "35003:234:55", + "statements": [ + { + "nativeSrc": "35017:14:55", + "nodeType": "YulVariableDeclaration", + "src": "35017:14:55", + "value": { + "kind": "number", + "nativeSrc": "35030:1:55", + "nodeType": "YulLiteral", + "src": "35030:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "35021:5:55", + "nodeType": "YulTypedName", + "src": "35021:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35066:67:55", + "nodeType": "YulBlock", + "src": "35066:67:55", + "statements": [ + { + "nativeSrc": "35084:35:55", + "nodeType": "YulAssignment", + "src": "35084:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "35103:3:55", + "nodeType": "YulIdentifier", + "src": "35103:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "35108:9:55", + "nodeType": "YulIdentifier", + "src": "35108:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35099:3:55", + "nodeType": "YulIdentifier", + "src": "35099:3:55" + }, + "nativeSrc": "35099:19:55", + "nodeType": "YulFunctionCall", + "src": "35099:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35093:5:55", + "nodeType": "YulIdentifier", + "src": "35093:5:55" + }, + "nativeSrc": "35093:26:55", + "nodeType": "YulFunctionCall", + "src": "35093:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "35084:5:55", + "nodeType": "YulIdentifier", + "src": "35084:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "35047:6:55", + "nodeType": "YulIdentifier", + "src": "35047:6:55" + }, + "nativeSrc": "35044:89:55", + "nodeType": "YulIf", + "src": "35044:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35153:4:55", + "nodeType": "YulIdentifier", + "src": "35153:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "35212:5:55", + "nodeType": "YulIdentifier", + "src": "35212:5:55" + }, + { + "name": "newLen", + "nativeSrc": "35219:6:55", + "nodeType": "YulIdentifier", + "src": "35219:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "35159:52:55", + "nodeType": "YulIdentifier", + "src": "35159:52:55" + }, + "nativeSrc": "35159:67:55", + "nodeType": "YulFunctionCall", + "src": "35159:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "35146:6:55", + "nodeType": "YulIdentifier", + "src": "35146:6:55" + }, + "nativeSrc": "35146:81:55", + "nodeType": "YulFunctionCall", + "src": "35146:81:55" + }, + "nativeSrc": "35146:81:55", + "nodeType": "YulExpressionStatement", + "src": "35146:81:55" + } + ] + }, + "nativeSrc": "34995:242:55", + "nodeType": "YulCase", + "src": "34995:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34303:6:55", + "nodeType": "YulIdentifier", + "src": "34303:6:55" + }, + { + "kind": "number", + "nativeSrc": "34311:2:55", + "nodeType": "YulLiteral", + "src": "34311:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "34300:2:55", + "nodeType": "YulIdentifier", + "src": "34300:2:55" + }, + "nativeSrc": "34300:14:55", + "nodeType": "YulFunctionCall", + "src": "34300:14:55" + }, + "nativeSrc": "34293:944:55", + "nodeType": "YulSwitch", + "src": "34293:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nativeSrc": "33900:1343:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "33979:4:55", + "nodeType": "YulTypedName", + "src": "33979:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "33985:3:55", + "nodeType": "YulTypedName", + "src": "33985:3:55", + "type": "" + } + ], + "src": "33900:1343:55" + }, + { + "body": { + "nativeSrc": "35377:145:55", + "nodeType": "YulBlock", + "src": "35377:145:55", + "statements": [ + { + "nativeSrc": "35387:26:55", + "nodeType": "YulAssignment", + "src": "35387:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "35399:9:55", + "nodeType": "YulIdentifier", + "src": "35399:9:55" + }, + { + "kind": "number", + "nativeSrc": "35410:2:55", + "nodeType": "YulLiteral", + "src": "35410:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35395:3:55", + "nodeType": "YulIdentifier", + "src": "35395:3:55" + }, + "nativeSrc": "35395:18:55", + "nodeType": "YulFunctionCall", + "src": "35395:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "35387:4:55", + "nodeType": "YulIdentifier", + "src": "35387:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "35429:9:55", + "nodeType": "YulIdentifier", + "src": "35429:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "35444:6:55", + "nodeType": "YulIdentifier", + "src": "35444:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35460:3:55", + "nodeType": "YulLiteral", + "src": "35460:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "35465:1:55", + "nodeType": "YulLiteral", + "src": "35465:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35456:3:55", + "nodeType": "YulIdentifier", + "src": "35456:3:55" + }, + "nativeSrc": "35456:11:55", + "nodeType": "YulFunctionCall", + "src": "35456:11:55" + }, + { + "kind": "number", + "nativeSrc": "35469:1:55", + "nodeType": "YulLiteral", + "src": "35469:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "35452:3:55", + "nodeType": "YulIdentifier", + "src": "35452:3:55" + }, + "nativeSrc": "35452:19:55", + "nodeType": "YulFunctionCall", + "src": "35452:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35440:3:55", + "nodeType": "YulIdentifier", + "src": "35440:3:55" + }, + "nativeSrc": "35440:32:55", + "nodeType": "YulFunctionCall", + "src": "35440:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35422:6:55", + "nodeType": "YulIdentifier", + "src": "35422:6:55" + }, + "nativeSrc": "35422:51:55", + "nodeType": "YulFunctionCall", + "src": "35422:51:55" + }, + "nativeSrc": "35422:51:55", + "nodeType": "YulExpressionStatement", + "src": "35422:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "35493:9:55", + "nodeType": "YulIdentifier", + "src": "35493:9:55" + }, + { + "kind": "number", + "nativeSrc": "35504:2:55", + "nodeType": "YulLiteral", + "src": "35504:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35489:3:55", + "nodeType": "YulIdentifier", + "src": "35489:3:55" + }, + "nativeSrc": "35489:18:55", + "nodeType": "YulFunctionCall", + "src": "35489:18:55" + }, + { + "name": "value1", + "nativeSrc": "35509:6:55", + "nodeType": "YulIdentifier", + "src": "35509:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35482:6:55", + "nodeType": "YulIdentifier", + "src": "35482:6:55" + }, + "nativeSrc": "35482:34:55", + "nodeType": "YulFunctionCall", + "src": "35482:34:55" + }, + "nativeSrc": "35482:34:55", + "nodeType": "YulExpressionStatement", + "src": "35482:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "35248:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "35338:9:55", + "nodeType": "YulTypedName", + "src": "35338:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "35349:6:55", + "nodeType": "YulTypedName", + "src": "35349:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "35357:6:55", + "nodeType": "YulTypedName", + "src": "35357:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "35368:4:55", + "nodeType": "YulTypedName", + "src": "35368:4:55", + "type": "" + } + ], + "src": "35248:274:55" + }, + { + "body": { + "nativeSrc": "35559:95:55", + "nodeType": "YulBlock", + "src": "35559:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35576:1:55", + "nodeType": "YulLiteral", + "src": "35576:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35583:3:55", + "nodeType": "YulLiteral", + "src": "35583:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "35588:10:55", + "nodeType": "YulLiteral", + "src": "35588:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35579:3:55", + "nodeType": "YulIdentifier", + "src": "35579:3:55" + }, + "nativeSrc": "35579:20:55", + "nodeType": "YulFunctionCall", + "src": "35579:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35569:6:55", + "nodeType": "YulIdentifier", + "src": "35569:6:55" + }, + "nativeSrc": "35569:31:55", + "nodeType": "YulFunctionCall", + "src": "35569:31:55" + }, + "nativeSrc": "35569:31:55", + "nodeType": "YulExpressionStatement", + "src": "35569:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35616:1:55", + "nodeType": "YulLiteral", + "src": "35616:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "35619:4:55", + "nodeType": "YulLiteral", + "src": "35619:4:55", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35609:6:55", + "nodeType": "YulIdentifier", + "src": "35609:6:55" + }, + "nativeSrc": "35609:15:55", + "nodeType": "YulFunctionCall", + "src": "35609:15:55" + }, + "nativeSrc": "35609:15:55", + "nodeType": "YulExpressionStatement", + "src": "35609:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35640:1:55", + "nodeType": "YulLiteral", + "src": "35640:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "35643:4:55", + "nodeType": "YulLiteral", + "src": "35643:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "35633:6:55", + "nodeType": "YulIdentifier", + "src": "35633:6:55" + }, + "nativeSrc": "35633:15:55", + "nodeType": "YulFunctionCall", + "src": "35633:15:55" + }, + "nativeSrc": "35633:15:55", + "nodeType": "YulExpressionStatement", + "src": "35633:15:55" + } + ] + }, + "name": "panic_error_0x21", + "nativeSrc": "35527:127:55", + "nodeType": "YulFunctionDefinition", + "src": "35527:127:55" + }, + { + "body": { + "nativeSrc": "35796:150:55", + "nodeType": "YulBlock", + "src": "35796:150:55", + "statements": [ + { + "nativeSrc": "35806:27:55", + "nodeType": "YulVariableDeclaration", + "src": "35806:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "35826:6:55", + "nodeType": "YulIdentifier", + "src": "35826:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35820:5:55", + "nodeType": "YulIdentifier", + "src": "35820:5:55" + }, + "nativeSrc": "35820:13:55", + "nodeType": "YulFunctionCall", + "src": "35820:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "35810:6:55", + "nodeType": "YulTypedName", + "src": "35810:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "35881:6:55", + "nodeType": "YulIdentifier", + "src": "35881:6:55" + }, + { + "kind": "number", + "nativeSrc": "35889:4:55", + "nodeType": "YulLiteral", + "src": "35889:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35877:3:55", + "nodeType": "YulIdentifier", + "src": "35877:3:55" + }, + "nativeSrc": "35877:17:55", + "nodeType": "YulFunctionCall", + "src": "35877:17:55" + }, + { + "name": "pos", + "nativeSrc": "35896:3:55", + "nodeType": "YulIdentifier", + "src": "35896:3:55" + }, + { + "name": "length", + "nativeSrc": "35901:6:55", + "nodeType": "YulIdentifier", + "src": "35901:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "35842:34:55", + "nodeType": "YulIdentifier", + "src": "35842:34:55" + }, + "nativeSrc": "35842:66:55", + "nodeType": "YulFunctionCall", + "src": "35842:66:55" + }, + "nativeSrc": "35842:66:55", + "nodeType": "YulExpressionStatement", + "src": "35842:66:55" + }, + { + "nativeSrc": "35917:23:55", + "nodeType": "YulAssignment", + "src": "35917:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "35928:3:55", + "nodeType": "YulIdentifier", + "src": "35928:3:55" + }, + { + "name": "length", + "nativeSrc": "35933:6:55", + "nodeType": "YulIdentifier", + "src": "35933:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35924:3:55", + "nodeType": "YulIdentifier", + "src": "35924:3:55" + }, + "nativeSrc": "35924:16:55", + "nodeType": "YulFunctionCall", + "src": "35924:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "35917:3:55", + "nodeType": "YulIdentifier", + "src": "35917:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "35659:287:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "35772:3:55", + "nodeType": "YulTypedName", + "src": "35772:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "35777:6:55", + "nodeType": "YulTypedName", + "src": "35777:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "35788:3:55", + "nodeType": "YulTypedName", + "src": "35788:3:55", + "type": "" + } + ], + "src": "35659:287:55" + }, + { + "body": { + "nativeSrc": "36132:217:55", + "nodeType": "YulBlock", + "src": "36132:217:55", + "statements": [ + { + "nativeSrc": "36142:27:55", + "nodeType": "YulAssignment", + "src": "36142:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36154:9:55", + "nodeType": "YulIdentifier", + "src": "36154:9:55" + }, + { + "kind": "number", + "nativeSrc": "36165:3:55", + "nodeType": "YulLiteral", + "src": "36165:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36150:3:55", + "nodeType": "YulIdentifier", + "src": "36150:3:55" + }, + "nativeSrc": "36150:19:55", + "nodeType": "YulFunctionCall", + "src": "36150:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "36142:4:55", + "nodeType": "YulIdentifier", + "src": "36142:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36185:9:55", + "nodeType": "YulIdentifier", + "src": "36185:9:55" + }, + { + "name": "value0", + "nativeSrc": "36196:6:55", + "nodeType": "YulIdentifier", + "src": "36196:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36178:6:55", + "nodeType": "YulIdentifier", + "src": "36178:6:55" + }, + "nativeSrc": "36178:25:55", + "nodeType": "YulFunctionCall", + "src": "36178:25:55" + }, + "nativeSrc": "36178:25:55", + "nodeType": "YulExpressionStatement", + "src": "36178:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36223:9:55", + "nodeType": "YulIdentifier", + "src": "36223:9:55" + }, + { + "kind": "number", + "nativeSrc": "36234:2:55", + "nodeType": "YulLiteral", + "src": "36234:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36219:3:55", + "nodeType": "YulIdentifier", + "src": "36219:3:55" + }, + "nativeSrc": "36219:18:55", + "nodeType": "YulFunctionCall", + "src": "36219:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "36243:6:55", + "nodeType": "YulIdentifier", + "src": "36243:6:55" + }, + { + "kind": "number", + "nativeSrc": "36251:4:55", + "nodeType": "YulLiteral", + "src": "36251:4:55", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36239:3:55", + "nodeType": "YulIdentifier", + "src": "36239:3:55" + }, + "nativeSrc": "36239:17:55", + "nodeType": "YulFunctionCall", + "src": "36239:17:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36212:6:55", + "nodeType": "YulIdentifier", + "src": "36212:6:55" + }, + "nativeSrc": "36212:45:55", + "nodeType": "YulFunctionCall", + "src": "36212:45:55" + }, + "nativeSrc": "36212:45:55", + "nodeType": "YulExpressionStatement", + "src": "36212:45:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36277:9:55", + "nodeType": "YulIdentifier", + "src": "36277:9:55" + }, + { + "kind": "number", + "nativeSrc": "36288:2:55", + "nodeType": "YulLiteral", + "src": "36288:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36273:3:55", + "nodeType": "YulIdentifier", + "src": "36273:3:55" + }, + "nativeSrc": "36273:18:55", + "nodeType": "YulFunctionCall", + "src": "36273:18:55" + }, + { + "name": "value2", + "nativeSrc": "36293:6:55", + "nodeType": "YulIdentifier", + "src": "36293:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36266:6:55", + "nodeType": "YulIdentifier", + "src": "36266:6:55" + }, + "nativeSrc": "36266:34:55", + "nodeType": "YulFunctionCall", + "src": "36266:34:55" + }, + "nativeSrc": "36266:34:55", + "nodeType": "YulExpressionStatement", + "src": "36266:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36320:9:55", + "nodeType": "YulIdentifier", + "src": "36320:9:55" + }, + { + "kind": "number", + "nativeSrc": "36331:2:55", + "nodeType": "YulLiteral", + "src": "36331:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36316:3:55", + "nodeType": "YulIdentifier", + "src": "36316:3:55" + }, + "nativeSrc": "36316:18:55", + "nodeType": "YulFunctionCall", + "src": "36316:18:55" + }, + { + "name": "value3", + "nativeSrc": "36336:6:55", + "nodeType": "YulIdentifier", + "src": "36336:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36309:6:55", + "nodeType": "YulIdentifier", + "src": "36309:6:55" + }, + "nativeSrc": "36309:34:55", + "nodeType": "YulFunctionCall", + "src": "36309:34:55" + }, + "nativeSrc": "36309:34:55", + "nodeType": "YulExpressionStatement", + "src": "36309:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nativeSrc": "35951:398:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "36077:9:55", + "nodeType": "YulTypedName", + "src": "36077:9:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "36088:6:55", + "nodeType": "YulTypedName", + "src": "36088:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "36096:6:55", + "nodeType": "YulTypedName", + "src": "36096:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "36104:6:55", + "nodeType": "YulTypedName", + "src": "36104:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "36112:6:55", + "nodeType": "YulTypedName", + "src": "36112:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "36123:4:55", + "nodeType": "YulTypedName", + "src": "36123:4:55", + "type": "" + } + ], + "src": "35951:398:55" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_array_string_dyn(value, pos) -> end\n {\n let pos_1 := pos\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, 0x20)\n let tail := add(add(pos_1, shl(5, length)), 0x20)\n let srcPtr := add(value, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail, pos_1), not(31)))\n tail := abi_encode_string(mload(srcPtr), tail)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_string_dyn(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IERC721_$4914t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_array_string_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := sub(shl(64, 1), 1)\n if gt(_1, _3) { panic_error_0x41() }\n let _4 := shl(5, _1)\n let dst := allocate_memory(add(_4, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _4), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _3)\n {\n let _5 := 0\n revert(_5, _5)\n }\n mstore(dst, abi_decode_bytes(add(add(offset, innerOffset), _2), end))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_array_string_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n let offset := calldataload(add(headStart, 224))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value7 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let value_2 := calldataload(add(headStart, 96))\n validator_revert_address(value_2)\n value3 := value_2\n let value_3 := calldataload(add(headStart, 128))\n validator_revert_address(value_3)\n value4 := value_3\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n let value := calldataload(add(headStart, 64))\n validator_revert_bool(value)\n value2 := value\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_1 := calldataload(add(headStart, 128))\n validator_revert_address(value_1)\n value4 := value_1\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_struct_Service(value, pos) -> end\n {\n let tail := add(pos, 0x60)\n mstore(pos, mload(value))\n let _1 := 0x20\n mstore(add(pos, 0x20), iszero(iszero(mload(add(value, 0x20)))))\n let memberValue0 := mload(add(value, 0x40))\n mstore(add(pos, 0x40), 0x60)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 128)\n let tail_1 := add(add(pos, shl(5, length)), 128)\n let srcPtr := add(memberValue0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, add(sub(tail_1, pos), not(127)))\n tail_1 := abi_encode_string(mload(srcPtr), tail_1)\n srcPtr := add(srcPtr, _1)\n pos_1 := add(pos_1, _1)\n }\n end := tail_1\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$11914_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_string_dyn(value0, add(headStart, 64))\n let _1 := 32\n mstore(add(headStart, _1), sub(tail_1, headStart))\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(tail_1, _1)\n let tail_2 := add(add(tail_1, shl(5, length)), _1)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n tail_2 := abi_encode_struct_Service(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_decode_tuple_t_contract$_IERC20_$4445t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_decode_tuple_t_string_memory_ptrt_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let value := calldataload(add(headStart, 32))\n validator_revert_bool(value)\n value1 := value\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_struct$_Service_$11914_memory_ptr__to_t_struct$_Service_$11914_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_struct_Service(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := mload(_1)\n let array := allocate_memory(array_allocation_size_bytes(_2))\n mstore(array, _2)\n if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), _2)\n value0 := array\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n mstore(headStart, value0)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n mstore(add(headStart, 224), value7)\n }\n function abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 192)\n tail := abi_encode_string(value2, add(headStart, 192))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), and(value5, _1))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, shl(240, 6401))\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_string(value1, add(headStart, 64))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let ret := 0\n let slotValue := sload(value0)\n let length := extract_byte_array_length(slotValue)\n let _1 := 1\n switch and(slotValue, 1)\n case 0 {\n mstore(pos, and(slotValue, not(255)))\n ret := add(pos, mul(length, iszero(iszero(length))))\n }\n case 1 {\n mstore(0, value0)\n let _2 := 0x20\n let dataPos := keccak256(0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, _2) }\n {\n mstore(add(pos, i), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(pos, length)\n }\n end := ret\n }\n function copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage(slot, src)\n {\n if eq(slot, src) { leave }\n let newLen := extract_byte_array_length(sload(src))\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let src_1 := array_dataslot_string_storage(src)\n let dstPtr := array_dataslot_string_storage(slot)\n let i := srcOffset\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, sload(add(src_1, srcOffset)))\n let _1 := 1\n dstPtr := add(dstPtr, _1)\n srcOffset := add(srcOffset, _1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := sload(add(src_1, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := sload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), iszero(iszero(value1)))\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "837": [ + { + "length": 32, + "start": 10492 + }, + { + "length": 32, + "start": 10533 + }, + { + "length": 32, + "start": 11387 + } + ] + }, + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4487 + }, + { + "length": 20, + "start": 5772 + } + ] + } + }, + "object": "6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613ee7565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fbb565b3480156103b457600080fd5b506103ca600080516020614ed183398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613fce565b34801561040657600080fd5b506104256104153660046140ea565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614155565b610e48565b34801561046a57600080fd5b5061047e610479366004614189565b610e56565b005b34801561048c57600080fd5b5061047e61049b366004614268565b610f03565b3480156104ac57600080fd5b506103ca600080516020614ef183398151915281565b3480156104ce57600080fd5b506104e26104dd36600461429c565b610f64565b60405161037d929190614337565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614350565b611145565b34801561053157600080fd5b5061047e610540366004614350565b611165565b34801561055157600080fd5b5061047e610560366004614369565b611201565b34801561057157600080fd5b5061039b610580366004614155565b611223565b34801561059157600080fd5b506103ca600080516020614e9183398151915281565b3480156105b357600080fd5b5061047e6105c2366004614399565b611231565b3480156105d357600080fd5b5061047e6105e2366004614369565b6113ed565b3480156105f357600080fd5b506103ca600080516020614df183398151915281565b34801561061557600080fd5b5061047e610624366004614268565b611420565b34801561063557600080fd5b5061047e610644366004614401565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614453565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144c8565b6114e3565b61047e6106ac366004614536565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d9190614585565b3480156106df57600080fd5b5061047e6106ee366004614599565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145c5565b611672565b34801561073457600080fd5b5061047e610743366004614350565b6116fe565b34801561075457600080fd5b5061039b610763366004614350565b611739565b34801561077457600080fd5b506103ca600080516020614e1183398151915281565b34801561079657600080fd5b5061047e6107a536600461429c565b611841565b3480156107b657600080fd5b506107bf611a2a565b60405161037d92919061462e565b3480156107d957600080fd5b5061047e6107e836600461463c565b611a4c565b3480156107f957600080fd5b5061047e610808366004614659565b611a6d565b34801561081957600080fd5b5061047e61082836600461467b565b611a8f565b34801561083957600080fd5b5061047e61084836600461463c565b611ab9565b34801561085957600080fd5b50610862611ada565b60405161037d929190614752565b34801561087c57600080fd5b506103ca600080516020614f1183398151915281565b34801561089e57600080fd5b506108b26108ad36600461463c565b611c9f565b60405161037d91906147c4565b3480156108cb57600080fd5b506103ca600080516020614eb183398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461467b565b611d84565b34801561090d57600080fd5b5061037161091c366004614350565b611dae565b34801561092d57600080fd5b506106c661093c366004614659565b611ddf565b34801561094d57600080fd5b5061037161095c366004614369565b611e0d565b34801561096d57600080fd5b5061098161097c3660046147d7565b611e43565b60405161037d9493929190614805565b34801561099d57600080fd5b5061047e6109ac366004614189565b611e9a565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614820565b611eed565b3480156109f257600080fd5b5061047e610a0136600461483d565b611f0e565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614155565b611f38565b348015610a6357600080fd5b506106c6611f46565b348015610a7857600080fd5b506103ca611f61565b348015610a8d57600080fd5b5061047e610a9c36600461463c565b611f76565b348015610aad57600080fd5b506103ca610abc3660046144c8565b612011565b348015610acd57600080fd5b506103ca610adc366004614350565b61204d565b348015610aed57600080fd5b5061047e610afc366004614536565b612079565b348015610b0d57600080fd5b506103ca600080516020614e7183398151915281565b348015610b2f57600080fd5b50610b3861209b565b60405161037d9190614883565b348015610b5157600080fd5b5061047e610b60366004614369565b6120b5565b348015610b7157600080fd5b50610b85610b80366004614350565b6120d1565b60405161037d91906148c4565b348015610b9e57600080fd5b50610371610bad36600461463c565b6121fa565b348015610bbe57600080fd5b5061047e610bcd36600461463c565b612214565b348015610bde57600080fd5b506103ca612235565b348015610bf357600080fd5b50610b3861224a565b348015610c0857600080fd5b506103ca610c17366004614350565b612264565b348015610c2857600080fd5b5061047e610c373660046148d7565b61228f565b348015610c4857600080fd5b506103ca6122b9565b348015610c5d57600080fd5b506107bf610c6c36600461463c565b6122c4565b348015610c7d57600080fd5b5061047e610c8c366004614599565b6122ff565b348015610c9d57600080fd5b5061047e610cac366004614155565b612387565b348015610cbd57600080fd5b506103ca600080516020614e3183398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123b0565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d27614027565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f46565b6001600160a01b0316635a81a626848381518110610d9157610d91614930565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc9190810190614946565b828281518110610e0e57610e0e614930565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123e5565b9050610e4281600901612409565b91505090565b6000610cf8610c1783612416565b600080516020614eb1833981519152610e6e8161248c565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e71833981519152610f1b8161248c565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614930565b6020026020010151612416565b9050610f5681612496565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f929190614585565b60405180910390fd5b610fa3611f46565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce9190614585565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149b3565b61102e5788604051633f2c64af60e01b8152600401610f929190614585565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a61250d565b915061106c826121fa565b61108b578160405163248d101d60e11b8152600401610f929190614585565b6000611095612539565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a9160040161462e565b8054891161110d578054604051632256490160e11b8152610f92918b9160040161462e565b600181015461111c90896149e6565b925050509850989650505050505050565b6000806111386123e5565b6003015460ff1692915050565b60008061115061255d565b60009384526020525050604090206001015490565b61116d612581565b600080516020614f118339815191526111858161248c565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c5929190614337565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125b7565b50565b61120a82611145565b6112138161248c565b61121d83836125c8565b50505050565b6060610cf861076383612416565b600061123b61260a565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db61262e565b6112e361262e565b6112eb612638565b6112f66000886125c8565b5061130f600080516020614e71833981519152886125c8565b50611328600080516020614e91833981519152886125c8565b50611341600080516020614e31833981519152876125c8565b50600061134c6126d2565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e800006201518061139882826126f6565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612719565b600080516020614e718339815191526114388161248c565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614930565b905061146681612752565b5060010161143b565b600080516020614e718339815191526114878161248c565b610f5f61149384612416565b836127c0565b606060006114a56123e5565b9050610e4281612409565b600080516020614e718339815191526114c88161248c565b6114dc6114d486612416565b85848661281b565b5050505050565b60408051600080516020614ed183398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d6128f1565b6115768261297f565b6115808282612ac2565b5050565b60008061158f6126d2565b600101546001600160a01b031692915050565b600080516020614e918339815191526115ba8161248c565b6115c382612b76565b6115db600080516020614e11833981519152846125c8565b506115f4600080516020614f11833981519152846125c8565b5061160d600080516020614df1833981519152846125c8565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bd9565b600061165f612c70565b50600080516020614e5183398151915290565b600080516020614f1183398151915261168a8161248c565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d2969594939291906149f9565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b611706612581565b600080516020614df183398151915261171e8161248c565b61172782612b76565b61173082612cb9565b506111fe6125b7565b606060006117456123e5565b90506117518382612dee565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a43565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a43565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b611849612581565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e18565b600061271061187b611f46565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614a7d565b6118e69084614a96565b6118f09190614aad565b905060006118fe82846149e6565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612539565b9050838160010160008282546119399190614acf565b9091555050505b6119bc8261194c611f46565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614ae2565b6001600160a01b031690612bd9565b6119cf6001600160a01b038c1682612bd9565b896001600160a01b0316846001600160a01b03167f7518bccc58ad7b6eb0ba4b9e696d83bfc6252df80a4e9cf24e64b10be21ecde48b8486604051611a1693929190614aff565b60405180910390a350505050610ef96125b7565b6000806000611a37612e83565b90508060020154816003015492509250509091565b600080516020614e71833981519152611a648161248c565b61158082612ea7565b600080516020614e91833981519152611a858161248c565b610f5f8383612f13565b600080516020614e71833981519152611aa78161248c565b610f5f611ab384612416565b83612f60565b600080516020614e71833981519152611ad18161248c565b61158082612fd6565b6060806000611ae7611499565b9050600081516001600160401b03811115611b0457611b04614027565b604051908082528060200260200182016040528015611b3757816020015b6060815260200190600190039081611b225790505b509050600082516001600160401b03811115611b5557611b55614027565b604051908082528060200260200182016040528015611b8e57816020015b611b7b613de8565b815260200190600190039081611b735790505b50905060005b8351811015611c9457611ba5611f46565b6001600160a01b0316635a81a626858381518110611bc557611bc5614930565b60200260200101516040518263ffffffff1660e01b8152600401611beb91815260200190565b600060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c309190810190614946565b838281518110611c4257611c42614930565b6020026020010181905250611c6f848281518110611c6257611c62614930565b60200260200101516120d1565b828281518110611c8157611c81614930565b6020908102919091010152600101611b94565b509094909350915050565b60606000611cab6123e5565b9050611cba6006820184613042565b611cd9578260405163ba650b5f60e01b8152600401610f929190614585565b6001600160a01b038316600090815260088201602052604090208054611cfe90614a43565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2a90614a43565b8015611d775780601f10611d4c57610100808354040283529160200191611d77565b820191906000526020600020905b815481529060010190602001808311611d5a57829003601f168201915b5050505050915050919050565b600080516020614e71833981519152611d9c8161248c565b610f5f611da884612416565b83613057565b600080611db96123e5565b9050611dc58382612dee565b600092835260020160205250604090206001015460ff1690565b600080611dea6131bf565b6000858152602082905260409020909150611e0590846131e3565b949350505050565b600080611e1861255d565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e53612539565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614eb1833981519152611eb28161248c565b6001600160a01b038316611ed957604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b03851684846131ef565b600080516020614e71833981519152611f058161248c565b61158082613247565b600080516020614e71833981519152611f268161248c565b610f5f611f3284612416565b8361329e565b6000610cf861091c83612416565b600080611f516126d2565b546001600160a01b031692915050565b600080611f6c6126d2565b6002015492915050565b600080516020614e91833981519152611f8e8161248c565b611fa6600080516020614e1183398151915283612719565b50611fbf600080516020614f1183398151915283612719565b50611fd8600080516020614df183398151915283612719565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b600061201b6122b9565b61202a898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120586131bf565b60008481526020829052604090209091506120729061330b565b9392505050565b600080516020614e718339815191526120918161248c565b610f5f8383613315565b606060006120a76123e5565b9050610e4260048201612409565b6120be82611145565b6120c78161248c565b61121d8383612719565b6120d9613de8565b60006120e36123e5565b90506120ef8382612dee565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156121eb57838290600052602060002001805461215e90614a43565b80601f016020809104026020016040519081016040528092919081815260200182805461218a90614a43565b80156121d75780601f106121ac576101008083540402835291602001916121d7565b820191906000526020600020905b8154815290600101906020018083116121ba57829003601f168201915b50505050508152602001906001019061213f565b50505091525090949350505050565b6000610cf8600080516020614e1183398151915283611e0d565b600080516020614e7183398151915261222c8161248c565b611580826133b1565b600080612240612539565b6001015492915050565b606060006122566123e5565b9050610e4281600601612409565b60008061226f6123e5565b905061227b8382612dee565b600092835260020160205250604090205490565b600080516020614e718339815191526122a78161248c565b610f5f6122b384612416565b8361344a565b600080611f6c612539565b60008060006122d1612e83565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612307612581565b600080516020614eb183398151915261231f8161248c565b61232882612b76565b61233b6001600160a01b03841683612bd9565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161237691815260200190565b60405180910390a2506115806125b7565b600080516020614e7183398151915261239f8161248c565b6115806123ab83612416565b6134b9565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061207283613554565b6000612420611f46565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161244b91906147c4565b602060405180830381865afa158015612468573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614a7d565b6111fe81336135b0565b60006124a06123e5565b905060006124b160098301846135db565b9050806124d457604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b60008061251f8a8a8a8a8a8a8a612011565b905061252b81846135e7565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600061258b613611565b8054909150600119016125b157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125c1613611565b6001905550565b6000806125d36131bf565b905060006125e18585613635565b90508015611e0557600085815260208390526040902061260190856136d6565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6126366136eb565b565b6126406136eb565b600061264a612539565b6040519091506126b290600080516020614ef1833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614805565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b6126fe6136eb565b6000612708612e83565b600281019390935550600390910155565b6000806127246131bf565b905060006127328585613710565b90508015611e055760008581526020839052604090206126019085613788565b600061275c6123e5565b9050600061276d600983018461379d565b90508061279057604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612500565b60006127ca6123e5565b90506127d68382612dee565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b19789790612500908590859061462e565b60006128256123e5565b9050600061283382876135db565b905080612855576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128b3938501929190910190613e0b565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061296157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129556137a9565b6001600160a01b031614155b156126365760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e318339815191526129978161248c565b60006129a1611f46565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a029190614ae2565b90506000612a0e6137a9565b9050836001600160a01b0316816001600160a01b031603612a465780846040516382afabc160e01b8152600401610f92929190614b15565b816001600160a01b0316846001600160a01b031614612a7c57818460405163699a021f60e11b8152600401610f92929190614b15565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b1c575060408051601f3d908101601f19168201909252612b1991810190614a7d565b60015b612b3b5781604051634c9c8ce360e01b8152600401610f929190614585565b600080516020614e518339815191528114612b6c57604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137c5565b6000612b80611f61565b90506000612b8c612235565b905081811015610f5f576000612ba282846149e6565b90506000612bb082476149e6565b9050808511156114dc578082866040516344c8760560e11b8152600401610f9293929190614aff565b80471015612bfc573060405163cd78605960e01b8152600401610f929190614585565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c49576040519150601f19603f3d011682016040523d82523d6000602084013e612c4e565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126365760405163703e46dd60e11b815260040160405180910390fd5b6000612cc3612e83565b90508060020154821115612cf257806002015482604051631728bc5b60e31b8152600401610f9292919061462e565b6003810154336000908152602083905260409020544291612d1291614acf565b811115612d3a5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d5c908590614acf565b1115612d835781600201548360405163d54b188760e01b8152600401610f9292919061462e565b33600090815260018301602052604081208054859290612da4908490614acf565b90915550612db490503384612bd9565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612df8818361381b565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e22612539565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612eb16123e5565b90506000612ec260048301846136d6565b905080612ee45782604051632872fbf960e11b8152600401610f929190614585565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f836040516125009190614585565b6000612f1d612e83565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e90612500908590859061462e565b6000612f6a6123e5565b9050612f768382612dee565b600083815260028083016020908152604083209091018054600181018255908352912001612fa48382614b94565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612500929190614c4d565b6000612fe06123e5565b90506000612ff16004830184613788565b9050806130135782604051631532e67160e21b8152600401610f929190614585565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af2836040516125009190614585565b6000612072836001600160a01b038416613823565b60006130616123e5565b905061306d8382612dee565b600083815260028083016020526040822001905b81548110156114dc578360405160200161309b9190614c66565b604051602081830303815290604052805190602001208282815481106130c3576130c3614930565b906000526020600020016040516020016130dd9190614c82565b60405160208183030381529060405280519060200120036131b75781548290613108906001906149e6565b8154811061311857613118614930565b9060005260206000200182828154811061313457613134614930565b90600052602060002001908161314a9190614cf8565b508180548061315b5761315b614dc4565b6001900381819060005260206000200160006131779190613e61565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131aa929190614c4d565b60405180910390a16114dc565b600101613081565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b6000612072838361383b565b610f5f83846001600160a01b031663a9059cbb8585604051602401613215929190614337565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613865565b60006132516123e5565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132a86123e5565b90506132b48382612dee565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612500565b6000610cf8825490565b600061331f6123e5565b9050600061333060068301856136d6565b9050806133525783604051631a6107e360e31b8152600401610f929190614585565b6001600160a01b038416600090815260088301602052604090206133768482614b94565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133bb6123e5565b905060006133cc6006830184613788565b9050806133ee578260405163ba650b5f60e01b8152600401610f929190614585565b6001600160a01b0383166000908152600883016020526040812061341191613e61565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134546123e5565b90506134608382612dee565b6000838152600280830160209081526040909220845161348893919092019190850190613e0b565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612500565b60006134c36123e5565b905060006134d1828461379d565b9050806134f457604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061352290830182613e9b565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612500565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135a457602002820191906000526020600020905b815481526020019060010190808311613590575b50505050509050919050565b6135ba8282611e0d565b61158057808260405163e2517d3f60e01b8152600401610f92929190614337565b600061207283836138bf565b6000806000806135f78686613909565b9250925092506136078282613956565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60008061364061255d565b905061364c8484611e0d565b6136cc576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136823390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b6000612072836001600160a01b0384166138bf565b6136f3613a0f565b61263657604051631afcd79f60e31b815260040160405180910390fd5b60008061371b61255d565b90506137278484611e0d565b156136cc576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b6000612072836001600160a01b038416613a29565b60006120728383613a29565b600080516020614e51833981519152546001600160a01b031690565b6137ce82613b12565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561381357610f5f8282613b6e565b611580613be4565b600061207283835b60009081526001919091016020526040902054151590565b600082600001828154811061385257613852614930565b9060005260206000200154905092915050565b600061387a6001600160a01b03841683613c03565b9050805160001415801561389f57508080602001905181019061389d91906149b3565b155b15610f5f5782604051635274afe760e01b8152600401610f929190614585565b60006138cb8383613823565b61390157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139435760208401516040850151606086015160001a61393588828585613c11565b95509550955050505061394f565b50508151600091506002905b9250925092565b600082600381111561396a5761396a614dda565b03613973575050565b600182600381111561398757613987614dda565b036139a55760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139b9576139b9614dda565b036139da5760405163fce698f760e01b815260048101829052602401610f92565b60038260038111156139ee576139ee614dda565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a1961260a565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136cc576000613a4d6001836149e6565b8554909150600090613a61906001906149e6565b9050808214613ac6576000866000018281548110613a8157613a81614930565b9060005260206000200154905080876000018481548110613aa457613aa4614930565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ad757613ad7614dc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b3f5780604051634c9c8ce360e01b8152600401610f929190614585565b600080516020614e5183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613b8b9190614c66565b600060405180830381855af49150503d8060008114613bc6576040519150601f19603f3d011682016040523d82523d6000602084013e613bcb565b606091505b5091509150613bdb858383613cd6565b95945050505050565b34156126365760405163b398979f60e01b815260040160405180910390fd5b606061207283836000613d22565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c425750600091506003905082613ccc565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613c96573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613cc257506000925060019150829050613ccc565b9250600091508190505b9450945094915050565b606082613ceb57613ce682613dbf565b612072565b8151158015613d0257506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f929190614585565b606081471015613d47573060405163cd78605960e01b8152600401610f929190614585565b600080856001600160a01b03168486604051613d639190614c66565b60006040518083038185875af1925050503d8060008114613da0576040519150601f19603f3d011682016040523d82523d6000602084013e613da5565b606091505b5091509150613db5868383613cd6565b9695505050505050565b805115613dcf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e51579160200282015b82811115613e515782518290613e419082614b94565b5091602001919060010190613e2b565b50613e5d929150613eb5565b5090565b508054613e6d90614a43565b6000825580601f10613e7d575050565b601f0160209004906000526020600020908101906111fe9190613ed2565b50805460008255906000526020600020908101906111fe91905b80821115613e5d576000613ec98282613e61565b50600101613eb5565b5b80821115613e5d5760008155600101613ed3565b600060208284031215613ef957600080fd5b81356001600160e01b03198116811461207257600080fd5b60005b83811015613f2c578181015183820152602001613f14565b50506000910152565b60008151808452613f4d816020860160208601613f11565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fae57601f19868403018952613f9c838351613f35565b98840198925090830190600101613f80565b5090979650505050505050565b6020815260006120726020830184613f61565b6020808252825182820181905260009190848201906040850190845b8181101561400657835183529284019291840191600101613fea565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561406557614065614027565b604052919050565b60006001600160401b0382111561408657614086614027565b50601f01601f191660200190565b600082601f8301126140a557600080fd5b81356140b86140b38261406d565b61403d565b8181528460208386010111156140cd57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561410057600080fd5b843561410b81614012565b9350602085013561411b81614012565b92506040850135915060608501356001600160401b0381111561413d57600080fd5b61414987828801614094565b91505092959194509250565b60006020828403121561416757600080fd5b81356001600160401b0381111561417d57600080fd5b611e0584828501614094565b60008060006060848603121561419e57600080fd5b83356141a981614012565b925060208401356141b981614012565b929592945050506040919091013590565b600082601f8301126141db57600080fd5b813560206001600160401b03808311156141f7576141f7614027565b8260051b61420683820161403d565b938452858101830193838101908886111561422057600080fd5b84880192505b8583101561425c5782358481111561423e5760008081fd5b61424c8a87838c0101614094565b8352509184019190840190614226565b98975050505050505050565b60006020828403121561427a57600080fd5b81356001600160401b0381111561429057600080fd5b611e05848285016141ca565b600080600080600080600080610100898b0312156142b957600080fd5b88356142c481614012565b975060208901356142d481614012565b965060408901356142e481614012565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561431b57600080fd5b6143278b828c01614094565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561436257600080fd5b5035919050565b6000806040838503121561437c57600080fd5b82359150602083013561438e81614012565b809150509250929050565b600080600080600060a086880312156143b157600080fd5b85356143bc81614012565b945060208601356143cc81614012565b93506040860135925060608601356143e381614012565b915060808601356143f381614012565b809150509295509295909350565b6000806040838503121561441457600080fd5b82356001600160401b0381111561442a57600080fd5b61443685828601614094565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561446957600080fd5b84356001600160401b038082111561448057600080fd5b61448c88838901614094565b955060208701359450604087013591506144a582614445565b909250606086013590808211156144bb57600080fd5b50614149878288016141ca565b600080600080600080600060e0888a0312156144e357600080fd5b87356144ee81614012565b965060208801356144fe81614012565b9550604088013561450e81614012565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561454957600080fd5b823561455481614012565b915060208301356001600160401b0381111561456f57600080fd5b61457b85828601614094565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145ac57600080fd5b82356145b781614012565b946020939093013593505050565b600080600080600060a086880312156145dd57600080fd5b85356145e881614012565b945060208601356001600160401b0381111561460357600080fd5b61460f88828901614094565b945050604086013592506060860135915060808601356143f381614012565b918252602082015260400190565b60006020828403121561464e57600080fd5b813561207281614012565b6000806040838503121561466c57600080fd5b50508035926020909101359150565b6000806040838503121561468e57600080fd5b82356001600160401b03808211156146a557600080fd5b6146b186838701614094565b935060208501359150808211156146c757600080fd5b5061457b85828601614094565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561474557607f19898703018352614733868551613f35565b95509284019291840191600101614717565b5093979650505050505050565b6040815260006147656040830185613f61565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147b557601f198784030185526147a38383516146d4565b94860194925090850190600101614787565b50909998505050505050505050565b6020815260006120726020830184613f35565b600080604083850312156147ea57600080fd5b82356147f581614012565b9150602083013561438e81614012565b93845260208401929092526040830152606082015260800190565b60006020828403121561483257600080fd5b813561207281614445565b6000806040838503121561485057600080fd5b82356001600160401b0381111561486657600080fd5b61487285828601614094565b925050602083013561438e81614445565b6020808252825182820181905260009190848201906040850190845b818110156140065783516001600160a01b03168352928401929184019160010161489f565b60208152600061207260208301846146d4565b600080604083850312156148ea57600080fd5b82356001600160401b038082111561490157600080fd5b61490d86838701614094565b9350602085013591508082111561492357600080fd5b5061457b858286016141ca565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561495857600080fd5b81516001600160401b0381111561496e57600080fd5b8201601f8101841361497f57600080fd5b805161498d6140b38261406d565b8181528560208385010111156149a257600080fd5b613bdb826020830160208601613f11565b6000602082840312156149c557600080fd5b815161207281614445565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149d0565b600060018060a01b038089168352808816602084015260c06040840152614a2360c0840188613f35565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a5757607f821691505b602082108103614a7757634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614a8f57600080fd5b5051919050565b8082028115828204841417610cf857610cf86149d0565b600082614aca57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149d0565b600060208284031215614af457600080fd5b815161207281614012565b9283526020830191909152604082015260600190565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b585750805b601f850160051c820191505b81811015614b7757828155600101614b64565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bad57614bad614027565b614bc181614bbb8454614a43565b84614b2f565b602080601f831160018114614bf05760008415614bde5750858301515b614be88582614b7f565b865550614b77565b600085815260208120601f198616915b82811015614c1f57888601518255948401946001909101908401614c00565b5085821015614c3d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e056040830184613f35565b60008251614c78818460208701613f11565b9190910192915050565b6000808354614c9081614a43565b60018281168015614ca85760018114614cbd57614cec565b60ff1984168752821515830287019450614cec565b8760005260208060002060005b85811015614ce35781548a820152908401908201614cca565b50505082870194505b50929695505050505050565b818103614d03575050565b614d0d8254614a43565b6001600160401b03811115614d2457614d24614027565b614d3281614bbb8454614a43565b6000601f821160018114614d605760008315614d4e5750848201545b614d588482614b7f565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614d9a5782860154825560019586019590910190602001614d7a565b5085831015614c3d5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa264697066735822122042c60736c4d404050dfb14a8d20fdec352198d25405f004f1e1ad2eee7e75d9e64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x345 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x4C2 JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x26687C9F EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x6D3 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x58E5CAE0 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x7ED JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x892 JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x8E1 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x901 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x921 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x941 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x961 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0x991 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x9B1 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0x9C6 JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0x9E6 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xA6C JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xAC1 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xAE1 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xB23 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xB65 JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xB92 JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xBB2 JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xBD2 JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xBFC JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xC3C JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x34C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EE7 JUMP JUMPDEST PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0xCFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FBB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4ED1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x40EA JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0xE48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x4189 JUMP JUMPDEST PUSH2 0xE56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x49B CALLDATASIZE PUSH1 0x4 PUSH2 0x4268 JUMP JUMPDEST PUSH2 0xF03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E2 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x429C JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x1201 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4399 JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x4268 JUMP JUMPDEST PUSH2 0x1420 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x4401 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x4453 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x6AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x4599 JUMP JUMPDEST PUSH2 0x15A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x45C5 JUMP JUMPDEST PUSH2 0x1672 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x16FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x429C JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1A4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x808 CALLDATASIZE PUSH1 0x4 PUSH2 0x4659 JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x828 CALLDATASIZE PUSH1 0x4 PUSH2 0x467B JUMP JUMPDEST PUSH2 0x1A8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x848 CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1AB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x862 PUSH2 0x1ADA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4752 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH2 0x8AD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x47C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x8FC CALLDATASIZE PUSH1 0x4 PUSH2 0x467B JUMP JUMPDEST PUSH2 0x1D84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x91C CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x1DAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x93C CALLDATASIZE PUSH1 0x4 PUSH2 0x4659 JUMP JUMPDEST PUSH2 0x1DDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x95C CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x1E0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x97C CALLDATASIZE PUSH1 0x4 PUSH2 0x47D7 JUMP JUMPDEST PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4805 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4189 JUMP JUMPDEST PUSH2 0x1E9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4820 JUMP JUMPDEST PUSH2 0x1EED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA01 CALLDATASIZE PUSH1 0x4 PUSH2 0x483D JUMP JUMPDEST PUSH2 0x1F0E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xA52 CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x1F38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1F46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1F61 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA9C CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x1F76 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xABC CALLDATASIZE PUSH1 0x4 PUSH2 0x44C8 JUMP JUMPDEST PUSH2 0x2011 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xADC CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x204D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xAFC CALLDATASIZE PUSH1 0x4 PUSH2 0x4536 JUMP JUMPDEST PUSH2 0x2079 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x209B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4883 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xB60 CALLDATASIZE PUSH1 0x4 PUSH2 0x4369 JUMP JUMPDEST PUSH2 0x20B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB85 PUSH2 0xB80 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x20D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xBAD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x21FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x2214 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x2235 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x224A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xC17 CALLDATASIZE PUSH1 0x4 PUSH2 0x4350 JUMP JUMPDEST PUSH2 0x2264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D7 JUMP JUMPDEST PUSH2 0x228F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x22B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0xC6C CALLDATASIZE PUSH1 0x4 PUSH2 0x463C JUMP JUMPDEST PUSH2 0x22C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC8C CALLDATASIZE PUSH1 0x4 PUSH2 0x4599 JUMP JUMPDEST PUSH2 0x22FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xCAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4155 JUMP JUMPDEST PUSH2 0x2387 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH2 0xCF8 DUP3 PUSH2 0x23B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD0A PUSH2 0xE28 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xD27 JUMPI PUSH2 0xD27 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD5A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD45 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE21 JUMPI PUSH2 0xD71 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD91 JUMPI PUSH2 0xD91 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xDFC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4946 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE0E JUMPI PUSH2 0xE0E PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD60 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE34 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x9 ADD PUSH2 0x2409 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0xC17 DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE6E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xF1B DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0xF4B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2416 JUMP JUMPDEST SWAP1 POP PUSH2 0xF56 DUP2 PUSH2 0x2496 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0xF9B JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA3 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100F SWAP2 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0x102E JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x1061 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x250D JUMP JUMPDEST SWAP2 POP PUSH2 0x106C DUP3 PUSH2 0x21FA JUMP JUMPDEST PUSH2 0x108B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1095 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x462E JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x110D JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x462E JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x111C SWAP1 DUP10 PUSH2 0x49E6 JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1138 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1150 PUSH2 0x255D JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x116D PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1185 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH20 0x0 PUSH4 0x1B29E1BA PUSH2 0x11A7 PUSH2 0x1584 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11C5 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11FE PUSH2 0x25B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x120A DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1213 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x25C8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCF8 PUSH2 0x763 DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B PUSH2 0x260A JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1262 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x127E JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x128C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x12D3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x12DB PUSH2 0x262E JUMP JUMPDEST PUSH2 0x12E3 PUSH2 0x262E JUMP JUMPDEST PUSH2 0x12EB PUSH2 0x2638 JUMP JUMPDEST PUSH2 0x12F6 PUSH1 0x0 DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x130F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x1341 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x134C PUSH2 0x26D2 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x1398 DUP3 DUP3 PUSH2 0x26F6 JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x13E1 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1416 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF5F DUP3 DUP3 PUSH2 0x2719 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1438 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x145B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4930 JUMP JUMPDEST SWAP1 POP PUSH2 0x1466 DUP2 PUSH2 0x2752 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x143B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1493 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x14A5 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH2 0x2409 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x14C8 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14D4 DUP7 PUSH2 0x2416 JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x281B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4ED1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x156D PUSH2 0x28F1 JUMP JUMPDEST PUSH2 0x1576 DUP3 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x1580 DUP3 DUP3 PUSH2 0x2AC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x158F PUSH2 0x26D2 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x15BA DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x15C3 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x15F4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH2 0x160D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25C8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0xF5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165F PUSH2 0x2C70 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x168A DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH20 0x0 PUSH4 0x53EA54C5 PUSH2 0x16AC PUSH2 0x1584 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1706 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x171E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1727 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x1730 DUP3 PUSH2 0x2CB9 JUMP JUMPDEST POP PUSH2 0x11FE PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1745 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1751 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1835 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x17A8 SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x17D4 SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1821 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x17F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1821 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1804 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1849 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x185C DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xF64 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x186E DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x187B PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18DC SWAP2 SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH2 0x18E6 SWAP1 DUP5 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x18F0 SWAP2 SWAP1 PUSH2 0x4AAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FE DUP3 DUP5 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1940 JUMPI PUSH1 0x0 PUSH2 0x1923 PUSH2 0x2539 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1939 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x19BC DUP3 PUSH2 0x194C PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x4AE2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2BD9 JUMP JUMPDEST PUSH2 0x19CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x2BD9 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7518BCCC58AD7B6EB0BA4B9E696D83BFC6252DF80A4E9CF24E64B10BE21ECDE4 DUP12 DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1A16 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xEF9 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A37 PUSH2 0x2E83 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A64 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A85 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x2F13 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AA7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1AB3 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x2F60 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AD1 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2FD6 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1AE7 PUSH2 0x1499 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B04 JUMPI PUSH2 0x1B04 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B37 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B22 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B55 JUMPI PUSH2 0x1B55 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B8E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B7B PUSH2 0x3DE8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B73 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1C94 JUMPI PUSH2 0x1BA5 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BC5 JUMPI PUSH2 0x1BC5 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BEB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C30 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4946 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C42 JUMPI PUSH2 0x1C42 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x1C6F DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C62 JUMPI PUSH2 0x1C62 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x20D1 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C81 JUMPI PUSH2 0x1C81 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1B94 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1CAB PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CBA PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x3042 JUMP JUMPDEST PUSH2 0x1CD9 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1CFE SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1D2A SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D77 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D4C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D77 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D5A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D9C DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1DA8 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x3057 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DB9 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC5 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DEA PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1E05 SWAP1 DUP5 PUSH2 0x31E3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E18 PUSH2 0x255D JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E53 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1EB2 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1ED9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x31EF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F05 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F26 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1F32 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x329E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0x91C DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F51 PUSH2 0x26D2 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6C PUSH2 0x26D2 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E91 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F8E DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1FA6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH2 0x1FBF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH2 0x1FD8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2719 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x201B PUSH2 0x22B9 JUMP JUMPDEST PUSH2 0x202A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x14E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2058 PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2072 SWAP1 PUSH2 0x330B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2091 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x3315 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20A7 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH1 0x4 DUP3 ADD PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x20BE DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x20C7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x2719 JUMP JUMPDEST PUSH2 0x20D9 PUSH2 0x3DE8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20E3 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x20EF DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x21EB JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x215E SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x218A SWAP1 PUSH2 0x4A43 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x21D7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x21AC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x21D7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x21BA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x213F JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E11 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x1E0D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x222C DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x33B1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2240 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2256 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x6 ADD PUSH2 0x2409 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x226F PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x227B DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22A7 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x22B3 DUP5 PUSH2 0x2416 JUMP JUMPDEST DUP4 PUSH2 0x344A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6C PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22D1 PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2307 PUSH2 0x2581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EB1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x231F DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x2328 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH2 0x233B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BD9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2376 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1580 PUSH2 0x25B7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E71 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x239F DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x23AB DUP4 PUSH2 0x2416 JUMP JUMPDEST PUSH2 0x34B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xCF8 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH2 0x3554 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2420 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x244B SWAP2 SWAP1 PUSH2 0x47C4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCF8 SWAP2 SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH2 0x11FE DUP2 CALLER PUSH2 0x35B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24A0 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B1 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x35DB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x24D4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x7ACACFD576383587962277516962C289D19F807BE443F4E303AB45ACE24931AC SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x251F DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2011 JUMP JUMPDEST SWAP1 POP PUSH2 0x252B DUP2 DUP5 PUSH2 0x35E7 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x258B PUSH2 0x3611 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x25B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25C1 PUSH2 0x3611 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25D3 PUSH2 0x31BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25E1 DUP6 DUP6 PUSH2 0x3635 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E05 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2601 SWAP1 DUP6 PUSH2 0x36D6 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2636 PUSH2 0x36EB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2640 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264A PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x26B2 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EF1 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4805 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x26FE PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2708 PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2724 PUSH2 0x31BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2732 DUP6 DUP6 PUSH2 0x3710 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E05 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2601 SWAP1 DUP6 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x275C PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x276D PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x379D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2790 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF0DD3DE472DDCD75AE2C17728A45801355FB6DD8615A7C53C15504B4279C09BE SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27CA PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x27D6 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE MLOAD PUSH32 0x8DB4DCEEAE8D620782D356DEC6A0148E893FF28620319F10F53DD2232B197897 SWAP1 PUSH2 0x2500 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2825 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2833 DUP3 DUP8 PUSH2 0x35DB JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2855 JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x28B3 SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3E0B JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE PUSH32 0x8F531E5EDE07D5741FD086BB787ED399A64704EB757B87CC80CF6635B274E5B5 SWAP2 POP PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2961 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2955 PUSH2 0x37A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E31 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2997 DUP2 PUSH2 0x248C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A1 PUSH2 0x1F46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A02 SWAP2 SWAP1 PUSH2 0x4AE2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A0E PUSH2 0x37A9 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A46 JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B15 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A7C JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B15 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2B1C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2B19 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4A7D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2B3B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2B6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B80 PUSH2 0x1F61 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B8C PUSH2 0x2235 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x2BA2 DUP3 DUP5 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BB0 DUP3 SELFBALANCE PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x14DC JUMPI DUP1 DUP3 DUP7 PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFF JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2BFC JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CC3 PUSH2 0x2E83 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x2CF2 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x2D12 SWAP2 PUSH2 0x4ACF JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x2D3A JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D5C SWAP1 DUP6 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST GT ISZERO PUSH2 0x2D83 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x462E JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x2DA4 SWAP1 DUP5 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2DB4 SWAP1 POP CALLER DUP5 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x2DF8 DUP2 DUP4 PUSH2 0x381B JUMP JUMPDEST PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E22 PUSH2 0x2539 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EB1 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EC2 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x36D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2EE4 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F1D PUSH2 0x2E83 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x2500 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x462E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F6A PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F76 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x2FA4 DUP4 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP PUSH32 0x1CD139430ED537AB9E8086952076CCE01EDD5BA6E30907AF0FFE3709FD3139E6 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP3 SWAP2 SWAP1 PUSH2 0x4C4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FE0 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FF1 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3788 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3013 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2500 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3823 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3061 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x306D DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x14DC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x309B SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x30C3 JUMPI PUSH2 0x30C3 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x30DD SWAP2 SWAP1 PUSH2 0x4C82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x31B7 JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x3108 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x49E6 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x3118 JUMPI PUSH2 0x3118 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3134 JUMPI PUSH2 0x3134 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x314A SWAP2 SWAP1 PUSH2 0x4CF8 JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x315B JUMPI PUSH2 0x315B PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x3177 SWAP2 SWAP1 PUSH2 0x3E61 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xFC8D82C9E7E7938446DA05458183EFA5916C443A2BAB87F97F94A8D47742B014 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31AA SWAP3 SWAP2 SWAP1 PUSH2 0x4C4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3081 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x383B JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3215 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3865 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3251 PUSH2 0x23E5 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A8 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x32B4 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1B76230B39D2D0C1A2A77A90C170190D2280796ED56B280177256CE39DF1A664 SWAP2 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x331F PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3330 PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x36D6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3352 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x3376 DUP5 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33BB PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33CC PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x3788 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x33EE JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3411 SWAP2 PUSH2 0x3E61 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3454 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH2 0x3460 DUP4 DUP3 PUSH2 0x2DEE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x3488 SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3E0B JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xA616BFC5BB0E46C6CAD727E1B55E3685067E1296D962A7F37017874A27AA0098 SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C3 PUSH2 0x23E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34D1 DUP3 DUP5 PUSH2 0x379D JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x34F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3522 SWAP1 DUP4 ADD DUP3 PUSH2 0x3E9B JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x94DA5EECA10D4D6EE8455F99240C10B0C74B0CF5BF754AFB81C81E2704B9C427 SWAP1 PUSH1 0x20 ADD PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x35A4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3590 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35BA DUP3 DUP3 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x1580 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4337 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x38BF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x35F7 DUP7 DUP7 PUSH2 0x3909 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3607 DUP3 DUP3 PUSH2 0x3956 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3640 PUSH2 0x255D JUMP JUMPDEST SWAP1 POP PUSH2 0x364C DUP5 DUP5 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x36CC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x3682 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x38BF JUMP JUMPDEST PUSH2 0x36F3 PUSH2 0x3A0F JUMP JUMPDEST PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371B PUSH2 0x255D JUMP JUMPDEST SWAP1 POP PUSH2 0x3727 DUP5 DUP5 PUSH2 0x1E0D JUMP JUMPDEST ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x37CE DUP3 PUSH2 0x3B12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3813 JUMPI PUSH2 0xF5F DUP3 DUP3 PUSH2 0x3B6E JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x3BE4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2072 DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x387A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3C03 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x389F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x389D SWAP2 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF5F JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38CB DUP4 DUP4 PUSH2 0x3823 JUMP JUMPDEST PUSH2 0x3901 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xCF8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3943 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3935 DUP9 DUP3 DUP6 DUP6 PUSH2 0x3C11 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x394F JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x396A JUMPI PUSH2 0x396A PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x3973 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3987 JUMPI PUSH2 0x3987 PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x39A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39B9 JUMPI PUSH2 0x39B9 PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x39DA JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39EE JUMPI PUSH2 0x39EE PUSH2 0x4DDA JUMP JUMPDEST SUB PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A19 PUSH2 0x260A JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x36CC JUMPI PUSH1 0x0 PUSH2 0x3A4D PUSH1 0x1 DUP4 PUSH2 0x49E6 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3A61 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x49E6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3AC6 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3A81 JUMPI PUSH2 0x3A81 PUSH2 0x4930 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3AA4 JUMPI PUSH2 0x3AA4 PUSH2 0x4930 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x3AD7 JUMPI PUSH2 0x3AD7 PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xCF8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x3B3F JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E51 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3B8B SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BC6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BCB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BDB DUP6 DUP4 DUP4 PUSH2 0x3CD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x2072 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3D22 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x3C42 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x3CCC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3CC2 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x3CCC JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3CEB JUMPI PUSH2 0x3CE6 DUP3 PUSH2 0x3DBF JUMP JUMPDEST PUSH2 0x2072 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D02 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xE21 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x3D47 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3D63 SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3DB5 DUP7 DUP4 DUP4 PUSH2 0x3CD6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3DCF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x3E51 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3E51 JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x3E41 SWAP1 DUP3 PUSH2 0x4B94 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3E2B JUMP JUMPDEST POP PUSH2 0x3E5D SWAP3 SWAP2 POP PUSH2 0x3EB5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x3E6D SWAP1 PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x3E7D JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 PUSH2 0x3ED2 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 PUSH2 0x3EC9 DUP3 DUP3 PUSH2 0x3E61 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3EB5 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E5D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3ED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F14 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F4D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F11 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3FAE JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x3F9C DUP4 DUP4 MLOAD PUSH2 0x3F35 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3F80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F61 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4006 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3FEA JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4065 JUMPI PUSH2 0x4065 PUSH2 0x4027 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4086 JUMPI PUSH2 0x4086 PUSH2 0x4027 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x40B8 PUSH2 0x40B3 DUP3 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x403D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x40CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x410B DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x411B DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x413D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4149 DUP8 DUP3 DUP9 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x417D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E05 DUP5 DUP3 DUP6 ADD PUSH2 0x4094 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x419E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x41A9 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x41B9 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x41DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x41F7 JUMPI PUSH2 0x41F7 PUSH2 0x4027 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x4206 DUP4 DUP3 ADD PUSH2 0x403D JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x4220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x425C JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x423E JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x424C DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x4094 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4226 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x427A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E05 DUP5 DUP3 DUP6 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x42B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x42C4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x42D4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x42E4 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x431B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4327 DUP12 DUP3 DUP13 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x437C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4012 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x43B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x43BC DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x43CC DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x43E3 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x43F3 DUP2 PUSH2 0x4012 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x442A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4436 DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448C DUP9 DUP4 DUP10 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x44A5 DUP3 PUSH2 0x4445 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x44BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4149 DUP8 DUP3 DUP9 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x44E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x44EE DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x44FE DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x450E DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4554 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x456F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45B7 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x45E8 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x460F DUP9 DUP3 DUP10 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x43F3 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x464E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2072 DUP2 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x466C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x468E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46B1 DUP7 DUP4 DUP8 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x46C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4745 JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4733 DUP7 DUP6 MLOAD PUSH2 0x3F35 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4717 JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4765 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F61 JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47B5 JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x47A3 DUP4 DUP4 MLOAD PUSH2 0x46D4 JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4787 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47F5 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2072 DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4850 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4872 DUP6 DUP3 DUP7 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x438E DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4006 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x489F JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2072 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x48EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x490D DUP7 DUP4 DUP8 ADD PUSH2 0x4094 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x457B DUP6 DUP3 DUP7 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x496E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x497F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x498D PUSH2 0x40B3 DUP3 PUSH2 0x406D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x49A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BDB DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F11 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2072 DUP2 PUSH2 0x4445 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4A23 PUSH1 0xC0 DUP5 ADD DUP9 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x80 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 AND PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A57 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A77 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4ACA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2072 DUP2 PUSH2 0x4012 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4B58 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4B77 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B64 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BAD JUMPI PUSH2 0x4BAD PUSH2 0x4027 JUMP JUMPDEST PUSH2 0x4BC1 DUP2 PUSH2 0x4BBB DUP5 SLOAD PUSH2 0x4A43 JUMP JUMPDEST DUP5 PUSH2 0x4B2F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4BF0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x4BDE JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x4BE8 DUP6 DUP3 PUSH2 0x4B7F JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x4B77 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C1F JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4C00 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x4C3D JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E05 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4C78 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F11 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x4C90 DUP2 PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x4CA8 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4CBD JUMPI PUSH2 0x4CEC JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4CEC JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4CE3 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x4CCA JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x4D03 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4D0D DUP3 SLOAD PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4D24 JUMPI PUSH2 0x4D24 PUSH2 0x4027 JUMP JUMPDEST PUSH2 0x4D32 DUP2 PUSH2 0x4BBB DUP5 SLOAD PUSH2 0x4A43 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4D60 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x4D4E JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x4D58 DUP5 DUP3 PUSH2 0x4B7F JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D9A JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4D7A JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x4C3D JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x735822122042C6 SMOD CALLDATASIZE 0xC4 0xD4 DIV SDIV 0xD 0xFB EQ 0xA8 0xD2 0xF 0xDE 0xC3 MSTORE NOT DUP14 0x25 BLOCKHASH PUSH0 STOP 0x4F 0x1E BYTE 0xD2 0xEE 0xE7 0xE7 TSTORE SWAP15 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "2613:24241:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;470:14:55;;463:22;445:41;;433:2;418:18;1695:212:1;;;;;;;;22529:530:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1360:126:41:-;;;;;;;;;;-1:-1:-1;1360:126:41;-1:-1:-1;;;;;;;;;;;1360:126:41;;;;;2062:25:55;;;2050:2;2035:18;1360:126:41;1916:177:55;14066:235:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14801:153:40:-;;;;;;;;;;-1:-1:-1;14801:153:40;;;;;:::i;:::-;-1:-1:-1;;;14801:153:40;;;;;;;;;;-1:-1:-1;;;;;;4773:33:55;;;4755:52;;4743:2;4728:18;14801:153:40;4611:202:55;20676:150:40;;;;;;;;;;-1:-1:-1;20676:150:40;;;;;:::i;:::-;;:::i;15912:256::-;;;;;;;;;;-1:-1:-1;15912:256:40;;;;;:::i;:::-;;:::i;:::-;;21724:281;;;;;;;;;;-1:-1:-1;21724:281:40;;;;;:::i;:::-;;:::i;1674:108:41:-;;;;;;;;;;-1:-1:-1;1674:108:41;-1:-1:-1;;;;;;;;;;;1674:108:41;;9402:1802;;;;;;;;;;-1:-1:-1;9402:1802:41;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;16402:217:50:-;;;;;;;;;;;;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;14461:184:40:-;;;;;;;;;;-1:-1:-1;14461:184:40;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;21251:185:40:-;;;;;;;;;;-1:-1:-1;21251:185:40;;;;;:::i;:::-;;:::i;3336:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3336:68:40;;7833:892;;;;;;;;;;-1:-1:-1;7833:892:40;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;3810:78:40:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3810:78:40;;22123:287;;;;;;;;;;-1:-1:-1;22123:287:40;;;;;:::i;:::-;;:::i;17710:164::-;;;;;;;;;;-1:-1:-1;17710:164:40;;;;;:::i;:::-;;:::i;9634:218:50:-;;;;;;;;;;;;;:::i;17122:277:40:-;;;;;;;;;;-1:-1:-1;17122:277:40;;;;;:::i;:::-;;:::i;7025:617:41:-;;;;;;;;;;-1:-1:-1;7025:617:41;;;;;:::i;:::-;;:::i;4158:214:3:-;;;;;;:::i;:::-;;:::i;9333:164:40:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25123:486::-;;;;;;;;;;-1:-1:-1;25123:486:40;;;;;:::i;:::-;;:::i;3705:134:3:-;;;;;;;;;;;;;:::i;13896:466:40:-;;;;;;;;;;-1:-1:-1;13896:466:40;;;;;:::i;:::-;;:::i;26286:170::-;;;;;;;;;;-1:-1:-1;26286:170:40;;;;;:::i;:::-;;:::i;11891:352:50:-;;;;;;;;;;-1:-1:-1;11891:352:50;;;;;:::i;:::-;;:::i;3527:80:40:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3527:80:40;;12091:1808:41;;;;;;;;;;-1:-1:-1;12091:1808:41;;;;;:::i;:::-;;:::i;5241:229:42:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;23660:140:40:-;;;;;;;;;;-1:-1:-1;23660:140:40;;;;;:::i;:::-;;:::i;26704:148::-;;;;;;;;;;-1:-1:-1;26704:148:40;;;;;:::i;:::-;;:::i;18652:220::-;;;;;;;;;;-1:-1:-1;18652:220:40;;;;;:::i;:::-;;:::i;23930:146::-;;;;;;;;;;-1:-1:-1;23930:146:40;;;;;:::i;:::-;;:::i;19829:745::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;4288:82::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4288:82:40;;18618:362:50;;;;;;;;;;-1:-1:-1;18618:362:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3980:70:40:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3980:70:40;;18961:226;;;;;;;;;;-1:-1:-1;18961:226:40;;;;;:::i;:::-;;:::i;11403:347:50:-;;;;;;;;;;-1:-1:-1;11403:347:50;;;;;:::i;:::-;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;14491:433:41:-;;;;;;;;;;-1:-1:-1;14491:433:41;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;15405:233:40:-;;;;;;;;;;-1:-1:-1;15405:233:40;;;;;:::i;:::-;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;23382:151:40;;;;;;;;;;-1:-1:-1;23382:151:40;;;;;:::i;:::-;;:::i;17980:227::-;;;;;;;;;;-1:-1:-1;17980:227:40;;;;;:::i;:::-;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;20951:180:40;;;;;;;;;;-1:-1:-1;20951:180:40;;;;;:::i;:::-;;:::i;9055:163::-;;;;;;;;;;;;;:::i;9599:159::-;;;;;;;;;;;;;:::i;25691:264::-;;;;;;;;;;-1:-1:-1;25691:264:40;;;;;:::i;:::-;;:::i;7764:547:41:-;;;;;;;;;;-1:-1:-1;7764:547:41;;;;;:::i;:::-;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;24521:151:40:-;;;;;;;;;;-1:-1:-1;24521:151:40;;;;;:::i;:::-;;:::i;4473:76::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4473:76:40;;15608:231:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;10490:320:50:-;;;;;;;;;;-1:-1:-1;10490:320:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11400:129:40:-;;;;;;;;;;-1:-1:-1;11400:129:40;;;;;:::i;:::-;;:::i;24738:132::-;;;;;;;;;;-1:-1:-1;24738:132:40;;;;;:::i;:::-;;:::i;15920:179:41:-;;;;;;;;;;;;;:::i;18184:237:50:-;;;;;;;;;;;;;:::i;10942:317::-;;;;;;;;;;-1:-1:-1;10942:317:50;;;;;:::i;:::-;;:::i;18312:230:40:-;;;;;;;;;;-1:-1:-1;18312:230:40;;;;;:::i;:::-;;:::i;6726:171:41:-;;;;;;;;;;;;;:::i;5750:286:42:-;;;;;;;;;;-1:-1:-1;5750:286:42;;;;;:::i;:::-;;:::i;13069:313:40:-;;;;;;;;;;-1:-1:-1;13069:313:40;;;;;:::i;:::-;;:::i;17482:146::-;;;;;;;;;;-1:-1:-1;17482:146:40;;;;;:::i;:::-;;:::i;3147:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3147:66:40;;1695:212:1;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;22529:530:40:-;22579:28;22619:37;22659:24;:22;:24::i;:::-;22619:64;;22694:35;22745:20;:27;-1:-1:-1;;;;;22732:41:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22694:79;;22789:9;22784:232;22808:20;:27;22804:1;:31;22784:232;;;22899:19;:17;:19::i;:::-;-1:-1:-1;;;;;22881:69:40;;22968:20;22989:1;22968:23;;;;;;;;:::i;:::-;;;;;;;22881:124;;;;;;;;;;;;;2062:25:55;;2050:2;2035:18;;1916:177;22881:124:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22881:124:40;;;;;;;;;;;;:::i;:::-;22856:19;22876:1;22856:22;;;;;;;;:::i;:::-;;;;;;;;;;:149;22837:3;;22784:232;;;-1:-1:-1;23033:19:40;22529:530;-1:-1:-1;;22529:530:40:o;14066:235:50:-;14129:30;14171:37;14211:33;:31;:33::i;:::-;14171:73;;14261:33;:1;:24;;:31;:33::i;:::-;14254:40;;;14066:235;:::o;20676:150:40:-;20747:11;20777:42;20791:27;20806:11;20791:14;:27::i;15912:256::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;16029:16:40;::::1;16025:77;;16068:23;;-1:-1:-1::0;;;16068:23:40::1;;;;;;;;;;;16025:77;16111:50;::::0;-1:-1:-1;;;16111:50:40;;16142:4:::1;16111:50;::::0;::::1;22422:34:55::0;-1:-1:-1;;;;;22492:15:55;;;22472:18;;;22465:43;22524:18;;;22517:34;;;16111:22:40;::::1;::::0;::::1;::::0;22357:18:55;;16111:50:40::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15912:256:::0;;;;:::o;21724:281::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;21832:9:40::1;21827:172;21851:12;:19;21847:1;:23;21827:172;;;21891:19;21913:31;21928:12;21941:1;21928:15;;;;;;;;:::i;:::-;;;;;;;21913:14;:31::i;:::-;21891:53;;21958:30;21976:11;21958:17;:30::i;:::-;-1:-1:-1::0;21872:3:40::1;;21827:172;;;;21724:281:::0;;:::o;9402:1802:41:-;9669:14;;-1:-1:-1;;;;;9775:30:41;;9800:4;9775:30;9771:103;;9849:13;9828:35;;-1:-1:-1;;;9828:35:41;;;;;;;;:::i;:::-;;;;;;;;9771:103;9961:19;:17;:19::i;:::-;-1:-1:-1;;;;;9943:50:41;;9994:11;9943:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9938:133;;10048:11;10029:31;;-1:-1:-1;;;10029:31:41;;;;;;;;:::i;9938:133::-;10147:9;10128:15;:28;10124:90;;10179:24;;-1:-1:-1;;;10179:24:41;;;;;2062:25:55;;;2035:18;;10179:24:41;1916:177:55;10124:90:41;10259:98;10273:13;10288:11;10301:5;10308:7;10317:6;10325:9;10336;10347;10259:13;:98::i;:::-;10250:107;;10423:20;10436:6;10423:12;:20::i;:::-;10418:90;;10490:6;10466:31;;-1:-1:-1;;;10466:31:41;;;;;;;;:::i;10418:90::-;10518:30;10551:26;:24;:26::i;:::-;-1:-1:-1;;;;;10619:22:41;;;10587:29;10619:22;;;;;;;;;;;:29;;;;;;;;;10750:17;;;;10518:59;;-1:-1:-1;10619:29:41;10741:26;;10737:104;;;10812:17;;;;10790:40;;-1:-1:-1;;;10790:40:41;;;;10804:6;;10790:40;;;:::i;10737:104::-;10951:18;;10940:29;;10936:110;;11016:18;;10992:43;;-1:-1:-1;;;10992:43:41;;;;11007:7;;10992:43;;;:::i;10936:110::-;11139:17;;;;11130:26;;:6;:26;:::i;:::-;11114:42;;11167:30;;9402:1802;;;;;;;;;;;:::o;16402:217:50:-;16467:4;16483:37;16523:33;:31;:33::i;:::-;16573:14;;:39;;;;16402:217;-1:-1:-1;;16402:217:50:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;14461:184:40:-;3251:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;14567:20:40::2;:36;14604:24;:22;:24::i;:::-;14630:7;14567:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3282:1:9::1;3293:20:::0;:18;:20::i;:::-;14461:184:40;:::o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;21251:185:40:-;21331:28;21378:51;21401:27;21416:11;21401:14;:27::i;7833:892::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;8030:22:40::1;:20;:22::i;:::-;8062:24;:22;:24::i;:::-;8096:22;:20;:22::i;:::-;8129:44;2362:4:0;8160:12:40::0;8129:10:::1;:44::i;:::-;;8183;-1:-1:-1::0;;;;;;;;;;;8214:12:40::1;8183:10;:44::i;:::-;;8237:40;-1:-1:-1::0;;;;;;;;;;;8264:12:40::1;8237:10;:40::i;:::-;;8287:35;-1:-1:-1::0;;;;;;;;;;;8313:8:40::1;8287:10;:35::i;:::-;;8333:26;8362:22;:20;:22::i;:::-;8395:20:::0;;-1:-1:-1;;;;;8395:20:40;;::::1;-1:-1:-1::0;;;;;;8395:20:40;;::::1;;::::0;;;8425:15;::::1;:30:::0;;;;::::1;::::0;;;::::1;;::::0;;8465:16:::1;::::0;::::1;:32:::0;;;8333:51;-1:-1:-1;8572:8:40::1;8627;8661:57;8572:8:::0;8627;8661:22:::1;:57::i;:::-;8020:705;;;5070:14:2::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;23517:50:55;;5142:14:2;;23505:2:55;23490:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;7833:892:40;;;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;22123:287:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;22234:9:40::1;22229:175;22253:12;:19;22249:1;:23;22229:175;;;22293:19;22315:31;22330:12;22343:1;22330:15;;;;;;;;:::i;22315:31::-;22293:53;;22360:33;22381:11;22360:20;:33::i;:::-;-1:-1:-1::0;22274:3:40::1;;22229:175;;17710:164:::0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17819:48:40::1;17834:27;17849:11;17834:14;:27::i;:::-;17863:3;17819:14;:48::i;9634:218:50:-:0;9686:30;9728:37;9768:33;:31;:33::i;:::-;9728:73;-1:-1:-1;9818:27:50;9728:73;9818:25;:27::i;17122:277:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17317:75:40::1;17329:27;17344:11;17329:14;:27::i;:::-;17358:3;17363:12;17377:14;17317:11;:75::i;:::-;17122:277:::0;;;;;:::o;7025:617:41:-;7332:289;;;-1:-1:-1;;;;;;;;;;;7332:289:41;;;23921:25:55;-1:-1:-1;;;;;24020:15:55;;;24000:18;;;23993:43;;;;24072:15;;;24052:18;;;24045:43;24124:15;;;24104:18;;;24097:43;24156:19;;;24149:35;;;24200:19;;;24193:35;;;24244:19;;;24237:35;;;24288:19;;;24281:35;;;7267:7:41;;23893:19:55;;7332:289:41;;;;;;;;;;;;;7305:330;;;;;;7286:349;;7025:617;;;;;;;;;:::o;4158:214:3:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;9333:164:40:-;9388:7;9407:26;9436:22;:20;:22::i;:::-;9475:15;;;-1:-1:-1;;;;;9475:15:40;;9333:164;-1:-1:-1;;9333:164:40:o;25123:486::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25289:28:40::1;25308:8;25289:18;:28::i;:::-;25358:37;-1:-1:-1::0;;;;;;;;;;;25391:3:40::1;25358:10;:37::i;:::-;;25405:38;-1:-1:-1::0;;;;;;;;;;;25439:3:40::1;25405:10;:38::i;:::-;;25453:36;-1:-1:-1::0;;;;;;;;;;;25485:3:40::1;25453:10;:36::i;:::-;-1:-1:-1::0;25505:22:40::1;::::0;-1:-1:-1;;;;;25505:22:40;::::1;::::0;::::1;::::0;;;::::1;25570:32;-1:-1:-1::0;;;;;25570:22:40;::::1;25593:8:::0;25570:22:::1;:32::i;3705:134:3:-:0;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:3;:::o;13896:466:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;14150:20:40::1;:37;14201:24;:22;:24::i;:::-;14239:11;14264:3;14281:19;14314:5;14333:12;14150:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;26286:170:::0;3251:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;26388:26:40::2;26407:6;26388:18;:26::i;:::-;26424:25;26442:6;26424:17;:25::i;:::-;3282:1:9::1;3293:20:::0;:18;:20::i;11891:352:50:-;11973:28;12013:37;12053:33;:31;:33::i;:::-;12013:73;;12136:35;12156:11;12169:1;12136:19;:35::i;:::-;12189:1;:20;;:33;12210:11;12189:33;;;;;;;;;;;:47;;12182:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11891:352;;;:::o;12091:1808:41:-;3251:21:9;:19;:21::i;:::-;12435:14:41::1;12451:21:::0;12476:203:::1;12502:13;12529:11;12554:5;12573:7;12594:6;12614:9;12637;12660;12476:12;:203::i;:::-;12434:245;;;;12806:67;12820:6;12828:5;12835:7;12844:6;12852:9;12863;12806:13;:67::i;:::-;12994:20;13096:5;13052:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;13034:56:41::1;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13018:74;::::0;:13;:74:::1;:::i;:::-;13017:84;;;;:::i;:::-;12994:107:::0;-1:-1:-1;13166:27:41::1;13196:28;12994:107:::0;13196:13;:28:::1;:::i;:::-;13166:58;;13334:11;-1:-1:-1::0;;;;;13317:28:41::1;:13;-1:-1:-1::0;;;;;13317:28:41::1;;13313:171;;13361:30;13394:26;:24;:26::i;:::-;13361:59;;13460:13;13434:1;:22;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;13313:171:41::1;13552:92;13631:12;13578:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;13560:57:41::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13552:78:41::1;::::0;::::1;:92::i;:::-;13722:51;-1:-1:-1::0;;;;;13722:30:41;::::1;13753:19:::0;13722:30:::1;:51::i;:::-;13842:5;-1:-1:-1::0;;;;;13819:73:41::1;13834:6;-1:-1:-1::0;;;;;13819:73:41::1;;13849:7;13858:19;13879:12;13819:73;;;;;;;;:::i;:::-;;;;;;;;12357:1542;;;;3293:20:9::0;:18;:20::i;5241:229:42:-;5295:23;5320:24;5356:25;5384:21;:19;:21::i;:::-;5356:49;;5423:1;:18;;;5443:1;:19;;;5415:48;;;;;5241:229;;:::o;23660:140:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23758:35:40::1;23777:15;23758:18;:35::i;26704:148::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;26808:37:40::1;26831:5;26838:6;26808:22;:37::i;18652:220::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18803:62:40::1;18825:27;18840:11;18825:14;:27::i;:::-;18854:10;18803:21;:62::i;23930:146::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24031:38:40::1;24053:15;24031:21;:38::i;19829:745::-:0;19882:28;19912:25;20016:31;20050:21;:19;:21::i;:::-;20016:55;;20081:29;20126:14;:21;-1:-1:-1;;;;;20113:35:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20081:67;;20158:42;20217:14;:21;-1:-1:-1;;;;;20203:36:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;20158:81;;20255:9;20250:258;20274:14;:21;20270:1;:25;20250:258;;;20353:19;:17;:19::i;:::-;-1:-1:-1;;;;;20335:69:40;;20405:14;20420:1;20405:17;;;;;;;;:::i;:::-;;;;;;;20335:88;;;;;;;;;;;;;2062:25:55;;2050:2;2035:18;;1916:177;20335:88:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20335:88:40;;;;;;;;;;;;:::i;:::-;20316:13;20330:1;20316:16;;;;;;;;:::i;:::-;;;;;;:107;;;;20468:29;20479:14;20494:1;20479:17;;;;;;;;:::i;:::-;;;;;;;20468:10;:29::i;:::-;20437:25;20463:1;20437:28;;;;;;;;:::i;:::-;;;;;;;;;;:60;20297:3;;20250:258;;;-1:-1:-1;20526:13:40;;20541:25;;-1:-1:-1;19829:745:40;-1:-1:-1;;19829:745:40:o;18618:362:50:-;18692:17;18721:37;18761:33;:31;:33::i;:::-;18721:73;-1:-1:-1;18810:48:50;:24;;;18844:13;18810:33;:48::i;:::-;18805:123;;18903:13;18881:36;;-1:-1:-1;;;18881:36:50;;;;;;;;:::i;18805:123::-;-1:-1:-1;;;;;18945:28:50;;;;;;:13;;;:28;;;;;18938:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18618:362;;;:::o;18961:226:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19115:65:40::1;19140:27;19155:11;19140:14;:27::i;:::-;19169:10;19115:24;:65::i;11403:347:50:-:0;11487:19;11518:37;11558:33;:31;:33::i;:::-;11518:73;;11641:35;11661:11;11674:1;11641:19;:35::i;:::-;11694:33;;;;:20;;:33;;-1:-1:-1;11694:33:50;;;:49;;;;;;11403:347::o;2492:233:1:-;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;14491:433:41:-;14589:19;14610:18;14630:21;14653;14686:30;14719:26;:24;:26::i;:::-;-1:-1:-1;;;;;14787:23:41;;;14755:29;14787:23;;;;;;;;;;;:30;;;;;;;;;-1:-1:-1;;;14787:30:41;;;;14835:18;;14855:17;;;;14874:20;;;;14896;;;;;14835:18;;14855:17;;-1:-1:-1;14874:20:41;;-1:-1:-1;14896:20:41;14491:433::o;15405:233:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;15519:16:40;::::1;15515:77;;15558:23;;-1:-1:-1::0;;;15558:23:40::1;;;;;;;;;;;15515:77;15601:30;-1:-1:-1::0;;;;;15601:18:40;::::1;15620:2:::0;15624:6;15601:18:::1;:30::i;23382:151::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23484:42:40::1;23513:12;23484:28;:42::i;17980:227::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18130:70:40::1;18156:27;18171:11;18156:14;:27::i;:::-;18185:14;18130:25;:70::i;20951:180::-:0;21033:19;21071:53;21096:27;21111:11;21096:14;:27::i;9055:163::-;9114:7;9133:26;9162:22;:20;:22::i;:::-;9201:10;-1:-1:-1;;;;;9201:10:40;;9055:163;-1:-1:-1;;9055:163:40:o;9599:159::-;9648:7;9667:26;9696:22;:20;:22::i;:::-;9735:16;;;;9599:159;-1:-1:-1;;9599:159:40:o;25691:264::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25774:38:40::1;-1:-1:-1::0;;;;;;;;;;;25808:3:40::1;25774:11;:38::i;:::-;;25822:39;-1:-1:-1::0;;;;;;;;;;;25857:3:40::1;25822:11;:39::i;:::-;;25871:37;-1:-1:-1::0;;;;;;;;;;;25904:3:40::1;25871:11;:37::i;:::-;-1:-1:-1::0;25924:24:40::1;::::0;-1:-1:-1;;;;;25924:24:40;::::1;::::0;::::1;::::0;;;::::1;25691:264:::0;;:::o;7764:547:41:-;8002:7;8137:20;:18;:20::i;:::-;8179:93;8199:13;8214:11;8227:5;8234:7;8243:6;8251:9;8262;8179:19;:93::i;:::-;8067:223;;-1:-1:-1;;;8067:223:41;;;26936:27:55;26979:11;;;26972:27;;;;27015:12;;;27008:28;27052:12;;8067:223:41;26678:392:55;2893:222:1;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;:::-;3072:36;2893:222;-1:-1:-1;;;2893:222:1:o;24521:151:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24631:34:40::1;24645:13;24660:4;24631:13;:34::i;15608:231:50:-:0;15667:23;15702:37;15742:33;:31;:33::i;:::-;15702:73;-1:-1:-1;15792:40:50;:31;;;:38;:40::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;10490:320:50:-:0;10560:22;;:::i;:::-;10594:37;10634:33;:31;:33::i;:::-;10594:73;;10717:35;10737:11;10750:1;10717:19;:35::i;:::-;10770:33;;;;:20;;;;:33;;;;;;;;10763:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10770:33;;10763:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10763:40:50;;-1:-1:-1;10763:40:50;;10490:320;-1:-1:-1;;;;10490:320:50:o;11400:129:40:-;11465:4;11488:34;-1:-1:-1;;;;;;;;;;;11518:3:40;11488:7;:34::i;24738:132::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24832:31:40::1;24849:13;24832:16;:31::i;15920:179:41:-:0;15975:7;15994:30;16027:26;:24;:26::i;:::-;16070:22;;;;15920:179;-1:-1:-1;;15920:179:41:o;18184:237:50:-;18247:32;18291:37;18331:33;:31;:33::i;:::-;18291:73;;18381:33;:1;:24;;:31;:33::i;10942:317::-;11015:11;11038:37;11078:33;:31;:33::i;:::-;11038:73;;11161:35;11181:11;11194:1;11161:19;:35::i;:::-;11214:33;;;;:20;;:33;;-1:-1:-1;11214:33:50;;;:38;;10942:317::o;18312:230:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18469:66:40::1;18493:27;18508:11;18493:14;:27::i;:::-;18522:12;18469:23;:66::i;6726:171:41:-:0;6777:7;6796:30;6829:26;:24;:26::i;5750:286:42:-;5843:19;5864:23;5899:25;5927:21;:19;:21::i;:::-;-1:-1:-1;;;;;5966:33:42;;;:24;:33;;;;;;;;;;;;6001:18;;;;:27;;;;;;5966:33;;5750:286;-1:-1:-1;;;5750:286:42:o;13069:313:40:-;3251:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;13269:26:40::2;13288:6;13269:18;:26::i;:::-;13306:27;-1:-1:-1::0;;;;;13306:19:40;::::2;13326:6:::0;13306:19:::2;:27::i;:::-;13357:9;-1:-1:-1::0;;;;;13348:27:40::2;;13368:6;13348:27;;;;2062:25:55::0;;2050:2;2035:18;;1916:177;13348:27:40::2;;;;;;;;3282:1:9::1;3293:20:::0;:18;:20::i;17482:146:40:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17578:43:40::1;17593:27;17608:11;17593:14;:27::i;:::-;17578:14;:43::i;3443:202:0:-:0;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1133:40:10;;;3602:36:0;1034:146:10;2450:198:50;2597:35;;2450:198::o;7776:300:39:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;19329:200:40:-;19402:19;19458;:17;:19::i;:::-;-1:-1:-1;;;;;19440:69:40;;19510:11;19440:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;13002:360:50:-;13077:37;13117:33;:31;:33::i;:::-;13077:73;-1:-1:-1;13161:10:50;13174:41;:24;;;13203:11;13174:28;:41::i;:::-;13161:54;;13231:5;13226:83;;13259:39;;-1:-1:-1;;;13259:39:50;;;;;2062:25:55;;;2035:18;;13259:39:50;1916:177:55;13226:83:50;13324:31;;2062:25:55;;;13324:31:50;;2050:2:55;2035:18;13324:31:50;;;;;;;;13067:295;;13002:360;:::o;8454:476:41:-;8724:14;8750;8767:89;8783:13;8798:11;8811:5;8818:7;8827:6;8835:9;8846;8767:15;:89::i;:::-;8750:106;-1:-1:-1;8875:25:41;8750:106;8890:9;8875:14;:25::i;:::-;8866:34;8454:476;-1:-1:-1;;;;;;;;;;8454:476:41:o;3915:177::-;4048:28;;3915:177::o;2787::0:-;2920:28;;2787:177::o;3326:384:9:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:9;3522:88;;3569:30;;-1:-1:-1;;;3569:30:9;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;3716:283::-;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:9:o;3217:348:1:-;3303:4;3319:40;3362:36;:34;:36::i;:::-;3319:79;;3408:12;3423:31;3440:4;3446:7;3423:16;:31::i;:::-;3408:46;;3468:7;3464:71;;;3491:14;:20;;;;;;;;;;:33;;3516:7;3491:24;:33::i;:::-;;3551:7;3217:348;-1:-1:-1;;;;3217:348:1:o;8737:170:2:-;8870:21;;8737:170::o;3231:65:0:-;6931:20:2;:18;:20::i;:::-;3231:65:0:o;6372:287:41:-;6931:20:2;:18;:20::i;:::-;6440:30:41::1;6473:26;:24;:26::i;:::-;6554:88;::::0;6440:59;;-1:-1:-1;6554:88:41::1;::::0;-1:-1:-1;;;;;;;;;;;1716:66:41;6582:28:::1;::::0;6612:14:::1;::::0;6628:13:::1;::::0;6554:88:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;6554:88:41;;::::1;::::0;;;;;;6531:121;;6554:88:::1;6531:121:::0;;::::1;::::0;6510:18:::1;::::0;;::::1;:142:::0;6372:287::o;5386:165:40:-;5511:24;;5386:165::o;2624:269:42:-;6931:20:2;:18;:20::i;:::-;2743:25:42::1;2771:21;:19;:21::i;:::-;2802:18;::::0;::::1;:36:::0;;;;-1:-1:-1;2848:19:42::1;::::0;;::::1;:38:::0;2624:269::o;3668:353:1:-;3755:4;3771:40;3814:36;:34;:36::i;:::-;3771:79;;3860:12;3875:32;3893:4;3899:7;3875:17;:32::i;:::-;3860:47;;3921:7;3917:74;;;3944:14;:20;;;;;;;;;;:36;;3972:7;3944:27;:36::i;13565:371:50:-;13643:37;13683:33;:31;:33::i;:::-;13643:73;-1:-1:-1;13727:12:50;13742:44;:24;;;13774:11;13742:31;:44::i;:::-;13727:59;;13802:7;13797:84;;13832:38;;-1:-1:-1;;;13832:38:50;;;;;2062:25:55;;;2035:18;;13832:38:50;1916:177:55;13797:84:50;13896:33;;2062:25:55;;;13896:33:50;;2050:2:55;2035:18;13896:33:50;1916:177:55;6525:356:50;6610:37;6650:33;:31;:33::i;:::-;6610:73;;6733:35;6753:11;6766:1;6733:19;:35::i;:::-;6779:33;;;;:20;;;:33;;;;;;;:44;;;6839:35;;;;;6800:11;;6820:3;;6839:35;:::i;5127:670::-;5298:37;5338:33;:31;:33::i;:::-;5298:73;-1:-1:-1;5441:10:50;5454:35;5298:73;5477:11;5454:22;:35::i;:::-;5441:48;;5504:5;5499:77;;5532:33;;-1:-1:-1;;;5532:33:50;;;;;2062:25:55;;;2035:18;;5532:33:50;1916:177:55;5499:77:50;5621:128;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5585:33:50;;;:20;;;;:33;;;;;:164;;;;;;;;;;;-1:-1:-1;;5585:164:50;;;;;;;;;;;;;5621:128;;5585:33;;:164;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5765:25:50;;2062::55;;;5765::50;;-1:-1:-1;2050:2:55;2035:18;5765:25:50;;;;;;;5288:509;;5127:670;;;;:::o;4599:312:3:-;4679:4;-1:-1:-1;;;;;4688:6:3;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:3;:32;:30;:32::i;:::-;-1:-1:-1;;;;;4749:42:3;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:3;;;;;;;;;;;10382:881:40;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10547:29:40::1;10597:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;10579:63:40::1;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10547:97;;10654:25;10682:32;:30;:32::i;:::-;10654:60;;10821:17;-1:-1:-1::0;;;;;10800:38:40::1;:17;-1:-1:-1::0;;;;;10800:38:40::1;::::0;10796:138:::1;;10886:17;10905;10861:62;;-1:-1:-1::0;;;10861:62:40::1;;;;;;;;;:::i;10796:138::-;11058:21;-1:-1:-1::0;;;;;11037:42:40::1;:17;-1:-1:-1::0;;;;;11037:42:40::1;;11033:153;;11134:21;11157:17;11102:73;;-1:-1:-1::0;;;11102:73:40::1;;;;;;;;;:::i;11033:153::-;11238:17;-1:-1:-1::0;;;;;11201:55:40::1;11219:17;-1:-1:-1::0;;;;;11201:55:40::1;;;;;;;;;;;10478:785;;10382:881:::0;;:::o;6052:538:3:-;6169:17;-1:-1:-1;;;;;6151:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:3;;;;;;;;-1:-1:-1;;6151:52:3;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:3;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:3;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:3;;;;;2062:25:55;;;2035:18;;6312:34:3;1916:177:55;6241:120:3;6374:54;6404:17;6423:4;6374:29;:54::i;11706:1044:40:-;11773:21;11797:18;:16;:18::i;:::-;11773:42;;11825:27;11855:24;:22;:24::i;:::-;11825:54;;12058:13;12036:19;:35;12032:712;;;12325:19;12347:35;12363:19;12347:13;:35;:::i;:::-;12325:57;-1:-1:-1;12396:26:40;12425:35;12325:57;12425:21;:35;:::i;:::-;12396:64;;12615:18;12606:6;:27;12602:132;;;12679:18;12699:11;12712:6;12660:59;;-1:-1:-1;;;12660:59:40;;;;;;;;;;:::i;1531:331:31:-;1640:6;1616:21;:30;1612:109;;;1704:4;1669:41;;-1:-1:-1;;;1669:41:31;;;;;;;;:::i;1612:109::-;1732:12;1750:9;-1:-1:-1;;;;;1750:14:31;1772:6;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:52;;;1798:7;1793:63;;1828:17;;-1:-1:-1;;;1828:17:31;;;;;;;;;;;5028:213:3;5102:4;-1:-1:-1;;;;;5111:6:3;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:3;;;;;;;;;;;3303:1314:42;3365:25;3393:21;:19;:21::i;:::-;3365:49;;3505:1;:18;;;3496:6;:27;3492:116;;;3570:1;:18;;;3590:6;3546:51;;-1:-1:-1;;;3546:51:42;;;;;;;;;:::i;3492:116::-;3918:19;;;;3904:10;3644:19;3879:36;;;;;;;;;;;3666:15;;3879:58;;;:::i;:::-;3865:11;:72;3861:201;;;3972:10;3986:1;3953:30;;;:18;;;:30;;;;;;;;:34;;;4001:36;;;;;;:50;;;3861:201;4200:18;;;;4177:10;4158:30;;;;:18;;;:30;;;;;;:39;;4191:6;;4158:39;:::i;:::-;:60;4154:158;;;4274:1;:18;;;4294:6;4241:60;;-1:-1:-1;;;4241:60:42;;;;;;;;;:::i;4154:158::-;4453:10;4434:30;;;;:18;;;:30;;;;;:40;;4468:6;;4434:30;:40;;4468:6;;4434:40;:::i;:::-;;;;-1:-1:-1;4519:37:42;;-1:-1:-1;4527:10:42;4549:6;4519:29;:37::i;:::-;4572:38;;2062:25:55;;;4591:10:42;;4572:38;;2050:2:55;2035:18;4572:38:42;;;;;;;3355:1262;;3303:1314;:::o;12363:268:50:-;12519:40;:1;12547:11;12519:27;:40::i;:::-;12514:111;;12582:32;;-1:-1:-1;;;12582:32:50;;;;;2062:25:55;;;2035:18;;12582:32:50;1916:177:55;15379:357:41;15578:30;15611:26;:24;:26::i;:::-;15680:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15647:23:41;;;-1:-1:-1;15647:23:41;;;;;;;;;:30;;;;;;;;;;-1:-1:-1;15647:30:41;;;;:82;;;;;;;;;;;;;;;;;;;;;15379:357::o;1289:162:42:-;1412:23;;1289:162::o;14644:345:50:-;14715:37;14755:33;:31;:33::i;:::-;14715:73;-1:-1:-1;14798:10:50;14811:43;:31;;;14847:6;14811:35;:43::i;:::-;14798:56;;14870:5;14865:77;;14924:6;14898:33;;-1:-1:-1;;;14898:33:50;;;;;;;;:::i;14865:77::-;14957:25;14975:6;14957:25;;;;;;:::i;4819:268:42:-;4901:25;4929:21;:19;:21::i;:::-;4960:18;;;:26;;;4996:19;;;:28;;;5040:40;;4901:49;;-1:-1:-1;5040:40:42;;;;4981:5;;5018:6;;5040:40;:::i;8228:408:50:-;8333:37;8373:33;:31;:33::i;:::-;8333:73;;8456:35;8476:11;8489:1;8456:19;:35::i;:::-;8502:33;;;;:20;;;;:33;;;;;;;:47;;;:64;;;;;;;;;;;;;;8555:10;8502:64;;:::i;:::-;;8582:47;8605:11;8618:10;8582:47;;;;;;;:::i;15125:356::-;15199:37;15239:33;:31;:33::i;:::-;15199:73;-1:-1:-1;15282:12:50;15297:46;:31;;;15336:6;15297:38;:46::i;:::-;15282:61;;15359:7;15354:78;;15414:6;15389:32;;-1:-1:-1;;;15389:32:50;;;;;;;;:::i;15354:78::-;15447:27;15467:6;15447:27;;;;;;:::i;8871:165:39:-;8951:4;8974:55;8984:3;-1:-1:-1;;;;;9004:23:39;;8974:9;:55::i;8801:758:50:-;8909:37;8949:33;:31;:33::i;:::-;8909:73;;9032:35;9052:11;9065:1;9032:19;:35::i;:::-;9078:29;9110:33;;;:20;;;;:33;;;;;:47;;9167:386;9191:19;;9187:23;;9167:386;;;9310:10;9293:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;9283:39;;;;;;9262:12;9275:1;9262:15;;;;;;;;:::i;:::-;;;;;;;;9245:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;9235:44;;;;;;:87;9231:312;;9373:19;;9360:12;;9373:23;;9395:1;;9373:23;:::i;:::-;9360:37;;;;;;;;:::i;:::-;;;;;;;;9342:12;9355:1;9342:15;;;;;;;;:::i;:::-;;;;;;;;:55;;;;;;:::i;:::-;;9415:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;9456:49;9481:11;9494:10;9456:49;;;;;;;:::i;:::-;;;;;;;;9523:5;;9231:312;9212:3;;9167:386;;1250:207:1;1403:38;;1250:207::o;9574:156:39:-;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;1303:160:26:-;1385:71;1405:5;1427;-1:-1:-1;;;;;1427:14:26;;1444:2;1448:5;1412:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1412:43:26;;;;;;;;;;;1385:19;:71::i;15973:322:50:-;16069:37;16109:33;:31;:33::i;:::-;16152:14;;;:66;;-1:-1:-1;;16152:66:50;;;;;;;;;;16233:55;;445:41:55;;;16152:14:50;;-1:-1:-1;16233:55:50;;433:2:55;418:18;16233:55:50;;;;;;;16059:236;15973:322;:::o;7067:419::-;7171:37;7211:33;:31;:33::i;:::-;7171:73;;7294:35;7314:11;7327:1;7294:19;:35::i;:::-;7340:33;;;;:20;;;:33;;;;;;;;;:49;;:66;;-1:-1:-1;;7340:66:50;;;;;;;;;;7422:57;;33805:25:55;;;33846:18;;;33839:50;7422:57:50;;33778:18:55;7422:57:50;33637:258:55;9117:115:39;9180:7;9206:19;9214:3;4556:18;;4474:107;17023:439:50;17124:37;17164:33;:31;:33::i;:::-;17124:73;-1:-1:-1;17208:10:50;17221:43;:24;;;17250:13;17221:28;:43::i;:::-;17208:56;;17280:5;17275:81;;17331:13;17308:37;;-1:-1:-1;;;17308:37:50;;;;;;;;:::i;17275:81::-;-1:-1:-1;;;;;17366:28:50;;;;;;:13;;;:28;;;;;:44;17397:13;17366:28;:44;:::i;:::-;-1:-1:-1;17426:29:50;;-1:-1:-1;;;;;17426:29:50;;;;;;;;17114:348;;17023:439;;:::o;17597:412::-;17673:37;17713:33;:31;:33::i;:::-;17673:73;-1:-1:-1;17757:12:50;17772:46;:24;;;17804:13;17772:31;:46::i;:::-;17757:61;;17834:7;17829:82;;17886:13;17864:36;;-1:-1:-1;;;17864:36:50;;;;;;;;:::i;17829:82::-;-1:-1:-1;;;;;17928:28:50;;;;;;:13;;;:28;;;;;17921:35;;;:::i;:::-;17971:31;;-1:-1:-1;;;;;17971:31:50;;;;;;;;17663:346;;17597:412;:::o;7664:404::-;7775:37;7815:33;:31;:33::i;:::-;7775:73;;7898:35;7918:11;7931:1;7898:19;:35::i;:::-;7944:33;;;;:20;;;;:33;;;;;;;;:62;;;;:47;;;;;:62;;;;;:::i;:::-;-1:-1:-1;8022:39:50;;2062:25:55;;;8022:39:50;;2050:2:55;2035:18;8022:39:50;1916:177:55;5940:434:50;6012:37;6052:33;:31;:33::i;:::-;6012:73;-1:-1:-1;6133:12:50;6148:38;6012:73;6174:11;6148:25;:38::i;:::-;6133:53;;6201:7;6196:78;;6231:32;;-1:-1:-1;;;6231:32:50;;;;;2062:25:55;;;2035:18;;6231:32:50;1916:177:55;6196:78:50;6291:33;;;;:20;;;;:33;;;;;6284:40;;;;;;;;-1:-1:-1;;6284:40:50;;;6291:33;;6284:40;;;;6291:33;6284:40;:::i;:::-;-1:-1:-1;;6340:27:50;;2062:25:55;;;6340:27:50;;2050:2:55;2035:18;6340:27:50;1916:177:55;5581:109:39;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;5930:123:39:-;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;3702:255:35:-;3780:7;3800:17;3819:18;3839:16;3859:27;3870:4;3876:9;3859:10;:27::i;:::-;3799:87;;;;;;3896:28;3908:5;3915:8;3896:11;:28::i;:::-;-1:-1:-1;3941:9:35;;3702:255;-1:-1:-1;;;;3702:255:35:o;2251:183:9:-;2388:30;;2251:183::o;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8316:150:39;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:39;;8409:4;:50::i;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;7892:388:0;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8634:156:39;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:39;;8730:7;:53::i;6221:129::-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;1957:138:19:-;-1:-1:-1;;;;;;;;;;;2035:53:19;-1:-1:-1;;;;;2035:53:19;;1957:138::o;2779:335::-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:19;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;6431:138:39:-;6511:4;6534:28;6544:3;6556:5;4264:129;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4059:629:26:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:26;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4664:5;4631:40;;-1:-1:-1;;;4631:40:26;;;;;;;;:::i;2241:406:39:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:39;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:39;2618:12;;2129:766:35;2210:7;2219:12;2233:7;2256:9;:16;2276:2;2256:22;2252:637;;2592:4;2577:20;;2571:27;2641:4;2626:20;;2620:27;2698:4;2683:20;;2677:27;2294:9;2669:36;2739:25;2750:4;2669:36;2571:27;2620;2739:10;:25::i;:::-;2732:32;;;;;;;;;;;2252:637;-1:-1:-1;;2860:16:35;;2811:1;;-1:-1:-1;2815:35:35;;2252:637;2129:766;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;-1:-1:-1;;;7439:23:35;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;-1:-1:-1;;;7550:46:35;;;;;2062:25:55;;;2035:18;;7550:46:35;1916:177:55;7479:243:35;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;-1:-1:-1;;;7679:32:35;;;;;2062:25:55;;;2035:18;;7679:32:35;1916:177:55;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;2815:1368:39:-;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:39;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;2186:281:19;2263:17;-1:-1:-1;;;;;2263:29:19;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:19;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:19;;-1:-1:-1;;;;;;2387:73:19;-1:-1:-1;;;;;2387:73:19;;;;;;;;;;2186:281::o;4106:253:31:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:31;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:31:o;6598:122:19:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:19;;;;;;;;;;;2705:151:31;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;5140:1530:35:-;5266:7;;;-1:-1:-1;;;;;6186:79:35;;6182:164;;;-1:-1:-1;6297:1:35;;-1:-1:-1;6301:30:35;;-1:-1:-1;6333:1:35;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;36178:25:55;;;36251:4;36239:17;;36219:18;;;36212:45;;;;36273:18;;;36266:34;;;36316:18;;;36309:34;;;6457:24:35;;36150:19:55;;6457:24:35;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:35;;-1:-1:-1;;6457:24:35;;;-1:-1:-1;;;;;;;6495:20:35;;6491:113;;-1:-1:-1;6547:1:35;;-1:-1:-1;6551:29:35;;-1:-1:-1;6547:1:35;;-1:-1:-1;6531:62:35;;6491:113;6622:6;-1:-1:-1;6630:20:35;;-1:-1:-1;6630:20:35;;-1:-1:-1;5140:1530:35;;;;;;;;;:::o;4625:582:31:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:31;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:31;;;;;;;;:::i;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3394:4;3359:41;;-1:-1:-1;;;3359:41:31;;;;;;;;:::i;3303:108::-;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:31;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:31:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:31;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14:286:55;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:55;;209:43;;199:71;;266:1;263;256:12;497:250;582:1;592:113;606:6;603:1;600:13;592:113;;;682:11;;;676:18;663:11;;;656:39;628:2;621:10;592:113;;;-1:-1:-1;;739:1:55;721:16;;714:27;497:250::o;752:271::-;794:3;832:5;826:12;859:6;854:3;847:19;875:76;944:6;937:4;932:3;928:14;921:4;914:5;910:16;875:76;:::i;:::-;1005:2;984:15;-1:-1:-1;;980:29:55;971:39;;;;1012:4;967:50;;752:271;-1:-1:-1;;752:271:55:o;1028:598::-;1080:3;1111;1143:5;1137:12;1170:6;1165:3;1158:19;1196:4;1225;1220:3;1216:14;1209:21;;1283:4;1273:6;1270:1;1266:14;1259:5;1255:26;1251:37;1322:4;1315:5;1311:16;1345:1;1355:245;1369:6;1366:1;1363:13;1355:245;;;1456:2;1452:7;1444:5;1438:4;1434:16;1430:30;1425:3;1418:43;1482:38;1515:4;1506:6;1500:13;1482:38;:::i;:::-;1578:12;;;;1474:46;-1:-1:-1;1543:15:55;;;;1391:1;1384:9;1355:245;;;-1:-1:-1;1616:4:55;;1028:598;-1:-1:-1;;;;;;;1028:598:55:o;1631:280::-;1830:2;1819:9;1812:21;1793:4;1850:55;1901:2;1890:9;1886:18;1878:6;1850:55;:::i;2098:632::-;2269:2;2321:21;;;2391:13;;2294:18;;;2413:22;;;2240:4;;2269:2;2492:15;;;;2466:2;2451:18;;;2240:4;2535:169;2549:6;2546:1;2543:13;2535:169;;;2610:13;;2598:26;;2679:15;;;;2644:12;;;;2571:1;2564:9;2535:169;;;-1:-1:-1;2721:3:55;;2098:632;-1:-1:-1;;;;;;2098:632:55:o;2735:131::-;-1:-1:-1;;;;;2810:31:55;;2800:42;;2790:70;;2856:1;2853;2846:12;2871:127;2932:10;2927:3;2923:20;2920:1;2913:31;2963:4;2960:1;2953:15;2987:4;2984:1;2977:15;3003:275;3074:2;3068:9;3139:2;3120:13;;-1:-1:-1;;3116:27:55;3104:40;;-1:-1:-1;;;;;3159:34:55;;3195:22;;;3156:62;3153:88;;;3221:18;;:::i;:::-;3257:2;3250:22;3003:275;;-1:-1:-1;3003:275:55:o;3283:186::-;3331:4;-1:-1:-1;;;;;3353:30:55;;3350:56;;;3386:18;;:::i;:::-;-1:-1:-1;3452:2:55;3431:15;-1:-1:-1;;3427:29:55;3458:4;3423:40;;3283:186::o;3474:462::-;3516:5;3569:3;3562:4;3554:6;3550:17;3546:27;3536:55;;3587:1;3584;3577:12;3536:55;3623:6;3610:20;3654:48;3670:31;3698:2;3670:31;:::i;:::-;3654:48;:::i;:::-;3727:2;3718:7;3711:19;3773:3;3766:4;3761:2;3753:6;3749:15;3745:26;3742:35;3739:55;;;3790:1;3787;3780:12;3739:55;3855:2;3848:4;3840:6;3836:17;3829:4;3820:7;3816:18;3803:55;3903:1;3878:16;;;3896:4;3874:27;3867:38;;;;3882:7;3474:462;-1:-1:-1;;;3474:462:55:o;3941:665::-;4036:6;4044;4052;4060;4113:3;4101:9;4092:7;4088:23;4084:33;4081:53;;;4130:1;4127;4120:12;4081:53;4169:9;4156:23;4188:31;4213:5;4188:31;:::i;:::-;4238:5;-1:-1:-1;4295:2:55;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;:::-;4360:7;-1:-1:-1;4414:2:55;4399:18;;4386:32;;-1:-1:-1;4469:2:55;4454:18;;4441:32;-1:-1:-1;;;;;4485:30:55;;4482:50;;;4528:1;4525;4518:12;4482:50;4551:49;4592:7;4583:6;4572:9;4568:22;4551:49;:::i;:::-;4541:59;;;3941:665;;;;;;;:::o;4818:321::-;4887:6;4940:2;4928:9;4919:7;4915:23;4911:32;4908:52;;;4956:1;4953;4946:12;4908:52;4983:23;;-1:-1:-1;;;;;5018:30:55;;5015:50;;;5061:1;5058;5051:12;5015:50;5084:49;5125:7;5116:6;5105:9;5101:22;5084:49;:::i;5326:472::-;5419:6;5427;5435;5488:2;5476:9;5467:7;5463:23;5459:32;5456:52;;;5504:1;5501;5494:12;5456:52;5543:9;5530:23;5562:31;5587:5;5562:31;:::i;:::-;5612:5;-1:-1:-1;5669:2:55;5654:18;;5641:32;5682:33;5641:32;5682:33;:::i;:::-;5326:472;;5734:7;;-1:-1:-1;;;5788:2:55;5773:18;;;;5760:32;;5326:472::o;5803:942::-;5856:5;5909:3;5902:4;5894:6;5890:17;5886:27;5876:55;;5927:1;5924;5917:12;5876:55;5950:20;;5989:4;-1:-1:-1;;;;;6042:10:55;;;6039:36;;;6055:18;;:::i;:::-;6101:2;6098:1;6094:10;6124:28;6148:2;6144;6140:11;6124:28;:::i;:::-;6186:15;;;6256;;;6252:24;;;6217:12;;;;6288:15;;;6285:35;;;6316:1;6313;6306:12;6285:35;6352:2;6344:6;6340:15;6329:26;;6364:352;6380:6;6375:3;6372:15;6364:352;;;6466:3;6453:17;6502:2;6489:11;6486:19;6483:109;;;6546:1;6575:2;6571;6564:14;6483:109;6617:56;6669:3;6664:2;6650:11;6642:6;6638:24;6634:33;6617:56;:::i;:::-;6605:69;;-1:-1:-1;6397:12:55;;;;6694;;;;6364:352;;;6734:5;5803:942;-1:-1:-1;;;;;;;;5803:942:55:o;6750:357::-;6844:6;6897:2;6885:9;6876:7;6872:23;6868:32;6865:52;;;6913:1;6910;6903:12;6865:52;6940:23;;-1:-1:-1;;;;;6975:30:55;;6972:50;;;7018:1;7015;7008:12;6972:50;7041:60;7093:7;7084:6;7073:9;7069:22;7041:60;:::i;7112:1014::-;7243:6;7251;7259;7267;7275;7283;7291;7299;7352:3;7340:9;7331:7;7327:23;7323:33;7320:53;;;7369:1;7366;7359:12;7320:53;7408:9;7395:23;7427:31;7452:5;7427:31;:::i;:::-;7477:5;-1:-1:-1;7534:2:55;7519:18;;7506:32;7547:33;7506:32;7547:33;:::i;:::-;7599:7;-1:-1:-1;7658:2:55;7643:18;;7630:32;7671:33;7630:32;7671:33;:::i;:::-;7723:7;-1:-1:-1;7777:2:55;7762:18;;7749:32;;-1:-1:-1;7828:3:55;7813:19;;7800:33;;-1:-1:-1;7880:3:55;7865:19;;7852:33;;-1:-1:-1;7932:3:55;7917:19;;7904:33;;-1:-1:-1;7988:3:55;7973:19;;7960:33;-1:-1:-1;;;;;8005:30:55;;8002:50;;;8048:1;8045;8038:12;8002:50;8071:49;8112:7;8103:6;8092:9;8088:22;8071:49;:::i;:::-;8061:59;;;7112:1014;;;;;;;;;;;:::o;8131:274::-;-1:-1:-1;;;;;8323:32:55;;;;8305:51;;8387:2;8372:18;;8365:34;8293:2;8278:18;;8131:274::o;8410:180::-;8469:6;8522:2;8510:9;8501:7;8497:23;8493:32;8490:52;;;8538:1;8535;8528:12;8490:52;-1:-1:-1;8561:23:55;;8410:180;-1:-1:-1;8410:180:55:o;8780:315::-;8848:6;8856;8909:2;8897:9;8888:7;8884:23;8880:32;8877:52;;;8925:1;8922;8915:12;8877:52;8961:9;8948:23;8938:33;;9021:2;9010:9;9006:18;8993:32;9034:31;9059:5;9034:31;:::i;:::-;9084:5;9074:15;;;8780:315;;;;;:::o;9100:740::-;9195:6;9203;9211;9219;9227;9280:3;9268:9;9259:7;9255:23;9251:33;9248:53;;;9297:1;9294;9287:12;9248:53;9336:9;9323:23;9355:31;9380:5;9355:31;:::i;:::-;9405:5;-1:-1:-1;9462:2:55;9447:18;;9434:32;9475:33;9434:32;9475:33;:::i;:::-;9527:7;-1:-1:-1;9581:2:55;9566:18;;9553:32;;-1:-1:-1;9637:2:55;9622:18;;9609:32;9650:33;9609:32;9650:33;:::i;:::-;9702:7;-1:-1:-1;9761:3:55;9746:19;;9733:33;9775;9733;9775;:::i;:::-;9827:7;9817:17;;;9100:740;;;;;;;;:::o;9845:389::-;9923:6;9931;9984:2;9972:9;9963:7;9959:23;9955:32;9952:52;;;10000:1;9997;9990:12;9952:52;10027:23;;-1:-1:-1;;;;;10062:30:55;;10059:50;;;10105:1;10102;10095:12;10059:50;10128:49;10169:7;10160:6;10149:9;10145:22;10128:49;:::i;:::-;10118:59;10224:2;10209:18;;;;10196:32;;-1:-1:-1;;;;9845:389:55:o;10239:118::-;10325:5;10318:13;10311:21;10304:5;10301:32;10291:60;;10347:1;10344;10337:12;10362:775;10490:6;10498;10506;10514;10567:3;10555:9;10546:7;10542:23;10538:33;10535:53;;;10584:1;10581;10574:12;10535:53;10611:23;;-1:-1:-1;;;;;10683:14:55;;;10680:34;;;10710:1;10707;10700:12;10680:34;10733:49;10774:7;10765:6;10754:9;10750:22;10733:49;:::i;:::-;10723:59;;10829:2;10818:9;10814:18;10801:32;10791:42;;10883:2;10872:9;10868:18;10855:32;10842:45;;10896:28;10918:5;10896:28;:::i;:::-;10943:5;;-1:-1:-1;11001:2:55;10986:18;;10973:32;;11017:16;;;11014:36;;;11046:1;11043;11036:12;11014:36;;11069:62;11123:7;11112:8;11101:9;11097:24;11069:62;:::i;11142:805::-;11255:6;11263;11271;11279;11287;11295;11303;11356:3;11344:9;11335:7;11331:23;11327:33;11324:53;;;11373:1;11370;11363:12;11324:53;11412:9;11399:23;11431:31;11456:5;11431:31;:::i;:::-;11481:5;-1:-1:-1;11538:2:55;11523:18;;11510:32;11551:33;11510:32;11551:33;:::i;:::-;11603:7;-1:-1:-1;11662:2:55;11647:18;;11634:32;11675:33;11634:32;11675:33;:::i;:::-;11142:805;;;;-1:-1:-1;11727:7:55;;11781:2;11766:18;;11753:32;;-1:-1:-1;11832:3:55;11817:19;;11804:33;;11884:3;11869:19;;11856:33;;-1:-1:-1;11936:3:55;11921:19;;;11908:33;;-1:-1:-1;11142:805:55;-1:-1:-1;;11142:805:55:o;11952:455::-;12029:6;12037;12090:2;12078:9;12069:7;12065:23;12061:32;12058:52;;;12106:1;12103;12096:12;12058:52;12145:9;12132:23;12164:31;12189:5;12164:31;:::i;:::-;12214:5;-1:-1:-1;12270:2:55;12255:18;;12242:32;-1:-1:-1;;;;;12286:30:55;;12283:50;;;12329:1;12326;12319:12;12283:50;12352:49;12393:7;12384:6;12373:9;12369:22;12352:49;:::i;:::-;12342:59;;;11952:455;;;;;:::o;12412:203::-;-1:-1:-1;;;;;12576:32:55;;;;12558:51;;12546:2;12531:18;;12412:203::o;12620:315::-;12688:6;12696;12749:2;12737:9;12728:7;12724:23;12720:32;12717:52;;;12765:1;12762;12755:12;12717:52;12804:9;12791:23;12823:31;12848:5;12823:31;:::i;:::-;12873:5;12925:2;12910:18;;;;12897:32;;-1:-1:-1;;;12620:315:55:o;12940:750::-;13060:6;13068;13076;13084;13092;13145:3;13133:9;13124:7;13120:23;13116:33;13113:53;;;13162:1;13159;13152:12;13113:53;13201:9;13188:23;13220:31;13245:5;13220:31;:::i;:::-;13270:5;-1:-1:-1;13326:2:55;13311:18;;13298:32;-1:-1:-1;;;;;13342:30:55;;13339:50;;;13385:1;13382;13375:12;13339:50;13408:49;13449:7;13440:6;13429:9;13425:22;13408:49;:::i;:::-;13398:59;;;13504:2;13493:9;13489:18;13476:32;13466:42;;13555:2;13544:9;13540:18;13527:32;13517:42;;13611:3;13600:9;13596:19;13583:33;13625;13650:7;13625:33;:::i;13695:248::-;13869:25;;;13925:2;13910:18;;13903:34;13857:2;13842:18;;13695:248::o;13948:247::-;14007:6;14060:2;14048:9;14039:7;14035:23;14031:32;14028:52;;;14076:1;14073;14066:12;14028:52;14115:9;14102:23;14134:31;14159:5;14134:31;:::i;14200:248::-;14268:6;14276;14329:2;14317:9;14308:7;14304:23;14300:32;14297:52;;;14345:1;14342;14335:12;14297:52;-1:-1:-1;;14368:23:55;;;14438:2;14423:18;;;14410:32;;-1:-1:-1;14200:248:55:o;14453:541::-;14541:6;14549;14602:2;14590:9;14581:7;14577:23;14573:32;14570:52;;;14618:1;14615;14608:12;14570:52;14645:23;;-1:-1:-1;;;;;14717:14:55;;;14714:34;;;14744:1;14741;14734:12;14714:34;14767:49;14808:7;14799:6;14788:9;14784:22;14767:49;:::i;:::-;14757:59;;14869:2;14858:9;14854:18;14841:32;14825:48;;14898:2;14888:8;14885:16;14882:36;;;14914:1;14911;14904:12;14882:36;;14937:51;14980:7;14969:8;14958:9;14954:24;14937:51;:::i;14999:855::-;15049:3;15088:4;15083:3;15079:14;15120:5;15114:12;15109:3;15102:25;15146:4;15213;15206:5;15202:16;15196:23;15189:31;15182:39;15175:4;15170:3;15166:14;15159:63;15268:4;15261:5;15257:16;15251:23;15306:4;15299;15294:3;15290:14;15283:28;15333:4;15366:12;15360:19;15401:6;15395:4;15388:20;15435:3;15430;15426:13;15417:22;;15492:3;15482:6;15479:1;15475:14;15470:3;15466:24;15462:34;15448:48;;15537:4;15523:12;15519:23;15505:37;;15560:1;15570:256;15584:6;15581:1;15578:13;15570:256;;;15673:3;15669:8;15663:3;15655:6;15651:16;15647:31;15640:5;15633:46;15702:40;15735:6;15726;15720:13;15702:40;:::i;:::-;15692:50;-1:-1:-1;15765:15:55;;;;15802:14;;;;15606:1;15599:9;15570:256;;;-1:-1:-1;15842:6:55;;14999:855;-1:-1:-1;;;;;;;14999:855:55:o;15859:1028::-;16188:2;16177:9;16170:21;16151:4;16214:55;16265:2;16254:9;16250:18;16242:6;16214:55;:::i;:::-;16288:2;16338:9;16330:6;16326:22;16321:2;16310:9;16306:18;16299:50;16369:6;16404;16398:13;16435:6;16427;16420:22;16470:2;16462:6;16458:15;16451:22;;16529:2;16519:6;16516:1;16512:14;16504:6;16500:27;16496:36;16567:2;16559:6;16555:15;16588:1;16598:260;16612:6;16609:1;16606:13;16598:260;;;16702:2;16698:7;16689:6;16681;16677:19;16673:33;16668:3;16661:46;16730:48;16771:6;16762;16756:13;16730:48;:::i;:::-;16836:12;;;;16720:58;-1:-1:-1;16801:15:55;;;;16634:1;16627:9;16598:260;;;-1:-1:-1;16875:6:55;;15859:1028;-1:-1:-1;;;;;;;;;15859:1028:55:o;16892:218::-;17039:2;17028:9;17021:21;17002:4;17059:45;17100:2;17089:9;17085:18;17077:6;17059:45;:::i;17368:388::-;17436:6;17444;17497:2;17485:9;17476:7;17472:23;17468:32;17465:52;;;17513:1;17510;17503:12;17465:52;17552:9;17539:23;17571:31;17596:5;17571:31;:::i;:::-;17621:5;-1:-1:-1;17678:2:55;17663:18;;17650:32;17691:33;17650:32;17691:33;:::i;17761:391::-;17992:25;;;18048:2;18033:18;;18026:34;;;;18091:2;18076:18;;18069:34;18134:2;18119:18;;18112:34;17979:3;17964:19;;17761:391::o;18633:241::-;18689:6;18742:2;18730:9;18721:7;18717:23;18713:32;18710:52;;;18758:1;18755;18748:12;18710:52;18797:9;18784:23;18816:28;18838:5;18816:28;:::i;18879:450::-;18954:6;18962;19015:2;19003:9;18994:7;18990:23;18986:32;18983:52;;;19031:1;19028;19021:12;18983:52;19058:23;;-1:-1:-1;;;;;19093:30:55;;19090:50;;;19136:1;19133;19126:12;19090:50;19159:49;19200:7;19191:6;19180:9;19176:22;19159:49;:::i;:::-;19149:59;;;19258:2;19247:9;19243:18;19230:32;19271:28;19293:5;19271:28;:::i;19559:658::-;19730:2;19782:21;;;19852:13;;19755:18;;;19874:22;;;19701:4;;19730:2;19953:15;;;;19927:2;19912:18;;;19701:4;19996:195;20010:6;20007:1;20004:13;19996:195;;;20075:13;;-1:-1:-1;;;;;20071:39:55;20059:52;;20166:15;;;;20131:12;;;;20107:1;20025:9;19996:195;;20222:260;20403:2;20392:9;20385:21;20366:4;20423:53;20472:2;20461:9;20457:18;20449:6;20423:53;:::i;20487:577::-;20600:6;20608;20661:2;20649:9;20640:7;20636:23;20632:32;20629:52;;;20677:1;20674;20667:12;20629:52;20704:23;;-1:-1:-1;;;;;20776:14:55;;;20773:34;;;20803:1;20800;20793:12;20773:34;20826:49;20867:7;20858:6;20847:9;20843:22;20826:49;:::i;:::-;20816:59;;20928:2;20917:9;20913:18;20900:32;20884:48;;20957:2;20947:8;20944:16;20941:36;;;20973:1;20970;20963:12;20941:36;;20996:62;21050:7;21039:8;21028:9;21024:24;20996:62;:::i;21397:127::-;21458:10;21453:3;21449:20;21446:1;21439:31;21489:4;21486:1;21479:15;21513:4;21510:1;21503:15;21529:648;21609:6;21662:2;21650:9;21641:7;21637:23;21633:32;21630:52;;;21678:1;21675;21668:12;21630:52;21705:16;;-1:-1:-1;;;;;21733:30:55;;21730:50;;;21776:1;21773;21766:12;21730:50;21799:22;;21852:4;21844:13;;21840:27;-1:-1:-1;21830:55:55;;21881:1;21878;21871:12;21830:55;21910:2;21904:9;21935:48;21951:31;21979:2;21951:31;:::i;21935:48::-;22006:2;21999:5;21992:17;22046:7;22041:2;22036;22032;22028:11;22024:20;22021:33;22018:53;;;22067:1;22064;22057:12;22018:53;22080:67;22144:2;22139;22132:5;22128:14;22123:2;22119;22115:11;22080:67;:::i;22562:245::-;22629:6;22682:2;22670:9;22661:7;22657:23;22653:32;22650:52;;;22698:1;22695;22688:12;22650:52;22730:9;22724:16;22749:28;22771:5;22749:28;:::i;22812:127::-;22873:10;22868:3;22864:20;22861:1;22854:31;22904:4;22901:1;22894:15;22928:4;22925:1;22918:15;22944:128;23011:9;;;23032:11;;;23029:37;;;23046:18;;:::i;24327:667::-;24602:4;24648:1;24644;24639:3;24635:11;24631:19;24689:2;24681:6;24677:15;24666:9;24659:34;24741:2;24733:6;24729:15;24724:2;24713:9;24709:18;24702:43;24781:3;24776:2;24765:9;24761:18;24754:31;24802:46;24843:3;24832:9;24828:19;24820:6;24802:46;:::i;:::-;24879:2;24864:18;;24857:34;;;;24922:3;24907:19;;24900:35;;;;-1:-1:-1;24972:15:55;;24966:3;24951:19;;;24944:44;24794:54;24327:667;-1:-1:-1;;;24327:667:55:o;24999:380::-;25078:1;25074:12;;;;25121;;;25142:61;;25196:4;25188:6;25184:17;25174:27;;25142:61;25249:2;25241:6;25238:14;25218:18;25215:38;25212:161;;25295:10;25290:3;25286:20;25283:1;25276:31;25330:4;25327:1;25320:15;25358:4;25355:1;25348:15;25212:161;;24999:380;;;:::o;25384:184::-;25454:6;25507:2;25495:9;25486:7;25482:23;25478:32;25475:52;;;25523:1;25520;25513:12;25475:52;-1:-1:-1;25546:16:55;;25384:184;-1:-1:-1;25384:184:55:o;25573:168::-;25646:9;;;25677;;25694:15;;;25688:22;;25674:37;25664:71;;25715:18;;:::i;25746:217::-;25786:1;25812;25802:132;;25856:10;25851:3;25847:20;25844:1;25837:31;25891:4;25888:1;25881:15;25919:4;25916:1;25909:15;25802:132;-1:-1:-1;25948:9:55;;25746:217::o;25968:125::-;26033:9;;;26054:10;;;26051:36;;;26067:18;;:::i;26098:251::-;26168:6;26221:2;26209:9;26200:7;26196:23;26192:32;26189:52;;;26237:1;26234;26227:12;26189:52;26269:9;26263:16;26288:31;26313:5;26288:31;:::i;26354:319::-;26556:25;;;26612:2;26597:18;;26590:34;;;;26655:2;26640:18;;26633:34;26544:2;26529:18;;26354:319::o;27913:304::-;-1:-1:-1;;;;;28143:15:55;;;28125:34;;28195:15;;28190:2;28175:18;;28168:43;28075:2;28060:18;;27913:304::o;28558:543::-;28660:2;28655:3;28652:11;28649:446;;;28696:1;28720:5;28717:1;28710:16;28764:4;28761:1;28751:18;28834:2;28822:10;28818:19;28815:1;28811:27;28805:4;28801:38;28870:4;28858:10;28855:20;28852:47;;;-1:-1:-1;28893:4:55;28852:47;28948:2;28943:3;28939:12;28936:1;28932:20;28926:4;28922:31;28912:41;;29003:82;29021:2;29014:5;29011:13;29003:82;;;29066:17;;;29047:1;29036:13;29003:82;;;29007:3;;;28558:543;;;:::o;29106:166::-;-1:-1:-1;;29234:1:55;29230:11;;;29226:24;29222:29;29212:40;29258:1;29254:11;;;;29209:57;;29106:166::o;29277:1345::-;29397:10;;-1:-1:-1;;;;;29419:30:55;;29416:56;;;29452:18;;:::i;:::-;29481:97;29571:6;29531:38;29563:4;29557:11;29531:38;:::i;:::-;29525:4;29481:97;:::i;:::-;29633:4;;29690:2;29679:14;;29707:1;29702:663;;;;30409:1;30426:6;30423:89;;;-1:-1:-1;30478:19:55;;;30472:26;30423:89;30538:67;30598:6;30591:5;30538:67;:::i;:::-;30532:4;30525:81;;29672:944;;29702:663;28505:1;28498:14;;;28542:4;28529:18;;-1:-1:-1;;29738:20:55;;;29856:236;29870:7;29867:1;29864:14;29856:236;;;29959:19;;;29953:26;29938:42;;30051:27;;;;30019:1;30007:14;;;;29886:19;;29856:236;;;29860:3;30120:6;30111:7;30108:19;30105:201;;;30181:19;;;30175:26;-1:-1:-1;;30264:1:55;30260:14;;;30276:3;30256:24;30252:37;30248:42;30233:58;30218:74;;30105:201;-1:-1:-1;;;;;30352:1:55;30336:14;;;30332:22;30319:36;;-1:-1:-1;29277:1345:55:o;30627:291::-;30804:6;30793:9;30786:25;30847:2;30842;30831:9;30827:18;30820:30;30767:4;30867:45;30908:2;30897:9;30893:18;30885:6;30867:45;:::i;30923:289::-;31054:3;31092:6;31086:13;31108:66;31167:6;31162:3;31155:4;31147:6;31143:17;31108:66;:::i;:::-;31190:16;;;;;30923:289;-1:-1:-1;;30923:289:55:o;31217:843::-;31345:3;31374:1;31407:6;31401:13;31437:36;31463:9;31437:36;:::i;:::-;31492:1;31509:17;;;31535:133;;;;31682:1;31677:358;;;;31502:533;;31535:133;-1:-1:-1;;31568:24:55;;31556:37;;31641:14;;31634:22;31622:35;;31613:45;;;-1:-1:-1;31535:133:55;;31677:358;31708:6;31705:1;31698:17;31738:4;31783;31780:1;31770:18;31810:1;31824:165;31838:6;31835:1;31832:13;31824:165;;;31916:14;;31903:11;;;31896:35;31959:16;;;;31853:10;;31824:165;;;31828:3;;;32018:6;32013:3;32009:16;32002:23;;31502:533;-1:-1:-1;32051:3:55;;31217:843;-1:-1:-1;;;;;;31217:843:55:o;32065:1435::-;32184:3;32178:4;32175:13;32172:26;;32191:5;;32065:1435::o;32172:26::-;32221:37;32253:3;32247:10;32221:37;:::i;:::-;-1:-1:-1;;;;;32270:30:55;;32267:56;;;32303:18;;:::i;:::-;32332:97;32422:6;32382:38;32414:4;32408:11;32382:38;:::i;32332:97::-;32455:1;32483:2;32475:6;32472:14;32500:1;32495:748;;;;33287:1;33304:6;33301:89;;;-1:-1:-1;33356:19:55;;;33350:26;33301:89;33416:67;33476:6;33469:5;33416:67;:::i;:::-;33410:4;33403:81;;32465:1029;;32495:748;28505:1;28498:14;;;28542:4;28529:18;;-1:-1:-1;;32531:20:55;;;28505:1;28498:14;;;28542:4;28529:18;;32695:9;32717:251;32731:7;32728:1;32725:14;32717:251;;;32813:21;;;32807:28;32792:44;;32863:1;32936:18;;;;32891:15;;;;32754:4;32747:12;32717:251;;;32721:3;32996:6;32987:7;32984:19;32981:203;;;33057:21;;33051:28;-1:-1:-1;;33154:3:55;33142:1;33138:14;;;33134:24;33130:37;33126:42;33111:58;33096:74;;;-1:-1:-1;;33230:1:55;33214:14;;;33210:22;33197:36;;-1:-1:-1;32065:1435:55:o;33505:127::-;33566:10;33561:3;33557:20;33554:1;33547:31;33597:4;33594:1;33587:15;33621:4;33618:1;33611:15;35527:127;35588:10;35583:3;35579:20;35576:1;35569:31;35619:4;35616:1;35609:15;35643:4;35640:1;35633:15" + }, + "methodIdentifiers": { + "BOOKING_OPERATOR_ROLE()": "852b3ccb", + "BOT_ADMIN_ROLE()": "33746274", + "CHEQUE_OPERATOR_ROLE()": "63e86cc8", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DOMAIN_TYPEHASH()": "20606b70", + "GAS_WITHDRAWER_ROLE()": "383aba87", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "SERVICE_ADMIN_ROLE()": "d09445c2", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "WITHDRAWER_ROLE()": "85f438c1", + "addMessengerBot(address,uint256)": "51889d6b", + "addPublicKey(address,bytes)": "ccde65dc", + "addService(string,uint256,bool,string[])": "432cf639", + "addServiceCapability(string,string)": "7512e55b", + "addSupportedToken(address)": "6d69fcaf", + "addWantedServices(string[])": "1c5db99e", + "buyBookingToken(uint256)": "26687c9f", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "getAllServiceHashes()": "42072bbd", + "getBookingTokenAddress()": "4f3f4639", + "getDomainSeparator()": "ed24911d", + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getPrefundAmount()": "c39409e1", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceCapabilities(string)": "319d13f3", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceFee(string)": "18274da4", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getServiceRestrictedRate(string)": "b5124635", + "getSupportedServices()": "7eec56c7", + "getSupportedTokens()": "d3c7c2c7", + "getTotalChequePayments()": "e96cf7ad", + "getWantedServiceHashes()": "136f50ca", + "getWantedServices()": "08564c19", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "initialize(address,address,uint256,address,address)": "33e1a223", + "isBotAllowed(address)": "e0b78add", + "mintBookingToken(address,string,uint256,uint256,address)": "58e5cae0", + "offChainPaymentSupported()": "241bbbfc", + "onERC721Received(address,address,uint256,bytes)": "150b7a02", + "proxiableUUID()": "52d1902d", + "removeMessengerBot(address)": "c6640e68", + "removePublicKey(address)": "e7bfce9a", + "removeService(string)": "f51acaea", + "removeServiceCapability(string,string)": "8c20f574", + "removeSupportedToken(address)": "76319190", + "removeWantedServices(string[])": "39e4c705", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setGasMoneyWithdrawal(uint256,uint256)": "6fc22cd1", + "setOffChainPaymentSupported(bool)": "a31aa039", + "setServiceCapabilities(string,string[])": "ebc20d20", + "setServiceFee(string,uint256)": "41bf7c69", + "setServiceRestrictedRate(string,bool)": "a7d022f8", + "supportsInterface(bytes4)": "01ffc9a7", + "transferERC20(address,address,uint256)": "9db5dbe4", + "transferERC721(address,address,uint256)": "1aca6376", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929", + "withdraw(address,uint256)": "f3fef3a3", + "withdrawGasMoney(uint256)": "5c988994" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"latestImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountNoUpgradeNeeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"DepositorNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefundLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PrefundNotSpentYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ZeroValueDeposit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"name\":\"ChequeVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceCapabilitiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ServiceFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"ServiceRestrictedRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BOOKING_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BOT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHEQUE_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasMoney\",\"type\":\"uint256\"}],\"name\":\"addMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"addService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"addServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"addWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"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\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service[]\",\"name\":\"services\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"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\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prefundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"mintBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"removeMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"removePublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"removeService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"removeServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"removeWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setGasMoneyWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isSupported\",\"type\":\"bool\"}],\"name\":\"setOffChainPaymentSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"setServiceCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setServiceFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"setServiceRestrictedRate\",\"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\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC721\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGasMoney\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security-contact\":\"https://r.xyz/program/camino-network\",\"details\":\"This contract uses UUPS style upgradeability. The authorization function `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is restricted to only upgrade to the implementation address registered on the {CMAccountManager} contract.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addPublicKey(address,bytes)\":{\"params\":{\"data\":\"public key data\",\"pubKeyAddress\":\"address of the public key\"}},\"addService(string,uint256,bool,string[])\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"capabilities\":\"Capabilities of the service (if any, optional)\",\"fee\":\"Fee of the service in aCAM (wei in ETH terminology)\",\"serviceName\":\"Service name to add to the account as a supported service\"}},\"addSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"addWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"buyBookingToken(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getBookingTokenAddress()\":{\"returns\":{\"_0\":\"BookingToken address\"}},\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getManagerAddress()\":{\"returns\":{\"_0\":\"CMAccountManager address\"}},\"getPrefundAmount()\":{\"returns\":{\"_0\":\"prefund amount\"}},\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}},\"getWantedServices()\":{\"returns\":{\"serviceNames\":\"List of service names\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isBotAllowed(address)\":{\"params\":{\"bot\":\"The bot's address\"}},\"mintBookingToken(address,string,uint256,uint256,address)\":{\"params\":{\"expirationTimestamp\":\"The expiration timestamp\",\"paymentToken\":\"The payment token, if address(0) then native\",\"price\":\"The price of the token\",\"reservedFor\":\"The account to reserve the token for\",\"uri\":\"The URI of the token\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"removeWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"params\":{\"limit\":\"Amount of gas money to withdraw in wei per period\",\"period\":\"Duration of the withdrawal period in seconds\"}},\"setOffChainPaymentSupported(bool)\":{\"params\":{\"_isSupported\":\"true if off-chain payment is supported\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferERC20(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to transfer\",\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC20 token\"}},\"transferERC721(address,address,uint256)\":{\"params\":{\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC721 token\",\"tokenId\":\"The token id of the token\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdrawGasMoney(uint256)\":{\"params\":{\"amount\":\"The amount to withdraw in aCAM (wei)\"}}},\"title\":\"Camino Messenger Account\",\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountImplementationMismatch(address,address)\":[{\"notice\":\"CMAccount implementation address does not match the one in the manager\"}],\"CMAccountNoUpgradeNeeded(address,address)\":[{\"notice\":\"New implementation is the same as the current implementation, no update needed\"}],\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"DepositorNotAllowed(address)\":[{\"notice\":\"Error to revert with if depositer is not allowed\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}],\"PrefundNotSpentYet(uint256,uint256,uint256)\":[{\"notice\":\"Error to revert with if the prefund is not spent yet\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Error to revert if transfer to zero address\"}],\"ZeroValueDeposit(address)\":[{\"notice\":\"Error to revert zero value deposits\"}]},\"events\":{\"CMAccountUpgraded(address,address)\":{\"notice\":\"CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\"},\"ChequeCashedIn(address,address,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"},\"ChequeVerified(address,address,address,address,uint256,uint256,uint256)\":{\"notice\":\"Cheque verified event. Emitted when a cheque is verified.\"},\"Deposit(address,uint256)\":{\"notice\":\"Deposit event, emitted when there is a new deposit\"},\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"},\"MessengerBotAdded(address)\":{\"notice\":\"Messenger bot added\"},\"MessengerBotRemoved(address)\":{\"notice\":\"Messenger bot removed\"},\"Withdraw(address,uint256)\":{\"notice\":\"Withdraw event, emitted when there is a new withdrawal\"}},\"kind\":\"user\",\"methods\":{\"BOOKING_OPERATOR_ROLE()\":{\"notice\":\"Booking operator role can mint and buy booking tokens using the functions on this contract. This is generally used by the bots. The price for the booking token is paid by this contract.\"},\"BOT_ADMIN_ROLE()\":{\"notice\":\"Bot admin role can add & remove bots and set gas money withdrawal parameters.\"},\"CHEQUE_OPERATOR_ROLE()\":{\"notice\":\"Cheque operator role can issue cheques to be paid by this CMAccount contract.\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"GAS_WITHDRAWER_ROLE()\":{\"notice\":\"Gas withdrawer role can withdraw gas money from the contract. This is intended to be used by the bots and is granted when `addMessengerBot` is called.\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"SERVICE_ADMIN_ROLE()\":{\"notice\":\"Service admin role can add & remove supported & wanted services.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"WITHDRAWER_ROLE()\":{\"notice\":\"Withdrawer role can withdraw funds from the contract.\"},\"addMessengerBot(address,uint256)\":{\"notice\":\"Adds messenger bot with initial gas money.\"},\"addPublicKey(address,bytes)\":{\"notice\":\"Add public key with address These public keys are intended to be used with for off-chain encryption of private booking data.\"},\"addService(string,uint256,bool,string[])\":{\"notice\":\"Adds a service to the account as a supported service. `serviceName` is defined as pkg + service name in protobuf. For example: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"addServiceCapability(string,string)\":{\"notice\":\"Add a single capability to the service by name\"},\"addSupportedToken(address)\":{\"notice\":\"Adds a supported payment token.\"},\"addWantedServices(string[])\":{\"notice\":\"Adds wanted services.\"},\"buyBookingToken(uint256)\":{\"notice\":\"Buys booking token.\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Returns the CMAccountManager address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceCapabilities(string)\":{\"notice\":\"Get service capabilities by name. Overloading the getServiceCapabilities function.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceFee(string)\":{\"notice\":\"Get service fee by name. Overloading the getServiceFee function.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getServiceRestrictedRate(string)\":{\"notice\":\"Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\"},\"getSupportedServices()\":{\"notice\":\"Get all supported services. Return a list of service names and a list of service objects.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"getWantedServices()\":{\"notice\":\"Get all wanted services.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Returns true if an address is authorized to sign cheques\"},\"mintBookingToken(address,string,uint256,uint256,address)\":{\"notice\":\"Mints booking token.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"removeMessengerBot(address)\":{\"notice\":\"Removes messenger bot by revoking the roles.\"},\"removePublicKey(address)\":{\"notice\":\"Remove public key by address\"},\"removeService(string)\":{\"notice\":\"Remove a service from the account by its name\"},\"removeServiceCapability(string,string)\":{\"notice\":\"Remove a single capability from the service by name\"},\"removeSupportedToken(address)\":{\"notice\":\"Removes a supported payment token.\"},\"removeWantedServices(string[])\":{\"notice\":\"Removes wanted services.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"notice\":\"Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\"},\"setOffChainPaymentSupported(bool)\":{\"notice\":\"Sets if off-chain payment is supported.\"},\"setServiceCapabilities(string,string[])\":{\"notice\":\"Set all capabilities for a service by name\"},\"setServiceFee(string,uint256)\":{\"notice\":\"Set the fee of a service by name\"},\"setServiceRestrictedRate(string,bool)\":{\"notice\":\"Set the restricted rate of a service by name\"},\"transferERC20(address,address,uint256)\":{\"notice\":\"Transfers ERC20 tokens. This function reverts if `to` is the zero address.\"},\"transferERC721(address,address,uint256)\":{\"notice\":\"Transfers ERC721 tokens. This function reverts if `to` is the zero address.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw CAM from the CMAccount This function reverts if the amount is bigger then the prefund left to spend. This is to prevent spam by forcing user to spend the full prefund for cheques, so they can not just create an account and withdraw the prefund.\"},\"withdrawGasMoney(uint256)\":{\"notice\":\"Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\"}},\"notice\":\"A CM Account manages funds, minting/buying of booking tokens, provided or wanted services, and multiple bots for distributors and suppliers on Camino Messenger ecosystem. Registering bots is done by role based access control. Bot's with `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract. Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`. `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the contract to be used as gas money. This restricted with a `limit` (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting values are 10 CAM per 24 hours. `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by calling the corresponding functions on the {BookingToken} contract. The buy operation pays the price of the Booking Token with the funds on the {CMAccount} contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/CMAccount.sol\":\"CMAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/account/CMAccount.sol\":{\"keccak256\":\"0x574b1ad19f884553ad06ca2e24a336e72045ae3c5526c842cff8803fee35b3bf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://30676eec59b41c5fc5ef5e471873abace3c07795ce0fffffcd13d4bbc4736b6c\",\"dweb:/ipfs/QmSmkYNnXvqvhLxmxCCqWtgiHPhYxJGXC5xRdgGkVJaSa1\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0xd6f95b1df0365ac0bad94d30ffb8dd7abd6c85508fe204ae74bd7a257453d288\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://78025e37d4812be6c208bc8401d294be2ad584aaf6fca4fd0bf0ad22d3123dcb\",\"dweb:/ipfs/QmTRobWP4tzmM2k3WeYep9Vec1r5AePKGYnkeojRw2PtXV\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8461844c200384ba3200b76838af47fa1903a713ee101f1dc7f2f4c3225c43e9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd1565ca7a63c5de78072e929f6533426c213568c27d6404fa73fa2c319272f0\",\"dweb:/ipfs/QmfLLWoSgnLcwBhUGg1V6KSnY5czbTVhT28BL74QAT53yL\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x9f4d055ee7a2a9d0d17e511c943f103c7bd209926a4c8923ef7f3f4d072f2eca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81dacf1bd7d2879bd2e2456cea8fbe32765cbcff515795ed498e5dbfff54a97b\",\"dweb:/ipfs/QmZZW9QfyAyWpnPSqZrpbYPfC5igYBwS9CtjGpWBBCpzCY\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x6998e0652edba34b8168dad687606f6d82dd743cc928ffd7b4d489049de56af1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97e183226c2cb03d487b61adb01581fdea2956f60ef087a695e3b029d3ace3f8\",\"dweb:/ipfs/QmdN6KxCwcZLAd4hCSUT5JorLHRxMiiEwgSVwiAiEvg8Tv\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/ChequeManager.sol": { + "ChequeManager": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "developerFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "payment", + "type": "uint256" + } + ], + "name": "ChequeVerified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DOMAIN_TYPEHASH()": "20606b70", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "getDomainSeparator()": "ed24911d", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getTotalChequePayments()": "e96cf7ad", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "isBotAllowed(address)": "e0b78add", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"name\":\"ChequeVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}]},\"events\":{\"ChequeCashedIn(address,address,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"},\"ChequeVerified(address,address,address,address,uint256,uint256,uint256)\":{\"notice\":\"Cheque verified event. Emitted when a cheque is verified.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Abstract function to get the manager address. This must be implemented by the inheriting contract.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Abstract function to check if a bot is allowed to sign cheques. This must be implemented by the inheriting contract.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"}},\"notice\":\"ChequeManager manages, verifies, and cashes in the messenger cheques. EIP712 Domain name & version: DOMAIN_NAME = \\\"CaminoMessenger\\\" DOMAIN_VERSION= \\\"1\\\"\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/ChequeManager.sol\":\"ChequeManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0xd6f95b1df0365ac0bad94d30ffb8dd7abd6c85508fe204ae74bd7a257453d288\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://78025e37d4812be6c208bc8401d294be2ad584aaf6fca4fd0bf0ad22d3123dcb\",\"dweb:/ipfs/QmTRobWP4tzmM2k3WeYep9Vec1r5AePKGYnkeojRw2PtXV\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/GasMoneyManager.sol": { + "GasMoneyManager": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}}},\"title\":\"GasMoneyManager\",\"version\":1},\"userdoc\":{\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"}},\"kind\":\"user\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"}},\"notice\":\"GasMoneyManager manages gas money withdrawals for a {CMAccount}. Gas money withdrawals are restricted to a withdrawal limit and period.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/GasMoneyManager.sol\":\"GasMoneyManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8461844c200384ba3200b76838af47fa1903a713ee101f1dc7f2f4c3225c43e9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd1565ca7a63c5de78072e929f6533426c213568c27d6404fa73fa2c319272f0\",\"dweb:/ipfs/QmfLLWoSgnLcwBhUGg1V6KSnY5czbTVhT28BL74QAT53yL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/ICMAccount.sol": { + "ICMAccount": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "initialize(address,address,uint256,address,address)": "33e1a223" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prefundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/ICMAccount.sol\":\"ICMAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0x95dc0274f6c1574ab3cabaa226954bdffb2b2bef1c49946bccc54c7f33f38c38\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f558dafbd05517ae04495df2e38fc10dc3453bf94992aa946da76ba0f7192a18\",\"dweb:/ipfs/QmemMRVzK2y9dedXEquuPfEvLSm4gTrGC8nzgM53m2bVc7\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingToken.sol": { + "BookingToken": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "ExpirationTimestampTooSoon", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reservationPrice", + "type": "uint256" + } + ], + "name": "IncorrectPrice", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + } + ], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + } + ], + "name": "ReservationExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "ReservationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "supplier", + "type": "address" + } + ], + "name": "SupplierIsNotOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + } + ], + "name": "TokenIsReserved", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "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": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "TokenBought", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "supplier", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "TokenReserved", + "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": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinExpirationTimestampDiff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "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": "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": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "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": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "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": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setManagerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "setMinExpirationTimestampDiff", + "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": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "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": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a06040523060805234801561001457600080fd5b5060805161307961003e60003960008181611487015281816114b001526115fa01526130796000f3fe60806040526004361061019e5760003560e01c80624fdd3c146101a357806301ffc9a7146101da57806306fdde031461020a578063081812fc1461022c578063095ea7b3146102595780630e75c1a81461027b57806312b357b51461029e57806318160ddd146102be57806323b872dd146102d3578063248a9ca3146102f35780632edf5e2c146103135780632f2ff15d146103355780632f745c591461035557806336568abe14610375578063414319081461039557806342842e0e146103b55780634f1ef286146103d55780634f6ccce7146103e8578063516a82b81461040857806352d1902d146104285780635d4badb21461043d5780636352211e1461045d57806370a082311461047d57806391d148541461049d57806395d89b41146104bd57806396591edd146104d2578063a217fddf146104e5578063a22cb465146104fa578063ad3cb1cc1461051a578063b88d4fde1461054b578063c0c53b8b1461056b578063c162d7da1461058b578063c87b56dd146105a0578063d547741f146105c0578063e985e9c5146105e0578063f72c0d8b14610600575b600080fd5b3480156101af57600080fd5b506101c36101be3660046128a4565b610622565b6040516101d19291906128bd565b60405180910390f35b3480156101e657600080fd5b506101fa6101f53660046128ea565b61065f565b60405190151581526020016101d1565b34801561021657600080fd5b5061021f610670565b6040516101d19190612957565b34801561023857600080fd5b5061024c6102473660046128a4565b610711565b6040516101d1919061296a565b34801561026557600080fd5b50610279610274366004612993565b610726565b005b34801561028757600080fd5b50610290610735565b6040519081526020016101d1565b3480156102aa57600080fd5b506101fa6102b93660046129bf565b61074a565b3480156102ca57600080fd5b506102906107c0565b3480156102df57600080fd5b506102796102ee3660046129dc565b6107cb565b3480156102ff57600080fd5b5061029061030e3660046128a4565b6107e4565b34801561031f57600080fd5b5061029060008051602061302483398151915281565b34801561034157600080fd5b50610279610350366004612a1d565b610804565b34801561036157600080fd5b50610290610370366004612993565b610826565b34801561038157600080fd5b50610279610390366004612a1d565b610891565b3480156103a157600080fd5b506102796103b03660046129bf565b6108c4565b3480156103c157600080fd5b506102796103d03660046129dc565b6108fc565b6102796103e3366004612af8565b610917565b3480156103f457600080fd5b506102906104033660046128a4565b610932565b34801561041457600080fd5b506102796104233660046128a4565b610993565b34801561043457600080fd5b506102906109c0565b34801561044957600080fd5b50610279610458366004612b47565b6109dd565b34801561046957600080fd5b5061024c6104783660046128a4565b610acb565b34801561048957600080fd5b506102906104983660046129bf565b610ad6565b3480156104a957600080fd5b506101fa6104b8366004612a1d565b610b2e565b3480156104c957600080fd5b5061021f610b64565b6102796104e03660046128a4565b610b81565b3480156104f157600080fd5b50610290600081565b34801561050657600080fd5b50610279610515366004612be0565b610e97565b34801561052657600080fd5b5061021f604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561055757600080fd5b50610279610566366004612c0e565b610ea2565b34801561057757600080fd5b50610279610586366004612c79565b610eb7565b34801561059757600080fd5b5061024c611064565b3480156105ac57600080fd5b5061021f6105bb3660046128a4565b61107f565b3480156105cc57600080fd5b506102796105db366004612a1d565b61108a565b3480156105ec57600080fd5b506101fa6105fb366004612cc4565b6110a6565b34801561060c57600080fd5b50610290600080516020612fe483398151915281565b600080600061062f6110e5565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061066a82611109565b92915050565b6060600061067c61112e565b905080600001805461068d90612cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990612cf2565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b505050505091505090565b600061071c82611152565b5061066a8261118a565b6107318282336111b3565b5050565b6000806107406110e5565b6002015492915050565b6000610754611064565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b815260040161077f919061296a565b602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066a9190612d2c565b6000806107406111c0565b6107d4816111e4565b6107df8383836112c4565b505050565b6000806107ef611335565b60009384526020525050604090206001015490565b61080d826107e4565b61081681611359565b6108208383611363565b50505050565b6000806108316111c0565b905061083c84610ad6565b831061086857838360405163295f44f760e21b815260040161085f929190612d49565b60405180910390fd5b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b03811633146108ba5760405163334bd91960e11b815260040160405180910390fd5b6107df8282611404565b60006108cf81611359565b60006108d96110e5565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b6107df83838360405180602001604052806000815250610ea2565b61091f61147c565b61092882611523565b610731828261153b565b60008061093d6111c0565b90506109476107c0565b831061096b5760008360405163295f44f760e21b815260040161085f929190612d49565b80600201838154811061098057610980612d62565b9060005260206000200154915050919050565b6000805160206130248339815191526109ab81611359565b60006109b56110e5565b600201929092555050565b60006109ca6115ef565b5060008051602061300483398151915290565b336109e781611638565b6109f086611638565b60006109fa6110e5565b6002810154909150610a0c8142612d8e565b8611610a3557604051630999f7d760e41b8152600481018790526024810182905260440161085f565b60018201805460009182610a4883612da1565b919050559050610a583382611660565b610a62818961167a565b610a70818a338a8a8a6116d8565b60408051888152602081018890526001600160a01b0387811682840152915133928c169184917f80336fa715077c3eac32c02d3302e437dabf25774b2068d72d0d2a928643c4719181900360600190a4505050505050505050565b600061066a82611152565b600080610ae161112e565b90506001600160a01b038316610b0d5760006040516322718ad960e21b815260040161085f919061296a565b6001600160a01b039092166000908152600390920160205250604090205490565b600080610b39611335565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b60606000610b7061112e565b905080600101805461068d90612cf2565b610b89611779565b33610b9381611638565b6000610b9d6110e5565b600084815260038083016020908152604092839020835160a08101855281546001600160a01b0390811680835260018401548216948301949094526002830154958201959095529281015460608401526004015490921660808201529192503314610c20578051604051632663a9c560e11b815261085f91903390600401612dba565b8060400151421115610c565783816040015160405163293d73b760e11b815260040161085f929190918252602082015260400190565b6000610c6185610acb565b905081602001516001600160a01b0316816001600160a01b031614610ca057602082015160405163103d145960e31b815261085f9187916004016128bd565b610caf826020015133876117af565b600085815260038085016020526040822080546001600160a01b0319908116825560018201805482169055600282018490559181019290925560049091018054909116905560808201516001600160a01b031615801590610d14575060008260600151115b15610e10576080820151604051636eb1769f60e11b81526000916001600160a01b03169063dd62ed3e90610d4e9033903090600401612dba565b602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190612dd4565b90508260600151811015610dde576080830151606084015160405163246fb68960e21b81523360048201526001600160a01b03909216602483015260448201526064810182905260840161085f565b610e0a338460200151856060015186608001516001600160a01b031661184b909392919063ffffffff16565b50610e5b565b81606001513414610e43576060820151604051630145611560e21b8152346004820152602481019190915260440161085f565b6020820151610e5b906001600160a01b0316346118a5565b604051339086907fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb9504090600090a350505050610e9461193c565b50565b61073133838361194d565b610eab826111e4565b610820848484846119f2565b6000610ec1611a09565b805490915060ff600160401b82041615906001600160401b0316600081158015610ee85750825b90506000826001600160401b03166001148015610f045750303b155b905081158015610f12575080155b15610f305760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610f5957845460ff60401b1916600160401b1785555b610fa36040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b815250611a2d565b610fab611a3f565b610fb3611a3f565b610fbb611a3f565b610fc3611a3f565b610fce600088611363565b50610fe7600080516020612fe483398151915287611363565b506000610ff26110e5565b80546001600160a01b0319166001600160a01b038b16178155603c60029091015550831561105a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008061106f6110e5565b546001600160a01b031692915050565b606061066a82611a47565b611093826107e4565b61109c81611359565b6108208383611404565b6000806110b161112e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b148061066a575061066a82611b67565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b60008061115e83611b8c565b90506001600160a01b03811661066a57604051637e27328960e01b81526004810184905260240161085f565b60008061119561112e565b6000938452600401602052505060409020546001600160a01b031690565b6107df8383836001611bb5565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b60006111ee6110e5565b600083815260038083016020908152604092839020835160a08101855281546001600160a01b0390811682526001830154811693820193909352600282015494810185905292810154606084015260040154166080820152919250421161126c57805160405163d4cde2af60e01b815261085f9185916004016128bd565b80516001600160a01b0316156107df5750600091825260039081016020526040822080546001600160a01b03199081168255600182018054821690556002820184905591810192909255600490910180549091169055565b6001600160a01b0382166112ee576000604051633250574960e11b815260040161085f919061296a565b60006112fb838333611cbf565b9050836001600160a01b0316816001600160a01b031614610820578382826040516364283d7b60e01b815260040161085f93929190612ded565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b610e948133611cd6565b60008061136e611335565b905061137a8484610b2e565b6113fa576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556113b03390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061066a565b600091505061066a565b60008061140f611335565b905061141b8484610b2e565b156113fa576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061066a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f7600080516020613004833981519152546001600160a01b031690565b6001600160a01b031614155b156115215760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020612fe483398151915261073181611359565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611595575060408051601f3d908101601f1916820190925261159291810190612dd4565b60015b6115b45781604051634c9c8ce360e01b815260040161085f919061296a565b60008051602061300483398151915281146115e557604051632a87526960e21b81526004810182905260240161085f565b6107df8383611d01565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115215760405163703e46dd60e11b815260040160405180910390fd5b6116418161074a565b610e945780604051638014575360e01b815260040161085f919061296a565b610731828260405180602001604052806000815250611d57565b6000611684611d6e565b600084815260208290526040902090915061169f8382612e60565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b60006116e26110e5565b6040805160a0810182526001600160a01b0398891681529688166020808901918252888301978852606089019687529489166080890190815260009a8b5260039384019095529820955186546001600160a01b031990811691891691909117875597516001870180548a16918916919091179055935160028601555090519183019190915551600490910180549093169116179055565b6000611783611d92565b8054909150600119016117a957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b0382166117d9576000604051633250574960e11b815260040161085f919061296a565b60006117e783836000611cbf565b90506001600160a01b03811661181357604051637e27328960e01b81526004810183905260240161085f565b836001600160a01b0316816001600160a01b031614610820578382826040516364283d7b60e01b815260040161085f93929190612ded565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610820908590611db6565b804710156118c8573060405163cd78605960e01b815260040161085f919061296a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611915576040519150601f19603f3d011682016040523d82523d6000602084013e61191a565b606091505b50509050806107df57604051630a12f52160e11b815260040160405180910390fd5b6000611946611d92565b6001905550565b600061195761112e565b90506001600160a01b0383166119825782604051630b61174360e31b815260040161085f919061296a565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6119fd8484846107cb565b61082084848484611e10565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611a35611f27565b6107318282611f4c565b611521611f27565b60606000611a53611d6e565b9050611a5e83611152565b5060008381526020829052604081208054611a7890612cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa490612cf2565b8015611af15780601f10611ac657610100808354040283529160200191611af1565b820191906000526020600020905b815481529060010190602001808311611ad457829003601f168201915b505050505090506000611b0f60408051602081019091526000815290565b90508051600003611b2257509392505050565b815115611b55578082604051602001611b3c929190612f1f565b6040516020818303038152906040529350505050919050565b611b5e85611f7a565b95945050505050565b60006001600160e01b03198216632483248360e11b148061066a575061066a82611fee565b600080611b9761112e565b6000938452600201602052505060409020546001600160a01b031690565b6000611bbf61112e565b90508180611bd557506001600160a01b03831615155b15611c8e576000611be585611152565b90506001600160a01b03841615801590611c115750836001600160a01b0316816001600160a01b031614155b8015611c245750611c2281856110a6565b155b15611c44578360405163a9fbf51f60e01b815260040161085f919061296a565b8215611c8c5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ccc848484612013565b90505b9392505050565b611ce08282610b2e565b61073157808260405163e2517d3f60e01b815260040161085f929190612d49565b611d0a826120a1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d4f576107df82826120fd565b61073161216a565b611d618383612189565b6107df6000848484611e10565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000611dcb6001600160a01b038416836121ee565b90508051600014158015611df0575080806020019051810190611dee9190612d2c565b155b156107df5782604051635274afe760e01b815260040161085f919061296a565b6001600160a01b0383163b1561082057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611e52903390889087908790600401612f4e565b6020604051808303816000875af1925050508015611e8d575060408051601f3d908101601f19168201909252611e8a91810190612f81565b60015b611eed573d808015611ebb576040519150601f19603f3d011682016040523d82523d6000602084013e611ec0565b606091505b508051600003611ee55783604051633250574960e11b815260040161085f919061296a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611f205783604051633250574960e11b815260040161085f919061296a565b5050505050565b611f2f6121fc565b61152157604051631afcd79f60e31b815260040160405180910390fd5b611f54611f27565b6000611f5e61112e565b905080611f6b8482612e60565b50600181016108208382612e60565b6060611f8582611152565b506000611f9d60408051602081019091526000815290565b90506000815111611fbd5760405180602001604052806000815250611ccf565b80611fc784612216565b604051602001611fd8929190612f1f565b6040516020818303038152906040529392505050565b60006001600160e01b0319821663780e9d6360e01b148061066a575061066a826122a8565b6000806120218585856122f8565b90506001600160a01b03811661203f5761203a846123ff565b612062565b846001600160a01b0316816001600160a01b031614612062576120628185612438565b6001600160a01b03851661207e57612079846124d9565b611ccc565b846001600160a01b0316816001600160a01b031614611ccc57611ccc85856125a2565b806001600160a01b03163b6000036120ce5780604051634c9c8ce360e01b815260040161085f919061296a565b60008051602061300483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161211a9190612f9e565b600060405180830381855af49150503d8060008114612155576040519150601f19603f3d011682016040523d82523d6000602084013e61215a565b606091505b5091509150611b5e8583836125fa565b34156115215760405163b398979f60e01b815260040160405180910390fd5b6001600160a01b0382166121b3576000604051633250574960e11b815260040161085f919061296a565b60006121c183836000611cbf565b90506001600160a01b038116156107df5760006040516339e3563760e11b815260040161085f919061296a565b6060611ccf8383600061264d565b6000612206611a09565b54600160401b900460ff16919050565b60606000612223836126ea565b60010190506000816001600160401b0381111561224257612242612a4d565b6040519080825280601f01601f19166020018201604052801561226c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461227657509392505050565b60006001600160e01b031982166380ac58cd60e01b14806122d957506001600160e01b03198216635b5e139f60e01b145b8061066a57506301ffc9a760e01b6001600160e01b031983161461066a565b60008061230361112e565b9050600061231085611b8c565b90506001600160a01b0384161561232c5761232c8185876127c0565b6001600160a01b0381161561236c57612349600086600080611bb5565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b0386161561239d576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b60006124096111c0565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b60006124426111c0565b9050600061244f84610ad6565b60008481526001840160205260409020549091508082146124a4576001600160a01b03851660009081526020848152604080832085845282528083205484845281842081905583526001860190915290208190555b50600092835260018201602090815260408085208590556001600160a01b039095168452918252838320908352905290812055565b60006124e36111c0565b60028101549091506000906124fa90600190612fba565b600084815260038401602052604081205460028501805493945090928490811061252657612526612d62565b906000526020600020015490508084600201838154811061254957612549612d62565b60009182526020808320909101929092558281526003860190915260408082208490558682528120556002840180548061258557612585612fcd565b600190038181906000526020600020016000905590555050505050565b60006125ac6111c0565b9050600060016125bb85610ad6565b6125c59190612fba565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b60608261260f5761260a82612816565b611ccf565b815115801561262657506001600160a01b0384163b155b156126465783604051639996b31560e01b815260040161085f919061296a565b5080611ccf565b606081471015612672573060405163cd78605960e01b815260040161085f919061296a565b600080856001600160a01b0316848660405161268e9190612f9e565b60006040518083038185875af1925050503d80600081146126cb576040519150601f19603f3d011682016040523d82523d6000602084013e6126d0565b606091505b50915091506126e08683836125fa565b9695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106127295772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612753576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061277157662386f26fc10000830492506010015b6305f5e1008310612789576305f5e100830492506008015b612710831061279d57612710830492506004015b606483106127af576064830492506002015b600a831061066a5760010192915050565b6127cb83838361283f565b6107df576001600160a01b0383166127f957604051637e27328960e01b81526004810182905260240161085f565b818160405163177e802f60e01b815260040161085f929190612d49565b8051156128265780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006001600160a01b03831615801590611ccc5750826001600160a01b0316846001600160a01b03161480612879575061287984846110a6565b80611ccc5750826001600160a01b03166128928361118a565b6001600160a01b031614949350505050565b6000602082840312156128b657600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b031981168114610e9457600080fd5b6000602082840312156128fc57600080fd5b8135611ccf816128d4565b60005b8381101561292257818101518382015260200161290a565b50506000910152565b60008151808452612943816020860160208601612907565b601f01601f19169290920160200192915050565b602081526000611ccf602083018461292b565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610e9457600080fd5b600080604083850312156129a657600080fd5b82356129b18161297e565b946020939093013593505050565b6000602082840312156129d157600080fd5b8135611ccf8161297e565b6000806000606084860312156129f157600080fd5b83356129fc8161297e565b92506020840135612a0c8161297e565b929592945050506040919091013590565b60008060408385031215612a3057600080fd5b823591506020830135612a428161297e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115612a7d57612a7d612a4d565b604051601f8501601f19908116603f01168101908282118183101715612aa557612aa5612a4d565b81604052809350858152868686011115612abe57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612ae957600080fd5b611ccf83833560208501612a63565b60008060408385031215612b0b57600080fd5b8235612b168161297e565b915060208301356001600160401b03811115612b3157600080fd5b612b3d85828601612ad8565b9150509250929050565b600080600080600060a08688031215612b5f57600080fd5b8535612b6a8161297e565b945060208601356001600160401b03811115612b8557600080fd5b8601601f81018813612b9657600080fd5b612ba588823560208401612a63565b94505060408601359250606086013591506080860135612bc48161297e565b809150509295509295909350565b8015158114610e9457600080fd5b60008060408385031215612bf357600080fd5b8235612bfe8161297e565b91506020830135612a4281612bd2565b60008060008060808587031215612c2457600080fd5b8435612c2f8161297e565b93506020850135612c3f8161297e565b92506040850135915060608501356001600160401b03811115612c6157600080fd5b612c6d87828801612ad8565b91505092959194509250565b600080600060608486031215612c8e57600080fd5b8335612c998161297e565b92506020840135612ca98161297e565b91506040840135612cb98161297e565b809150509250925092565b60008060408385031215612cd757600080fd5b8235612ce28161297e565b91506020830135612a428161297e565b600181811c90821680612d0657607f821691505b602082108103612d2657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612d3e57600080fd5b8151611ccf81612bd2565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561066a5761066a612d78565b600060018201612db357612db3612d78565b5060010190565b6001600160a01b0392831681529116602082015260400190565b600060208284031215612de657600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b601f8211156107df576000816000526020600020601f850160051c81016020861015612e395750805b601f850160051c820191505b81811015612e5857828155600101612e45565b505050505050565b81516001600160401b03811115612e7957612e79612a4d565b612e8d81612e878454612cf2565b84612e10565b602080601f831160018114612ec25760008415612eaa5750858301515b600019600386901b1c1916600185901b178555612e58565b600085815260208120601f198616915b82811015612ef157888601518255948401946001909101908401612ed2565b5085821015612f0f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351612f31818460208801612907565b835190830190612f45818360208801612907565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906126e09083018461292b565b600060208284031215612f9357600080fd5b8151611ccf816128d4565b60008251612fb0818460208701612907565b9190910192915050565b8181038181111561066a5761066a612d78565b634e487b7160e01b600052603160045260246000fdfe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4a26469706673582212204eba32bccdf4e5ab2c63c1be3831fcea7f42a3e966ea8a76ea234f99d9a02c6b64736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x3079 PUSH2 0x3E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1487 ADD MSTORE DUP2 DUP2 PUSH2 0x14B0 ADD MSTORE PUSH2 0x15FA ADD MSTORE PUSH2 0x3079 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x19E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x4FDD3C EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xE75C1A8 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x2EDF5E2C EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x41431908 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x516A82B8 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x5D4BADB2 EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x96591EDD EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x54B JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0x58B JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x600 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x622 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP3 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x28EA JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0x670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x2957 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x2993 JUMP JUMPDEST PUSH2 0x726 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x74A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x7C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x2EE CALLDATASIZE PUSH1 0x4 PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x30E CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x7E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3024 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x804 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x2993 JUMP JUMPDEST PUSH2 0x826 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x891 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x8C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST PUSH2 0x279 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF8 JUMP JUMPDEST PUSH2 0x917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x932 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x423 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x993 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x458 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x9DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0xACB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x498 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0xAD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0xB2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0xB81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE0 JUMP JUMPDEST PUSH2 0xE97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C0E JUMP JUMPDEST PUSH2 0xEA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x586 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C79 JUMP JUMPDEST PUSH2 0xEB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x597 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x1064 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0x5BB CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x107F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x108A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x5FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x62F PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP5 KECCAK256 SWAP4 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x66A DUP3 PUSH2 0x1109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x67C PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x68D SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6B9 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x706 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6DB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x706 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0x1152 JUMP JUMPDEST POP PUSH2 0x66A DUP3 PUSH2 0x118A JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 CALLER PUSH2 0x11B3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x740 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x754 PUSH2 0x1064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x77F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x66A SWAP2 SWAP1 PUSH2 0x2D2C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x740 PUSH2 0x11C0 JUMP JUMPDEST PUSH2 0x7D4 DUP2 PUSH2 0x11E4 JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH2 0x12C4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EF PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x80D DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x816 DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x820 DUP4 DUP4 PUSH2 0x1363 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x831 PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x83C DUP5 PUSH2 0xAD6 JUMP JUMPDEST DUP4 LT PUSH2 0x868 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE SWAP1 SWAP3 MSTORE KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x8BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7DF DUP3 DUP3 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8CF DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8D9 PUSH2 0x10E5 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x91F PUSH2 0x147C JUMP JUMPDEST PUSH2 0x928 DUP3 PUSH2 0x1523 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93D PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x947 PUSH2 0x7C0 JUMP JUMPDEST DUP4 LT PUSH2 0x96B JUMPI PUSH1 0x0 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x980 JUMPI PUSH2 0x980 PUSH2 0x2D62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3024 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x9AB DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B5 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CA PUSH2 0x15EF JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH2 0x9E7 DUP2 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x9F0 DUP7 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0xA0C DUP2 TIMESTAMP PUSH2 0x2D8E JUMP JUMPDEST DUP7 GT PUSH2 0xA35 JUMPI PUSH1 0x40 MLOAD PUSH4 0x999F7D7 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 PUSH2 0xA48 DUP4 PUSH2 0x2DA1 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE SWAP1 POP PUSH2 0xA58 CALLER DUP3 PUSH2 0x1660 JUMP JUMPDEST PUSH2 0xA62 DUP2 DUP10 PUSH2 0x167A JUMP JUMPDEST PUSH2 0xA70 DUP2 DUP11 CALLER DUP11 DUP11 DUP11 PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE SWAP2 MLOAD CALLER SWAP3 DUP13 AND SWAP2 DUP5 SWAP2 PUSH32 0x80336FA715077C3EAC32C02D3302E437DABF25774B2068D72D0D2A928643C471 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x66A DUP3 PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAE1 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB0D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB39 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xB70 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x68D SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH2 0xB89 PUSH2 0x1779 JUMP JUMPDEST CALLER PUSH2 0xB93 DUP2 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB9D PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xA0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP6 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 SWAP3 POP CALLER EQ PUSH2 0xC20 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x2663A9C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD TIMESTAMP GT ISZERO PUSH2 0xC56 JUMPI DUP4 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x293D73B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP6 PUSH2 0xACB JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCA0 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x103D1459 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x28BD JUMP JUMPDEST PUSH2 0xCAF DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x17AF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP1 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD DUP3 AND SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP5 SWAP1 SSTORE SWAP2 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD14 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x60 ADD MLOAD GT JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD4E SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD8F SWAP2 SWAP1 PUSH2 0x2DD4 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x60 ADD MLOAD DUP2 LT ISZERO PUSH2 0xDDE JUMPI PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x246FB689 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x85F JUMP JUMPDEST PUSH2 0xE0A CALLER DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x184B SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0xE5B JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD CALLVALUE EQ PUSH2 0xE43 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1456115 PUSH1 0xE2 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE5B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x18A5 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP7 SWAP1 PUSH32 0xA751FB02C318279A22135A408663AE08EA45EAFA950A4351C14AE543CBB95040 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP PUSH2 0xE94 PUSH2 0x193C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x731 CALLER DUP4 DUP4 PUSH2 0x194D JUMP JUMPDEST PUSH2 0xEAB DUP3 PUSH2 0x11E4 JUMP JUMPDEST PUSH2 0x820 DUP5 DUP5 DUP5 DUP5 PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC1 PUSH2 0x1A09 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xF04 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xF12 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xF59 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xFA3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x2137B7B5B4B733AA37B5B2B7 PUSH1 0xA1 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x5452495 PUSH1 0xE4 SHL DUP2 MSTORE POP PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0xFAB PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFB3 PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFBB PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFC3 PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFCE PUSH1 0x0 DUP9 PUSH2 0x1363 JUMP JUMPDEST POP PUSH2 0xFE7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x1363 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xFF2 PUSH2 0x10E5 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR DUP2 SSTORE PUSH1 0x3C PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH2 0x105A JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x106F PUSH2 0x10E5 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x66A DUP3 PUSH2 0x1A47 JUMP JUMPDEST PUSH2 0x1093 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x109C DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x820 DUP4 DUP4 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10B1 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP7 AND DUP3 MSTORE SWAP4 SWAP1 SWAP4 MSTORE POP POP KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x9DB9D405BF15683CE835607B1F0B423DC1484D44BB9D5AF64A483FA4AFD82900 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x1B67 JUMP JUMPDEST PUSH32 0x80BB2B638CC20BC4D0A60D66940F3AB4A00C1D7B313497CA82FB0B4AB0079300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x115E DUP4 PUSH2 0x1B8C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x66A JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1195 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH32 0x645E039705490088DAAD89BAE25049A34F4A9072D398537B1AB2425F24CBED00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11EE PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xA0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP5 DUP2 ADD DUP6 SWAP1 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 SWAP3 POP TIMESTAMP GT PUSH2 0x126C JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 DUP6 SWAP2 PUSH1 0x4 ADD PUSH2 0x28BD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x7DF JUMPI POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD DUP3 AND SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP5 SWAP1 SSTORE SWAP2 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12EE JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12FB DUP4 DUP4 CALLER PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x820 JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH2 0xE94 DUP2 CALLER PUSH2 0x1CD6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x136E PUSH2 0x1335 JUMP JUMPDEST SWAP1 POP PUSH2 0x137A DUP5 DUP5 PUSH2 0xB2E JUMP JUMPDEST PUSH2 0x13FA JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x13B0 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140F PUSH2 0x1335 JUMP JUMPDEST SWAP1 POP PUSH2 0x141B DUP5 DUP5 PUSH2 0xB2E JUMP JUMPDEST ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1503 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x731 DUP2 PUSH2 0x1359 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1595 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1592 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2DD4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x15B4 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 PUSH2 0x1D01 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1641 DUP2 PUSH2 0x74A JUMP JUMPDEST PUSH2 0xE94 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x80145753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1D57 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1684 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x169F DUP4 DUP3 PUSH2 0x2E60 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E2 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP1 DUP10 ADD SWAP2 DUP3 MSTORE DUP9 DUP4 ADD SWAP8 DUP9 MSTORE PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE SWAP5 DUP10 AND PUSH1 0x80 DUP10 ADD SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x3 SWAP4 DUP5 ADD SWAP1 SWAP6 MSTORE SWAP9 KECCAK256 SWAP6 MLOAD DUP7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 OR DUP8 SSTORE SWAP8 MLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD DUP11 AND SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP4 MLOAD PUSH1 0x2 DUP7 ADD SSTORE POP SWAP1 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1783 PUSH2 0x1D92 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17D9 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E7 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1813 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x820 JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x820 SWAP1 DUP6 SWAP1 PUSH2 0x1DB6 JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x18C8 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1915 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x191A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1946 PUSH2 0x1D92 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1957 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1982 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x19FD DUP5 DUP5 DUP5 PUSH2 0x7CB JUMP JUMPDEST PUSH2 0x820 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1E10 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x1A35 PUSH2 0x1F27 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1F4C JUMP JUMPDEST PUSH2 0x1521 PUSH2 0x1F27 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1A53 PUSH2 0x1D6E JUMP JUMPDEST SWAP1 POP PUSH2 0x1A5E DUP4 PUSH2 0x1152 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x1A78 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1AA4 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1AF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1AD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x1B0F PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1B22 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1B55 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B3C SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B5E DUP6 PUSH2 0x1F7A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x1FEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B97 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x1BD5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1C8E JUMPI PUSH1 0x0 PUSH2 0x1BE5 DUP6 PUSH2 0x1152 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C11 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1C24 JUMPI POP PUSH2 0x1C22 DUP2 DUP6 PUSH2 0x10A6 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1C44 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST DUP3 ISZERO PUSH2 0x1C8C JUMPI DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CCC DUP5 DUP5 DUP5 PUSH2 0x2013 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1CE0 DUP3 DUP3 PUSH2 0xB2E JUMP JUMPDEST PUSH2 0x731 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST PUSH2 0x1D0A DUP3 PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x1D4F JUMPI PUSH2 0x7DF DUP3 DUP3 PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x731 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x1D61 DUP4 DUP4 PUSH2 0x2189 JUMP JUMPDEST PUSH2 0x7DF PUSH1 0x0 DUP5 DUP5 DUP5 PUSH2 0x1E10 JUMP JUMPDEST PUSH32 0x542A41881EE128A365A727B282C86FA859579490B9BB45AAB8503648C8E7900 SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x21EE JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x1DF0 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1DEE SWAP2 SWAP1 PUSH2 0x2D2C JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x7DF JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x820 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1E52 SWAP1 CALLER SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1E8D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1E8A SWAP2 DUP2 ADD SWAP1 PUSH2 0x2F81 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1EED JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1EBB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1EE5 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1F20 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F2F PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F54 PUSH2 0x1F27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F5E PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1F6B DUP5 DUP3 PUSH2 0x2E60 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD PUSH2 0x820 DUP4 DUP3 PUSH2 0x2E60 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F85 DUP3 PUSH2 0x1152 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1F9D PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x1FBD JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1CCF JUMP JUMPDEST DUP1 PUSH2 0x1FC7 DUP5 PUSH2 0x2216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FD8 SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x22A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2021 DUP6 DUP6 DUP6 PUSH2 0x22F8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x203F JUMPI PUSH2 0x203A DUP5 PUSH2 0x23FF JUMP JUMPDEST PUSH2 0x2062 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2062 JUMPI PUSH2 0x2062 DUP2 DUP6 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x207E JUMPI PUSH2 0x2079 DUP5 PUSH2 0x24D9 JUMP JUMPDEST PUSH2 0x1CCC JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CCC JUMPI PUSH2 0x1CCC DUP6 DUP6 PUSH2 0x25A2 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x20CE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x211A SWAP2 SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2155 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x215A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1B5E DUP6 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x21B3 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21C1 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1CCF DUP4 DUP4 PUSH1 0x0 PUSH2 0x264D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2206 PUSH2 0x1A09 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2223 DUP4 PUSH2 0x26EA JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2242 JUMPI PUSH2 0x2242 PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x226C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x2276 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x22D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x66A JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2303 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2310 DUP6 PUSH2 0x1B8C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x232C JUMPI PUSH2 0x232C DUP2 DUP6 DUP8 PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x236C JUMPI PUSH2 0x2349 PUSH1 0x0 DUP7 PUSH1 0x0 DUP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x239D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP9 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2442 PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x244F DUP5 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP1 DUP3 EQ PUSH2 0x24A4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP5 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x1 DUP7 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP5 MSTORE SWAP2 DUP3 MSTORE DUP4 DUP4 KECCAK256 SWAP1 DUP4 MSTORE SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E3 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x24FA SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2FBA JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x2526 JUMPI PUSH2 0x2526 PUSH2 0x2D62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2549 JUMPI PUSH2 0x2549 PUSH2 0x2D62 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x3 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP7 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x2 DUP5 ADD DUP1 SLOAD DUP1 PUSH2 0x2585 JUMPI PUSH2 0x2585 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25AC PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH2 0x25BB DUP6 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x25C5 SWAP2 SWAP1 PUSH2 0x2FBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 SWAP1 SSTORE SWAP5 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SWAP1 SWAP3 MSTORE POP KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x260F JUMPI PUSH2 0x260A DUP3 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1CCF JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2626 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2646 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST POP DUP1 PUSH2 0x1CCF JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x2672 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x268E SWAP2 SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x26E0 DUP7 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x2729 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 LT PUSH2 0x2753 JUMPI PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x2771 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x2789 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x279D JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x27AF JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x66A JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x27CB DUP4 DUP4 DUP4 PUSH2 0x283F JUMP JUMPDEST PUSH2 0x7DF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2826 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CCC JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2879 JUMPI POP PUSH2 0x2879 DUP5 DUP5 PUSH2 0x10A6 JUMP JUMPDEST DUP1 PUSH2 0x1CCC JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2892 DUP4 PUSH2 0x118A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CCF DUP2 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2922 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x290A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2943 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1CCF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x292B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29B1 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CCF DUP2 PUSH2 0x297E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29FC DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A0C DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x2A7D JUMPI PUSH2 0x2A7D PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2AA5 JUMPI PUSH2 0x2AA5 PUSH2 0x2A4D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CCF DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2A63 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B16 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B3D DUP6 DUP3 DUP7 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2B6A DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0x2B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BA5 DUP9 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2A63 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2BC4 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2BFE DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x2BD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2C2F DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2C3F DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6D DUP8 DUP3 DUP9 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2C99 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CA9 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2CB9 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CE2 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x297E JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D06 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CCF DUP2 PUSH2 0x2BD2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x66A JUMPI PUSH2 0x66A PUSH2 0x2D78 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2DB3 JUMPI PUSH2 0x2DB3 PUSH2 0x2D78 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x2E39 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E58 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2E45 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E79 JUMPI PUSH2 0x2E79 PUSH2 0x2A4D JUMP JUMPDEST PUSH2 0x2E8D DUP2 PUSH2 0x2E87 DUP5 SLOAD PUSH2 0x2CF2 JUMP JUMPDEST DUP5 PUSH2 0x2E10 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2EC2 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2EAA JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2E58 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2ED2 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2F0F JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x2F31 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x2907 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x2F45 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x2907 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x26E0 SWAP1 DUP4 ADD DUP5 PUSH2 0x292B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CCF DUP2 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2FB0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2907 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x66A JUMPI PUSH2 0x66A PUSH2 0x2D78 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC3AE8648B97D3FD425D2628 PUSH16 0xC6BB1D50724A93A6A5763921DD2B9040 GAS DUP4 0xB4 LOG4 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E 0xBA ORIGIN 0xBC 0xCD DELEGATECALL 0xE5 0xAB 0x2C PUSH4 0xC1BE3831 0xFC 0xEA PUSH32 0x42A3E966EA8A76EA234F99D9A02C6B64736F6C63430008180033000000000000 ", + "sourceMap": "1637:17381:44:-:0;;;1171:4:3;1128:48;;1637:17381:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MIN_EXPIRATION_ADMIN_ROLE_10004": { + "entryPoint": null, + "id": 10004, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_9998": { + "entryPoint": null, + "id": 9998, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_841": { + "entryPoint": null, + "id": 841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": null, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721Enumerable_init_2194": { + "entryPoint": 6719, + "id": 2194, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721URIStorage_init_2667": { + "entryPoint": null, + "id": 2667, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721_init_1086": { + "entryPoint": 6701, + "id": 1086, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__ERC721_init_unchained_1114": { + "entryPoint": 8012, + "id": 1114, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_871": { + "entryPoint": null, + "id": 871, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addTokenToAllTokensEnumeration_2452": { + "entryPoint": 9215, + "id": 2452, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_addTokenToOwnerEnumeration_2421": { + "entryPoint": 9634, + "id": 2421, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_approve_1918": { + "entryPoint": 4531, + "id": 1918, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_1992": { + "entryPoint": 7093, + "id": 1992, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_authorizeUpgrade_10201": { + "entryPoint": 5411, + "id": 10201, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_baseURI_1270": { + "entryPoint": null, + "id": 1270, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_callOptionalReturn_4747": { + "entryPoint": 7606, + "id": 4747, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkAuthorized_1546": { + "entryPoint": 10176, + "id": 1546, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_checkInitializing_739": { + "entryPoint": 7975, + "id": 739, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3805": { + "entryPoint": 8554, + "id": 3805, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_947": { + "entryPoint": 5615, + "id": 947, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkOnERC721Received_2130": { + "entryPoint": 7696, + "id": 2130, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_checkProxy_931": { + "entryPoint": 5244, + "id": 931, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 4953, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 7382, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 4917, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getApproved_1473": { + "entryPoint": 4490, + "id": 1473, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_getBookingTokenStorage_10040": { + "entryPoint": 4325, + "id": 10040, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getERC721EnumerableStorage_2178": { + "entryPoint": 4544, + "id": 2178, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getERC721Storage_1070": { + "entryPoint": 4398, + "id": 1070, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getERC721URIStorageStorage_2661": { + "entryPoint": 7534, + "id": 2661, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_816": { + "entryPoint": 6665, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3036": { + "entryPoint": 7570, + "id": 3036, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 4963, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isAuthorized_1509": { + "entryPoint": 10303, + "id": 1509, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_isInitializing_807": { + "entryPoint": 8700, + "id": 807, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_mint_1722": { + "entryPoint": 8585, + "id": 1722, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_2814": { + "entryPoint": null, + "id": 2814, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3118": { + "entryPoint": 6460, + "id": 3118, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3102": { + "entryPoint": 6009, + "id": 3102, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_ownerOf_1453": { + "entryPoint": 7052, + "id": 1453, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_removeTokenFromAllTokensEnumeration_2590": { + "entryPoint": 9433, + "id": 2590, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeTokenFromOwnerEnumeration_2526": { + "entryPoint": 9272, + "id": 2526, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_requireOwned_2066": { + "entryPoint": 4434, + "id": 2066, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_reserve_10503": { + "entryPoint": 5848, + "id": 10503, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@_revert_5244": { + "entryPoint": 10262, + "id": 5244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 5124, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_safeMint_1737": { + "entryPoint": 5728, + "id": 1737, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_safeMint_1763": { + "entryPoint": 7511, + "id": 1763, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_setApprovalForAll_2037": { + "entryPoint": 6477, + "id": 2037, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_setImplementation_3591": { + "entryPoint": 8353, + "id": 3591, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setTokenURI_2785": { + "entryPoint": 5754, + "id": 2785, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_transfer_1856": { + "entryPoint": 6063, + "id": 1856, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_10769": { + "entryPoint": 7359, + "id": 10769, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_update_1672": { + "entryPoint": 8952, + "id": 1672, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_update_2380": { + "entryPoint": 8211, + "id": 2380, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_upgradeToAndCallUUPS_998": { + "entryPoint": 5435, + "id": 998, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@approve_1286": { + "entryPoint": 1830, + "id": 1286, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@balanceOf_1180": { + "entryPoint": 2774, + "id": 1180, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@buyReservedToken_10465": { + "entryPoint": 2945, + "id": 10465, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@checkTransferable_10552": { + "entryPoint": 4580, + "id": 10552, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionCallWithValue_5112": { + "entryPoint": 9805, + "id": 5112, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@functionCall_5066": { + "entryPoint": 8686, + "id": 5066, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5164": { + "entryPoint": 8445, + "id": 5164, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getApproved_1303": { + "entryPoint": 1809, + "id": 1303, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getImplementation_3564": { + "entryPoint": null, + "id": 3564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getManagerAddress_10624": { + "entryPoint": 4196, + "id": 10624, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getMinExpirationTimestampDiff_10662": { + "entryPoint": 1845, + "id": 10662, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getReservationPrice_10692": { + "entryPoint": 1570, + "id": 10692, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@getRoleAdmin_171": { + "entryPoint": 2020, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 2052, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 2862, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_10190": { + "entryPoint": 3767, + "id": 10190, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@isApprovedForAll_1343": { + "entryPoint": 4262, + "id": 1343, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@isCMAccount_10569": { + "entryPoint": 1866, + "id": 10569, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@log10_6874": { + "entryPoint": 9962, + "id": 6874, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@name_1209": { + "entryPoint": 1648, + "id": 1209, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@ownerOf_1193": { + "entryPoint": 2763, + "id": 1193, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@proxiableUUID_889": { + "entryPoint": 2496, + "id": 889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 2193, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@requireCMAccount_10586": { + "entryPoint": 5688, + "id": 10586, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 4234, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeMintWithReservation_10289": { + "entryPoint": 2525, + "id": 10289, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@safeTransferFrom_10747": { + "entryPoint": 3746, + "id": 10747, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransferFrom_1407": { + "entryPoint": 2300, + "id": 1407, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@safeTransferFrom_1433": { + "entryPoint": 6642, + "id": 1433, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransferFrom_4584": { + "entryPoint": 6219, + "id": 4584, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@sendValue_5049": { + "entryPoint": 6309, + "id": 5049, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setApprovalForAll_1319": { + "entryPoint": 3735, + "id": 1319, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setManagerAddress_10608": { + "entryPoint": 2244, + "id": 10608, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setMinExpirationTimestampDiff_10646": { + "entryPoint": 2451, + "id": 10646, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_10821": { + "entryPoint": 1631, + "id": 10821, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_1145": { + "entryPoint": 8872, + "id": 1145, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_2224": { + "entryPoint": 8174, + "id": 2224, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_2694": { + "entryPoint": 7015, + "id": 2694, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_3176": { + "entryPoint": null, + "id": 3176, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 4361, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@symbol_1225": { + "entryPoint": 2916, + "id": 1225, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@toString_5453": { + "entryPoint": 8726, + "id": 5453, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenByIndex_2311": { + "entryPoint": 2354, + "id": 2311, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenOfOwnerByIndex_2260": { + "entryPoint": 2086, + "id": 2260, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@tokenURI_10803": { + "entryPoint": 4223, + "id": 10803, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenURI_1261": { + "entryPoint": 8058, + "id": 1261, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenURI_2758": { + "entryPoint": 6727, + "id": 2758, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@totalSupply_2277": { + "entryPoint": 1984, + "id": 2277, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_10718": { + "entryPoint": 1995, + "id": 10718, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@transferFrom_1389": { + "entryPoint": 4804, + "id": 1389, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@upgradeToAndCall_3625": { + "entryPoint": 7425, + "id": 3625, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_909": { + "entryPoint": 2327, + "id": 909, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_5204": { + "entryPoint": 9722, + "id": 5204, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_bytes": { + "entryPoint": 10851, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 10968, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 10687, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 11460, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_address": { + "entryPoint": 11385, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 10716, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 11278, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bool": { + "entryPoint": 11232, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 11000, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445": { + "entryPoint": 11079, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 10643, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 11564, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 10781, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 10474, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes4_fromMemory": { + "entryPoint": 12161, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 10404, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 11732, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 10539, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 12190, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 12063, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 10602, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 11706, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 12110, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_contract$_IERC20_$4445_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 11593, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 11757, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 10583, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 10429, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 11662, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 12218, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 11792, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 11872, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 10503, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 11506, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 11681, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 11640, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 12237, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 11618, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 10829, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 10622, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 11218, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bytes4": { + "entryPoint": 10452, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:17609:55", + "nodeType": "YulBlock", + "src": "0:17609:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "84:110:55", + "nodeType": "YulBlock", + "src": "84:110:55", + "statements": [ + { + "body": { + "nativeSrc": "130:16:55", + "nodeType": "YulBlock", + "src": "130:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139:1:55", + "nodeType": "YulLiteral", + "src": "139:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "142:1:55", + "nodeType": "YulLiteral", + "src": "142:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "132:6:55", + "nodeType": "YulIdentifier", + "src": "132:6:55" + }, + "nativeSrc": "132:12:55", + "nodeType": "YulFunctionCall", + "src": "132:12:55" + }, + "nativeSrc": "132:12:55", + "nodeType": "YulExpressionStatement", + "src": "132:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "105:7:55", + "nodeType": "YulIdentifier", + "src": "105:7:55" + }, + { + "name": "headStart", + "nativeSrc": "114:9:55", + "nodeType": "YulIdentifier", + "src": "114:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "101:3:55", + "nodeType": "YulIdentifier", + "src": "101:3:55" + }, + "nativeSrc": "101:23:55", + "nodeType": "YulFunctionCall", + "src": "101:23:55" + }, + { + "kind": "number", + "nativeSrc": "126:2:55", + "nodeType": "YulLiteral", + "src": "126:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "97:3:55", + "nodeType": "YulIdentifier", + "src": "97:3:55" + }, + "nativeSrc": "97:32:55", + "nodeType": "YulFunctionCall", + "src": "97:32:55" + }, + "nativeSrc": "94:52:55", + "nodeType": "YulIf", + "src": "94:52:55" + }, + { + "nativeSrc": "155:33:55", + "nodeType": "YulAssignment", + "src": "155:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "178:9:55", + "nodeType": "YulIdentifier", + "src": "178:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "165:12:55", + "nodeType": "YulIdentifier", + "src": "165:12:55" + }, + "nativeSrc": "165:23:55", + "nodeType": "YulFunctionCall", + "src": "165:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "155:6:55", + "nodeType": "YulIdentifier", + "src": "155:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "14:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "50:9:55", + "nodeType": "YulTypedName", + "src": "50:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "61:7:55", + "nodeType": "YulTypedName", + "src": "61:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "73:6:55", + "nodeType": "YulTypedName", + "src": "73:6:55", + "type": "" + } + ], + "src": "14:180:55" + }, + { + "body": { + "nativeSrc": "343:145:55", + "nodeType": "YulBlock", + "src": "343:145:55", + "statements": [ + { + "nativeSrc": "353:26:55", + "nodeType": "YulAssignment", + "src": "353:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "365:9:55", + "nodeType": "YulIdentifier", + "src": "365:9:55" + }, + { + "kind": "number", + "nativeSrc": "376:2:55", + "nodeType": "YulLiteral", + "src": "376:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "361:3:55", + "nodeType": "YulIdentifier", + "src": "361:3:55" + }, + "nativeSrc": "361:18:55", + "nodeType": "YulFunctionCall", + "src": "361:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "353:4:55", + "nodeType": "YulIdentifier", + "src": "353:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "395:9:55", + "nodeType": "YulIdentifier", + "src": "395:9:55" + }, + { + "name": "value0", + "nativeSrc": "406:6:55", + "nodeType": "YulIdentifier", + "src": "406:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "388:6:55", + "nodeType": "YulIdentifier", + "src": "388:6:55" + }, + "nativeSrc": "388:25:55", + "nodeType": "YulFunctionCall", + "src": "388:25:55" + }, + "nativeSrc": "388:25:55", + "nodeType": "YulExpressionStatement", + "src": "388:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "433:9:55", + "nodeType": "YulIdentifier", + "src": "433:9:55" + }, + { + "kind": "number", + "nativeSrc": "444:2:55", + "nodeType": "YulLiteral", + "src": "444:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "429:3:55", + "nodeType": "YulIdentifier", + "src": "429:3:55" + }, + "nativeSrc": "429:18:55", + "nodeType": "YulFunctionCall", + "src": "429:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "453:6:55", + "nodeType": "YulIdentifier", + "src": "453:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "469:3:55", + "nodeType": "YulLiteral", + "src": "469:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "474:1:55", + "nodeType": "YulLiteral", + "src": "474:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "465:3:55", + "nodeType": "YulIdentifier", + "src": "465:3:55" + }, + "nativeSrc": "465:11:55", + "nodeType": "YulFunctionCall", + "src": "465:11:55" + }, + { + "kind": "number", + "nativeSrc": "478:1:55", + "nodeType": "YulLiteral", + "src": "478:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "461:3:55", + "nodeType": "YulIdentifier", + "src": "461:3:55" + }, + "nativeSrc": "461:19:55", + "nodeType": "YulFunctionCall", + "src": "461:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "449:3:55", + "nodeType": "YulIdentifier", + "src": "449:3:55" + }, + "nativeSrc": "449:32:55", + "nodeType": "YulFunctionCall", + "src": "449:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "422:6:55", + "nodeType": "YulIdentifier", + "src": "422:6:55" + }, + "nativeSrc": "422:60:55", + "nodeType": "YulFunctionCall", + "src": "422:60:55" + }, + "nativeSrc": "422:60:55", + "nodeType": "YulExpressionStatement", + "src": "422:60:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "199:289:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "304:9:55", + "nodeType": "YulTypedName", + "src": "304:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "315:6:55", + "nodeType": "YulTypedName", + "src": "315:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "323:6:55", + "nodeType": "YulTypedName", + "src": "323:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "334:4:55", + "nodeType": "YulTypedName", + "src": "334:4:55", + "type": "" + } + ], + "src": "199:289:55" + }, + { + "body": { + "nativeSrc": "537:87:55", + "nodeType": "YulBlock", + "src": "537:87:55", + "statements": [ + { + "body": { + "nativeSrc": "602:16:55", + "nodeType": "YulBlock", + "src": "602:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "611:1:55", + "nodeType": "YulLiteral", + "src": "611:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "614:1:55", + "nodeType": "YulLiteral", + "src": "614:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "604:6:55", + "nodeType": "YulIdentifier", + "src": "604:6:55" + }, + "nativeSrc": "604:12:55", + "nodeType": "YulFunctionCall", + "src": "604:12:55" + }, + "nativeSrc": "604:12:55", + "nodeType": "YulExpressionStatement", + "src": "604:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "560:5:55", + "nodeType": "YulIdentifier", + "src": "560:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "571:5:55", + "nodeType": "YulIdentifier", + "src": "571:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "582:3:55", + "nodeType": "YulLiteral", + "src": "582:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "587:10:55", + "nodeType": "YulLiteral", + "src": "587:10:55", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "578:3:55", + "nodeType": "YulIdentifier", + "src": "578:3:55" + }, + "nativeSrc": "578:20:55", + "nodeType": "YulFunctionCall", + "src": "578:20:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "567:3:55", + "nodeType": "YulIdentifier", + "src": "567:3:55" + }, + "nativeSrc": "567:32:55", + "nodeType": "YulFunctionCall", + "src": "567:32:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "557:2:55", + "nodeType": "YulIdentifier", + "src": "557:2:55" + }, + "nativeSrc": "557:43:55", + "nodeType": "YulFunctionCall", + "src": "557:43:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "550:6:55", + "nodeType": "YulIdentifier", + "src": "550:6:55" + }, + "nativeSrc": "550:51:55", + "nodeType": "YulFunctionCall", + "src": "550:51:55" + }, + "nativeSrc": "547:71:55", + "nodeType": "YulIf", + "src": "547:71:55" + } + ] + }, + "name": "validator_revert_bytes4", + "nativeSrc": "493:131:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "526:5:55", + "nodeType": "YulTypedName", + "src": "526:5:55", + "type": "" + } + ], + "src": "493:131:55" + }, + { + "body": { + "nativeSrc": "698:176:55", + "nodeType": "YulBlock", + "src": "698:176:55", + "statements": [ + { + "body": { + "nativeSrc": "744:16:55", + "nodeType": "YulBlock", + "src": "744:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "753:1:55", + "nodeType": "YulLiteral", + "src": "753:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "756:1:55", + "nodeType": "YulLiteral", + "src": "756:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "746:6:55", + "nodeType": "YulIdentifier", + "src": "746:6:55" + }, + "nativeSrc": "746:12:55", + "nodeType": "YulFunctionCall", + "src": "746:12:55" + }, + "nativeSrc": "746:12:55", + "nodeType": "YulExpressionStatement", + "src": "746:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "719:7:55", + "nodeType": "YulIdentifier", + "src": "719:7:55" + }, + { + "name": "headStart", + "nativeSrc": "728:9:55", + "nodeType": "YulIdentifier", + "src": "728:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "715:3:55", + "nodeType": "YulIdentifier", + "src": "715:3:55" + }, + "nativeSrc": "715:23:55", + "nodeType": "YulFunctionCall", + "src": "715:23:55" + }, + { + "kind": "number", + "nativeSrc": "740:2:55", + "nodeType": "YulLiteral", + "src": "740:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "711:3:55", + "nodeType": "YulIdentifier", + "src": "711:3:55" + }, + "nativeSrc": "711:32:55", + "nodeType": "YulFunctionCall", + "src": "711:32:55" + }, + "nativeSrc": "708:52:55", + "nodeType": "YulIf", + "src": "708:52:55" + }, + { + "nativeSrc": "769:36:55", + "nodeType": "YulVariableDeclaration", + "src": "769:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "795:9:55", + "nodeType": "YulIdentifier", + "src": "795:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "782:12:55", + "nodeType": "YulIdentifier", + "src": "782:12:55" + }, + "nativeSrc": "782:23:55", + "nodeType": "YulFunctionCall", + "src": "782:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "773:5:55", + "nodeType": "YulTypedName", + "src": "773:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "838:5:55", + "nodeType": "YulIdentifier", + "src": "838:5:55" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nativeSrc": "814:23:55", + "nodeType": "YulIdentifier", + "src": "814:23:55" + }, + "nativeSrc": "814:30:55", + "nodeType": "YulFunctionCall", + "src": "814:30:55" + }, + "nativeSrc": "814:30:55", + "nodeType": "YulExpressionStatement", + "src": "814:30:55" + }, + { + "nativeSrc": "853:15:55", + "nodeType": "YulAssignment", + "src": "853:15:55", + "value": { + "name": "value", + "nativeSrc": "863:5:55", + "nodeType": "YulIdentifier", + "src": "863:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "853:6:55", + "nodeType": "YulIdentifier", + "src": "853:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "629:245:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "664:9:55", + "nodeType": "YulTypedName", + "src": "664:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "675:7:55", + "nodeType": "YulTypedName", + "src": "675:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "687:6:55", + "nodeType": "YulTypedName", + "src": "687:6:55", + "type": "" + } + ], + "src": "629:245:55" + }, + { + "body": { + "nativeSrc": "974:92:55", + "nodeType": "YulBlock", + "src": "974:92:55", + "statements": [ + { + "nativeSrc": "984:26:55", + "nodeType": "YulAssignment", + "src": "984:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "996:9:55", + "nodeType": "YulIdentifier", + "src": "996:9:55" + }, + { + "kind": "number", + "nativeSrc": "1007:2:55", + "nodeType": "YulLiteral", + "src": "1007:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "992:3:55", + "nodeType": "YulIdentifier", + "src": "992:3:55" + }, + "nativeSrc": "992:18:55", + "nodeType": "YulFunctionCall", + "src": "992:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "984:4:55", + "nodeType": "YulIdentifier", + "src": "984:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1026:9:55", + "nodeType": "YulIdentifier", + "src": "1026:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1051:6:55", + "nodeType": "YulIdentifier", + "src": "1051:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1044:6:55", + "nodeType": "YulIdentifier", + "src": "1044:6:55" + }, + "nativeSrc": "1044:14:55", + "nodeType": "YulFunctionCall", + "src": "1044:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1037:6:55", + "nodeType": "YulIdentifier", + "src": "1037:6:55" + }, + "nativeSrc": "1037:22:55", + "nodeType": "YulFunctionCall", + "src": "1037:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1019:6:55", + "nodeType": "YulIdentifier", + "src": "1019:6:55" + }, + "nativeSrc": "1019:41:55", + "nodeType": "YulFunctionCall", + "src": "1019:41:55" + }, + "nativeSrc": "1019:41:55", + "nodeType": "YulExpressionStatement", + "src": "1019:41:55" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "879:187:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "943:9:55", + "nodeType": "YulTypedName", + "src": "943:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "954:6:55", + "nodeType": "YulTypedName", + "src": "954:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "965:4:55", + "nodeType": "YulTypedName", + "src": "965:4:55", + "type": "" + } + ], + "src": "879:187:55" + }, + { + "body": { + "nativeSrc": "1137:184:55", + "nodeType": "YulBlock", + "src": "1137:184:55", + "statements": [ + { + "nativeSrc": "1147:10:55", + "nodeType": "YulVariableDeclaration", + "src": "1147:10:55", + "value": { + "kind": "number", + "nativeSrc": "1156:1:55", + "nodeType": "YulLiteral", + "src": "1156:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1151:1:55", + "nodeType": "YulTypedName", + "src": "1151:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1216:63:55", + "nodeType": "YulBlock", + "src": "1216:63:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "1241:3:55", + "nodeType": "YulIdentifier", + "src": "1241:3:55" + }, + { + "name": "i", + "nativeSrc": "1246:1:55", + "nodeType": "YulIdentifier", + "src": "1246:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1237:3:55", + "nodeType": "YulIdentifier", + "src": "1237:3:55" + }, + "nativeSrc": "1237:11:55", + "nodeType": "YulFunctionCall", + "src": "1237:11:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1260:3:55", + "nodeType": "YulIdentifier", + "src": "1260:3:55" + }, + { + "name": "i", + "nativeSrc": "1265:1:55", + "nodeType": "YulIdentifier", + "src": "1265:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1256:3:55", + "nodeType": "YulIdentifier", + "src": "1256:3:55" + }, + "nativeSrc": "1256:11:55", + "nodeType": "YulFunctionCall", + "src": "1256:11:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1250:5:55", + "nodeType": "YulIdentifier", + "src": "1250:5:55" + }, + "nativeSrc": "1250:18:55", + "nodeType": "YulFunctionCall", + "src": "1250:18:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1230:6:55", + "nodeType": "YulIdentifier", + "src": "1230:6:55" + }, + "nativeSrc": "1230:39:55", + "nodeType": "YulFunctionCall", + "src": "1230:39:55" + }, + "nativeSrc": "1230:39:55", + "nodeType": "YulExpressionStatement", + "src": "1230:39:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1177:1:55", + "nodeType": "YulIdentifier", + "src": "1177:1:55" + }, + { + "name": "length", + "nativeSrc": "1180:6:55", + "nodeType": "YulIdentifier", + "src": "1180:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1174:2:55", + "nodeType": "YulIdentifier", + "src": "1174:2:55" + }, + "nativeSrc": "1174:13:55", + "nodeType": "YulFunctionCall", + "src": "1174:13:55" + }, + "nativeSrc": "1166:113:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1188:19:55", + "nodeType": "YulBlock", + "src": "1188:19:55", + "statements": [ + { + "nativeSrc": "1190:15:55", + "nodeType": "YulAssignment", + "src": "1190:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1199:1:55", + "nodeType": "YulIdentifier", + "src": "1199:1:55" + }, + { + "kind": "number", + "nativeSrc": "1202:2:55", + "nodeType": "YulLiteral", + "src": "1202:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1195:3:55", + "nodeType": "YulIdentifier", + "src": "1195:3:55" + }, + "nativeSrc": "1195:10:55", + "nodeType": "YulFunctionCall", + "src": "1195:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1190:1:55", + "nodeType": "YulIdentifier", + "src": "1190:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1170:3:55", + "nodeType": "YulBlock", + "src": "1170:3:55", + "statements": [] + }, + "src": "1166:113:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "1299:3:55", + "nodeType": "YulIdentifier", + "src": "1299:3:55" + }, + { + "name": "length", + "nativeSrc": "1304:6:55", + "nodeType": "YulIdentifier", + "src": "1304:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1295:3:55", + "nodeType": "YulIdentifier", + "src": "1295:3:55" + }, + "nativeSrc": "1295:16:55", + "nodeType": "YulFunctionCall", + "src": "1295:16:55" + }, + { + "kind": "number", + "nativeSrc": "1313:1:55", + "nodeType": "YulLiteral", + "src": "1313:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1288:6:55", + "nodeType": "YulIdentifier", + "src": "1288:6:55" + }, + "nativeSrc": "1288:27:55", + "nodeType": "YulFunctionCall", + "src": "1288:27:55" + }, + "nativeSrc": "1288:27:55", + "nodeType": "YulExpressionStatement", + "src": "1288:27:55" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1071:250:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1115:3:55", + "nodeType": "YulTypedName", + "src": "1115:3:55", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "1120:3:55", + "nodeType": "YulTypedName", + "src": "1120:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1125:6:55", + "nodeType": "YulTypedName", + "src": "1125:6:55", + "type": "" + } + ], + "src": "1071:250:55" + }, + { + "body": { + "nativeSrc": "1376:221:55", + "nodeType": "YulBlock", + "src": "1376:221:55", + "statements": [ + { + "nativeSrc": "1386:26:55", + "nodeType": "YulVariableDeclaration", + "src": "1386:26:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1406:5:55", + "nodeType": "YulIdentifier", + "src": "1406:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1400:5:55", + "nodeType": "YulIdentifier", + "src": "1400:5:55" + }, + "nativeSrc": "1400:12:55", + "nodeType": "YulFunctionCall", + "src": "1400:12:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1390:6:55", + "nodeType": "YulTypedName", + "src": "1390:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1428:3:55", + "nodeType": "YulIdentifier", + "src": "1428:3:55" + }, + { + "name": "length", + "nativeSrc": "1433:6:55", + "nodeType": "YulIdentifier", + "src": "1433:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1421:6:55", + "nodeType": "YulIdentifier", + "src": "1421:6:55" + }, + "nativeSrc": "1421:19:55", + "nodeType": "YulFunctionCall", + "src": "1421:19:55" + }, + "nativeSrc": "1421:19:55", + "nodeType": "YulExpressionStatement", + "src": "1421:19:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1488:5:55", + "nodeType": "YulIdentifier", + "src": "1488:5:55" + }, + { + "kind": "number", + "nativeSrc": "1495:4:55", + "nodeType": "YulLiteral", + "src": "1495:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1484:3:55", + "nodeType": "YulIdentifier", + "src": "1484:3:55" + }, + "nativeSrc": "1484:16:55", + "nodeType": "YulFunctionCall", + "src": "1484:16:55" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1506:3:55", + "nodeType": "YulIdentifier", + "src": "1506:3:55" + }, + { + "kind": "number", + "nativeSrc": "1511:4:55", + "nodeType": "YulLiteral", + "src": "1511:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1502:3:55", + "nodeType": "YulIdentifier", + "src": "1502:3:55" + }, + "nativeSrc": "1502:14:55", + "nodeType": "YulFunctionCall", + "src": "1502:14:55" + }, + { + "name": "length", + "nativeSrc": "1518:6:55", + "nodeType": "YulIdentifier", + "src": "1518:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1449:34:55", + "nodeType": "YulIdentifier", + "src": "1449:34:55" + }, + "nativeSrc": "1449:76:55", + "nodeType": "YulFunctionCall", + "src": "1449:76:55" + }, + "nativeSrc": "1449:76:55", + "nodeType": "YulExpressionStatement", + "src": "1449:76:55" + }, + { + "nativeSrc": "1534:57:55", + "nodeType": "YulAssignment", + "src": "1534:57:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1549:3:55", + "nodeType": "YulIdentifier", + "src": "1549:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1562:6:55", + "nodeType": "YulIdentifier", + "src": "1562:6:55" + }, + { + "kind": "number", + "nativeSrc": "1570:2:55", + "nodeType": "YulLiteral", + "src": "1570:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1558:3:55", + "nodeType": "YulIdentifier", + "src": "1558:3:55" + }, + "nativeSrc": "1558:15:55", + "nodeType": "YulFunctionCall", + "src": "1558:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1579:2:55", + "nodeType": "YulLiteral", + "src": "1579:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1575:3:55", + "nodeType": "YulIdentifier", + "src": "1575:3:55" + }, + "nativeSrc": "1575:7:55", + "nodeType": "YulFunctionCall", + "src": "1575:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1554:3:55", + "nodeType": "YulIdentifier", + "src": "1554:3:55" + }, + "nativeSrc": "1554:29:55", + "nodeType": "YulFunctionCall", + "src": "1554:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1545:3:55", + "nodeType": "YulIdentifier", + "src": "1545:3:55" + }, + "nativeSrc": "1545:39:55", + "nodeType": "YulFunctionCall", + "src": "1545:39:55" + }, + { + "kind": "number", + "nativeSrc": "1586:4:55", + "nodeType": "YulLiteral", + "src": "1586:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1541:3:55", + "nodeType": "YulIdentifier", + "src": "1541:3:55" + }, + "nativeSrc": "1541:50:55", + "nodeType": "YulFunctionCall", + "src": "1541:50:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1534:3:55", + "nodeType": "YulIdentifier", + "src": "1534:3:55" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "1326:271:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1353:5:55", + "nodeType": "YulTypedName", + "src": "1353:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "1360:3:55", + "nodeType": "YulTypedName", + "src": "1360:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1368:3:55", + "nodeType": "YulTypedName", + "src": "1368:3:55", + "type": "" + } + ], + "src": "1326:271:55" + }, + { + "body": { + "nativeSrc": "1723:99:55", + "nodeType": "YulBlock", + "src": "1723:99:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1740:9:55", + "nodeType": "YulIdentifier", + "src": "1740:9:55" + }, + { + "kind": "number", + "nativeSrc": "1751:2:55", + "nodeType": "YulLiteral", + "src": "1751:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1733:6:55", + "nodeType": "YulIdentifier", + "src": "1733:6:55" + }, + "nativeSrc": "1733:21:55", + "nodeType": "YulFunctionCall", + "src": "1733:21:55" + }, + "nativeSrc": "1733:21:55", + "nodeType": "YulExpressionStatement", + "src": "1733:21:55" + }, + { + "nativeSrc": "1763:53:55", + "nodeType": "YulAssignment", + "src": "1763:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1789:6:55", + "nodeType": "YulIdentifier", + "src": "1789:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1801:9:55", + "nodeType": "YulIdentifier", + "src": "1801:9:55" + }, + { + "kind": "number", + "nativeSrc": "1812:2:55", + "nodeType": "YulLiteral", + "src": "1812:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1797:3:55", + "nodeType": "YulIdentifier", + "src": "1797:3:55" + }, + "nativeSrc": "1797:18:55", + "nodeType": "YulFunctionCall", + "src": "1797:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "1771:17:55", + "nodeType": "YulIdentifier", + "src": "1771:17:55" + }, + "nativeSrc": "1771:45:55", + "nodeType": "YulFunctionCall", + "src": "1771:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1763:4:55", + "nodeType": "YulIdentifier", + "src": "1763:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "1602:220:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1692:9:55", + "nodeType": "YulTypedName", + "src": "1692:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1703:6:55", + "nodeType": "YulTypedName", + "src": "1703:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1714:4:55", + "nodeType": "YulTypedName", + "src": "1714:4:55", + "type": "" + } + ], + "src": "1602:220:55" + }, + { + "body": { + "nativeSrc": "1928:102:55", + "nodeType": "YulBlock", + "src": "1928:102:55", + "statements": [ + { + "nativeSrc": "1938:26:55", + "nodeType": "YulAssignment", + "src": "1938:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1950:9:55", + "nodeType": "YulIdentifier", + "src": "1950:9:55" + }, + { + "kind": "number", + "nativeSrc": "1961:2:55", + "nodeType": "YulLiteral", + "src": "1961:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1946:3:55", + "nodeType": "YulIdentifier", + "src": "1946:3:55" + }, + "nativeSrc": "1946:18:55", + "nodeType": "YulFunctionCall", + "src": "1946:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1938:4:55", + "nodeType": "YulIdentifier", + "src": "1938:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1980:9:55", + "nodeType": "YulIdentifier", + "src": "1980:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1995:6:55", + "nodeType": "YulIdentifier", + "src": "1995:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2011:3:55", + "nodeType": "YulLiteral", + "src": "2011:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2016:1:55", + "nodeType": "YulLiteral", + "src": "2016:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2007:3:55", + "nodeType": "YulIdentifier", + "src": "2007:3:55" + }, + "nativeSrc": "2007:11:55", + "nodeType": "YulFunctionCall", + "src": "2007:11:55" + }, + { + "kind": "number", + "nativeSrc": "2020:1:55", + "nodeType": "YulLiteral", + "src": "2020:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2003:3:55", + "nodeType": "YulIdentifier", + "src": "2003:3:55" + }, + "nativeSrc": "2003:19:55", + "nodeType": "YulFunctionCall", + "src": "2003:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1991:3:55", + "nodeType": "YulIdentifier", + "src": "1991:3:55" + }, + "nativeSrc": "1991:32:55", + "nodeType": "YulFunctionCall", + "src": "1991:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:55", + "nodeType": "YulIdentifier", + "src": "1973:6:55" + }, + "nativeSrc": "1973:51:55", + "nodeType": "YulFunctionCall", + "src": "1973:51:55" + }, + "nativeSrc": "1973:51:55", + "nodeType": "YulExpressionStatement", + "src": "1973:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "1827:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1897:9:55", + "nodeType": "YulTypedName", + "src": "1897:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1908:6:55", + "nodeType": "YulTypedName", + "src": "1908:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1919:4:55", + "nodeType": "YulTypedName", + "src": "1919:4:55", + "type": "" + } + ], + "src": "1827:203:55" + }, + { + "body": { + "nativeSrc": "2080:86:55", + "nodeType": "YulBlock", + "src": "2080:86:55", + "statements": [ + { + "body": { + "nativeSrc": "2144:16:55", + "nodeType": "YulBlock", + "src": "2144:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2153:1:55", + "nodeType": "YulLiteral", + "src": "2153:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2156:1:55", + "nodeType": "YulLiteral", + "src": "2156:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2146:6:55", + "nodeType": "YulIdentifier", + "src": "2146:6:55" + }, + "nativeSrc": "2146:12:55", + "nodeType": "YulFunctionCall", + "src": "2146:12:55" + }, + "nativeSrc": "2146:12:55", + "nodeType": "YulExpressionStatement", + "src": "2146:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2103:5:55", + "nodeType": "YulIdentifier", + "src": "2103:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2114:5:55", + "nodeType": "YulIdentifier", + "src": "2114:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2129:3:55", + "nodeType": "YulLiteral", + "src": "2129:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2134:1:55", + "nodeType": "YulLiteral", + "src": "2134:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2125:3:55", + "nodeType": "YulIdentifier", + "src": "2125:3:55" + }, + "nativeSrc": "2125:11:55", + "nodeType": "YulFunctionCall", + "src": "2125:11:55" + }, + { + "kind": "number", + "nativeSrc": "2138:1:55", + "nodeType": "YulLiteral", + "src": "2138:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2121:3:55", + "nodeType": "YulIdentifier", + "src": "2121:3:55" + }, + "nativeSrc": "2121:19:55", + "nodeType": "YulFunctionCall", + "src": "2121:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2110:3:55", + "nodeType": "YulIdentifier", + "src": "2110:3:55" + }, + "nativeSrc": "2110:31:55", + "nodeType": "YulFunctionCall", + "src": "2110:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2100:2:55", + "nodeType": "YulIdentifier", + "src": "2100:2:55" + }, + "nativeSrc": "2100:42:55", + "nodeType": "YulFunctionCall", + "src": "2100:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2093:6:55", + "nodeType": "YulIdentifier", + "src": "2093:6:55" + }, + "nativeSrc": "2093:50:55", + "nodeType": "YulFunctionCall", + "src": "2093:50:55" + }, + "nativeSrc": "2090:70:55", + "nodeType": "YulIf", + "src": "2090:70:55" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "2035:131:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2069:5:55", + "nodeType": "YulTypedName", + "src": "2069:5:55", + "type": "" + } + ], + "src": "2035:131:55" + }, + { + "body": { + "nativeSrc": "2258:228:55", + "nodeType": "YulBlock", + "src": "2258:228:55", + "statements": [ + { + "body": { + "nativeSrc": "2304:16:55", + "nodeType": "YulBlock", + "src": "2304:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2313:1:55", + "nodeType": "YulLiteral", + "src": "2313:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2316:1:55", + "nodeType": "YulLiteral", + "src": "2316:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2306:6:55", + "nodeType": "YulIdentifier", + "src": "2306:6:55" + }, + "nativeSrc": "2306:12:55", + "nodeType": "YulFunctionCall", + "src": "2306:12:55" + }, + "nativeSrc": "2306:12:55", + "nodeType": "YulExpressionStatement", + "src": "2306:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2279:7:55", + "nodeType": "YulIdentifier", + "src": "2279:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2288:9:55", + "nodeType": "YulIdentifier", + "src": "2288:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2275:3:55", + "nodeType": "YulIdentifier", + "src": "2275:3:55" + }, + "nativeSrc": "2275:23:55", + "nodeType": "YulFunctionCall", + "src": "2275:23:55" + }, + { + "kind": "number", + "nativeSrc": "2300:2:55", + "nodeType": "YulLiteral", + "src": "2300:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2271:3:55", + "nodeType": "YulIdentifier", + "src": "2271:3:55" + }, + "nativeSrc": "2271:32:55", + "nodeType": "YulFunctionCall", + "src": "2271:32:55" + }, + "nativeSrc": "2268:52:55", + "nodeType": "YulIf", + "src": "2268:52:55" + }, + { + "nativeSrc": "2329:36:55", + "nodeType": "YulVariableDeclaration", + "src": "2329:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2355:9:55", + "nodeType": "YulIdentifier", + "src": "2355:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2342:12:55", + "nodeType": "YulIdentifier", + "src": "2342:12:55" + }, + "nativeSrc": "2342:23:55", + "nodeType": "YulFunctionCall", + "src": "2342:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2333:5:55", + "nodeType": "YulTypedName", + "src": "2333:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2399:5:55", + "nodeType": "YulIdentifier", + "src": "2399:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2374:24:55", + "nodeType": "YulIdentifier", + "src": "2374:24:55" + }, + "nativeSrc": "2374:31:55", + "nodeType": "YulFunctionCall", + "src": "2374:31:55" + }, + "nativeSrc": "2374:31:55", + "nodeType": "YulExpressionStatement", + "src": "2374:31:55" + }, + { + "nativeSrc": "2414:15:55", + "nodeType": "YulAssignment", + "src": "2414:15:55", + "value": { + "name": "value", + "nativeSrc": "2424:5:55", + "nodeType": "YulIdentifier", + "src": "2424:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2414:6:55", + "nodeType": "YulIdentifier", + "src": "2414:6:55" + } + ] + }, + { + "nativeSrc": "2438:42:55", + "nodeType": "YulAssignment", + "src": "2438:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2465:9:55", + "nodeType": "YulIdentifier", + "src": "2465:9:55" + }, + { + "kind": "number", + "nativeSrc": "2476:2:55", + "nodeType": "YulLiteral", + "src": "2476:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2461:3:55", + "nodeType": "YulIdentifier", + "src": "2461:3:55" + }, + "nativeSrc": "2461:18:55", + "nodeType": "YulFunctionCall", + "src": "2461:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2448:12:55", + "nodeType": "YulIdentifier", + "src": "2448:12:55" + }, + "nativeSrc": "2448:32:55", + "nodeType": "YulFunctionCall", + "src": "2448:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2438:6:55", + "nodeType": "YulIdentifier", + "src": "2438:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "2171:315:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2216:9:55", + "nodeType": "YulTypedName", + "src": "2216:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2227:7:55", + "nodeType": "YulTypedName", + "src": "2227:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2239:6:55", + "nodeType": "YulTypedName", + "src": "2239:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2247:6:55", + "nodeType": "YulTypedName", + "src": "2247:6:55", + "type": "" + } + ], + "src": "2171:315:55" + }, + { + "body": { + "nativeSrc": "2592:76:55", + "nodeType": "YulBlock", + "src": "2592:76:55", + "statements": [ + { + "nativeSrc": "2602:26:55", + "nodeType": "YulAssignment", + "src": "2602:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2614:9:55", + "nodeType": "YulIdentifier", + "src": "2614:9:55" + }, + { + "kind": "number", + "nativeSrc": "2625:2:55", + "nodeType": "YulLiteral", + "src": "2625:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2610:3:55", + "nodeType": "YulIdentifier", + "src": "2610:3:55" + }, + "nativeSrc": "2610:18:55", + "nodeType": "YulFunctionCall", + "src": "2610:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2602:4:55", + "nodeType": "YulIdentifier", + "src": "2602:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2644:9:55", + "nodeType": "YulIdentifier", + "src": "2644:9:55" + }, + { + "name": "value0", + "nativeSrc": "2655:6:55", + "nodeType": "YulIdentifier", + "src": "2655:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2637:6:55", + "nodeType": "YulIdentifier", + "src": "2637:6:55" + }, + "nativeSrc": "2637:25:55", + "nodeType": "YulFunctionCall", + "src": "2637:25:55" + }, + "nativeSrc": "2637:25:55", + "nodeType": "YulExpressionStatement", + "src": "2637:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "2491:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2561:9:55", + "nodeType": "YulTypedName", + "src": "2561:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2572:6:55", + "nodeType": "YulTypedName", + "src": "2572:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2583:4:55", + "nodeType": "YulTypedName", + "src": "2583:4:55", + "type": "" + } + ], + "src": "2491:177:55" + }, + { + "body": { + "nativeSrc": "2743:177:55", + "nodeType": "YulBlock", + "src": "2743:177:55", + "statements": [ + { + "body": { + "nativeSrc": "2789:16:55", + "nodeType": "YulBlock", + "src": "2789:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2798:1:55", + "nodeType": "YulLiteral", + "src": "2798:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2801:1:55", + "nodeType": "YulLiteral", + "src": "2801:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2791:6:55", + "nodeType": "YulIdentifier", + "src": "2791:6:55" + }, + "nativeSrc": "2791:12:55", + "nodeType": "YulFunctionCall", + "src": "2791:12:55" + }, + "nativeSrc": "2791:12:55", + "nodeType": "YulExpressionStatement", + "src": "2791:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2764:7:55", + "nodeType": "YulIdentifier", + "src": "2764:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2773:9:55", + "nodeType": "YulIdentifier", + "src": "2773:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2760:3:55", + "nodeType": "YulIdentifier", + "src": "2760:3:55" + }, + "nativeSrc": "2760:23:55", + "nodeType": "YulFunctionCall", + "src": "2760:23:55" + }, + { + "kind": "number", + "nativeSrc": "2785:2:55", + "nodeType": "YulLiteral", + "src": "2785:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2756:3:55", + "nodeType": "YulIdentifier", + "src": "2756:3:55" + }, + "nativeSrc": "2756:32:55", + "nodeType": "YulFunctionCall", + "src": "2756:32:55" + }, + "nativeSrc": "2753:52:55", + "nodeType": "YulIf", + "src": "2753:52:55" + }, + { + "nativeSrc": "2814:36:55", + "nodeType": "YulVariableDeclaration", + "src": "2814:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2840:9:55", + "nodeType": "YulIdentifier", + "src": "2840:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2827:12:55", + "nodeType": "YulIdentifier", + "src": "2827:12:55" + }, + "nativeSrc": "2827:23:55", + "nodeType": "YulFunctionCall", + "src": "2827:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2818:5:55", + "nodeType": "YulTypedName", + "src": "2818:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2884:5:55", + "nodeType": "YulIdentifier", + "src": "2884:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2859:24:55", + "nodeType": "YulIdentifier", + "src": "2859:24:55" + }, + "nativeSrc": "2859:31:55", + "nodeType": "YulFunctionCall", + "src": "2859:31:55" + }, + "nativeSrc": "2859:31:55", + "nodeType": "YulExpressionStatement", + "src": "2859:31:55" + }, + { + "nativeSrc": "2899:15:55", + "nodeType": "YulAssignment", + "src": "2899:15:55", + "value": { + "name": "value", + "nativeSrc": "2909:5:55", + "nodeType": "YulIdentifier", + "src": "2909:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2899:6:55", + "nodeType": "YulIdentifier", + "src": "2899:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "2673:247:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2709:9:55", + "nodeType": "YulTypedName", + "src": "2709:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2720:7:55", + "nodeType": "YulTypedName", + "src": "2720:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2732:6:55", + "nodeType": "YulTypedName", + "src": "2732:6:55", + "type": "" + } + ], + "src": "2673:247:55" + }, + { + "body": { + "nativeSrc": "3029:352:55", + "nodeType": "YulBlock", + "src": "3029:352:55", + "statements": [ + { + "body": { + "nativeSrc": "3075:16:55", + "nodeType": "YulBlock", + "src": "3075:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3084:1:55", + "nodeType": "YulLiteral", + "src": "3084:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3087:1:55", + "nodeType": "YulLiteral", + "src": "3087:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3077:6:55", + "nodeType": "YulIdentifier", + "src": "3077:6:55" + }, + "nativeSrc": "3077:12:55", + "nodeType": "YulFunctionCall", + "src": "3077:12:55" + }, + "nativeSrc": "3077:12:55", + "nodeType": "YulExpressionStatement", + "src": "3077:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3050:7:55", + "nodeType": "YulIdentifier", + "src": "3050:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3059:9:55", + "nodeType": "YulIdentifier", + "src": "3059:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3046:3:55", + "nodeType": "YulIdentifier", + "src": "3046:3:55" + }, + "nativeSrc": "3046:23:55", + "nodeType": "YulFunctionCall", + "src": "3046:23:55" + }, + { + "kind": "number", + "nativeSrc": "3071:2:55", + "nodeType": "YulLiteral", + "src": "3071:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3042:3:55", + "nodeType": "YulIdentifier", + "src": "3042:3:55" + }, + "nativeSrc": "3042:32:55", + "nodeType": "YulFunctionCall", + "src": "3042:32:55" + }, + "nativeSrc": "3039:52:55", + "nodeType": "YulIf", + "src": "3039:52:55" + }, + { + "nativeSrc": "3100:36:55", + "nodeType": "YulVariableDeclaration", + "src": "3100:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3126:9:55", + "nodeType": "YulIdentifier", + "src": "3126:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3113:12:55", + "nodeType": "YulIdentifier", + "src": "3113:12:55" + }, + "nativeSrc": "3113:23:55", + "nodeType": "YulFunctionCall", + "src": "3113:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3104:5:55", + "nodeType": "YulTypedName", + "src": "3104:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "3170:5:55", + "nodeType": "YulIdentifier", + "src": "3170:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3145:24:55", + "nodeType": "YulIdentifier", + "src": "3145:24:55" + }, + "nativeSrc": "3145:31:55", + "nodeType": "YulFunctionCall", + "src": "3145:31:55" + }, + "nativeSrc": "3145:31:55", + "nodeType": "YulExpressionStatement", + "src": "3145:31:55" + }, + { + "nativeSrc": "3185:15:55", + "nodeType": "YulAssignment", + "src": "3185:15:55", + "value": { + "name": "value", + "nativeSrc": "3195:5:55", + "nodeType": "YulIdentifier", + "src": "3195:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3185:6:55", + "nodeType": "YulIdentifier", + "src": "3185:6:55" + } + ] + }, + { + "nativeSrc": "3209:47:55", + "nodeType": "YulVariableDeclaration", + "src": "3209:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3241:9:55", + "nodeType": "YulIdentifier", + "src": "3241:9:55" + }, + { + "kind": "number", + "nativeSrc": "3252:2:55", + "nodeType": "YulLiteral", + "src": "3252:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3237:3:55", + "nodeType": "YulIdentifier", + "src": "3237:3:55" + }, + "nativeSrc": "3237:18:55", + "nodeType": "YulFunctionCall", + "src": "3237:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3224:12:55", + "nodeType": "YulIdentifier", + "src": "3224:12:55" + }, + "nativeSrc": "3224:32:55", + "nodeType": "YulFunctionCall", + "src": "3224:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "3213:7:55", + "nodeType": "YulTypedName", + "src": "3213:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "3290:7:55", + "nodeType": "YulIdentifier", + "src": "3290:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3265:24:55", + "nodeType": "YulIdentifier", + "src": "3265:24:55" + }, + "nativeSrc": "3265:33:55", + "nodeType": "YulFunctionCall", + "src": "3265:33:55" + }, + "nativeSrc": "3265:33:55", + "nodeType": "YulExpressionStatement", + "src": "3265:33:55" + }, + { + "nativeSrc": "3307:17:55", + "nodeType": "YulAssignment", + "src": "3307:17:55", + "value": { + "name": "value_1", + "nativeSrc": "3317:7:55", + "nodeType": "YulIdentifier", + "src": "3317:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3307:6:55", + "nodeType": "YulIdentifier", + "src": "3307:6:55" + } + ] + }, + { + "nativeSrc": "3333:42:55", + "nodeType": "YulAssignment", + "src": "3333:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3360:9:55", + "nodeType": "YulIdentifier", + "src": "3360:9:55" + }, + { + "kind": "number", + "nativeSrc": "3371:2:55", + "nodeType": "YulLiteral", + "src": "3371:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3356:3:55", + "nodeType": "YulIdentifier", + "src": "3356:3:55" + }, + "nativeSrc": "3356:18:55", + "nodeType": "YulFunctionCall", + "src": "3356:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3343:12:55", + "nodeType": "YulIdentifier", + "src": "3343:12:55" + }, + "nativeSrc": "3343:32:55", + "nodeType": "YulFunctionCall", + "src": "3343:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "3333:6:55", + "nodeType": "YulIdentifier", + "src": "3333:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "2925:456:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2979:9:55", + "nodeType": "YulTypedName", + "src": "2979:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2990:7:55", + "nodeType": "YulTypedName", + "src": "2990:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3002:6:55", + "nodeType": "YulTypedName", + "src": "3002:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3010:6:55", + "nodeType": "YulTypedName", + "src": "3010:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3018:6:55", + "nodeType": "YulTypedName", + "src": "3018:6:55", + "type": "" + } + ], + "src": "2925:456:55" + }, + { + "body": { + "nativeSrc": "3456:110:55", + "nodeType": "YulBlock", + "src": "3456:110:55", + "statements": [ + { + "body": { + "nativeSrc": "3502:16:55", + "nodeType": "YulBlock", + "src": "3502:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3511:1:55", + "nodeType": "YulLiteral", + "src": "3511:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3514:1:55", + "nodeType": "YulLiteral", + "src": "3514:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3504:6:55", + "nodeType": "YulIdentifier", + "src": "3504:6:55" + }, + "nativeSrc": "3504:12:55", + "nodeType": "YulFunctionCall", + "src": "3504:12:55" + }, + "nativeSrc": "3504:12:55", + "nodeType": "YulExpressionStatement", + "src": "3504:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3477:7:55", + "nodeType": "YulIdentifier", + "src": "3477:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3486:9:55", + "nodeType": "YulIdentifier", + "src": "3486:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3473:3:55", + "nodeType": "YulIdentifier", + "src": "3473:3:55" + }, + "nativeSrc": "3473:23:55", + "nodeType": "YulFunctionCall", + "src": "3473:23:55" + }, + { + "kind": "number", + "nativeSrc": "3498:2:55", + "nodeType": "YulLiteral", + "src": "3498:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3469:3:55", + "nodeType": "YulIdentifier", + "src": "3469:3:55" + }, + "nativeSrc": "3469:32:55", + "nodeType": "YulFunctionCall", + "src": "3469:32:55" + }, + "nativeSrc": "3466:52:55", + "nodeType": "YulIf", + "src": "3466:52:55" + }, + { + "nativeSrc": "3527:33:55", + "nodeType": "YulAssignment", + "src": "3527:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3550:9:55", + "nodeType": "YulIdentifier", + "src": "3550:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3537:12:55", + "nodeType": "YulIdentifier", + "src": "3537:12:55" + }, + "nativeSrc": "3537:23:55", + "nodeType": "YulFunctionCall", + "src": "3537:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3527:6:55", + "nodeType": "YulIdentifier", + "src": "3527:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "3386:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3422:9:55", + "nodeType": "YulTypedName", + "src": "3422:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3433:7:55", + "nodeType": "YulTypedName", + "src": "3433:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3445:6:55", + "nodeType": "YulTypedName", + "src": "3445:6:55", + "type": "" + } + ], + "src": "3386:180:55" + }, + { + "body": { + "nativeSrc": "3672:76:55", + "nodeType": "YulBlock", + "src": "3672:76:55", + "statements": [ + { + "nativeSrc": "3682:26:55", + "nodeType": "YulAssignment", + "src": "3682:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3694:9:55", + "nodeType": "YulIdentifier", + "src": "3694:9:55" + }, + { + "kind": "number", + "nativeSrc": "3705:2:55", + "nodeType": "YulLiteral", + "src": "3705:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3690:3:55", + "nodeType": "YulIdentifier", + "src": "3690:3:55" + }, + "nativeSrc": "3690:18:55", + "nodeType": "YulFunctionCall", + "src": "3690:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3682:4:55", + "nodeType": "YulIdentifier", + "src": "3682:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3724:9:55", + "nodeType": "YulIdentifier", + "src": "3724:9:55" + }, + { + "name": "value0", + "nativeSrc": "3735:6:55", + "nodeType": "YulIdentifier", + "src": "3735:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3717:6:55", + "nodeType": "YulIdentifier", + "src": "3717:6:55" + }, + "nativeSrc": "3717:25:55", + "nodeType": "YulFunctionCall", + "src": "3717:25:55" + }, + "nativeSrc": "3717:25:55", + "nodeType": "YulExpressionStatement", + "src": "3717:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "3571:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3641:9:55", + "nodeType": "YulTypedName", + "src": "3641:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3652:6:55", + "nodeType": "YulTypedName", + "src": "3652:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3663:4:55", + "nodeType": "YulTypedName", + "src": "3663:4:55", + "type": "" + } + ], + "src": "3571:177:55" + }, + { + "body": { + "nativeSrc": "3840:228:55", + "nodeType": "YulBlock", + "src": "3840:228:55", + "statements": [ + { + "body": { + "nativeSrc": "3886:16:55", + "nodeType": "YulBlock", + "src": "3886:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3895:1:55", + "nodeType": "YulLiteral", + "src": "3895:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3898:1:55", + "nodeType": "YulLiteral", + "src": "3898:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3888:6:55", + "nodeType": "YulIdentifier", + "src": "3888:6:55" + }, + "nativeSrc": "3888:12:55", + "nodeType": "YulFunctionCall", + "src": "3888:12:55" + }, + "nativeSrc": "3888:12:55", + "nodeType": "YulExpressionStatement", + "src": "3888:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3861:7:55", + "nodeType": "YulIdentifier", + "src": "3861:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3870:9:55", + "nodeType": "YulIdentifier", + "src": "3870:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3857:3:55", + "nodeType": "YulIdentifier", + "src": "3857:3:55" + }, + "nativeSrc": "3857:23:55", + "nodeType": "YulFunctionCall", + "src": "3857:23:55" + }, + { + "kind": "number", + "nativeSrc": "3882:2:55", + "nodeType": "YulLiteral", + "src": "3882:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3853:3:55", + "nodeType": "YulIdentifier", + "src": "3853:3:55" + }, + "nativeSrc": "3853:32:55", + "nodeType": "YulFunctionCall", + "src": "3853:32:55" + }, + "nativeSrc": "3850:52:55", + "nodeType": "YulIf", + "src": "3850:52:55" + }, + { + "nativeSrc": "3911:33:55", + "nodeType": "YulAssignment", + "src": "3911:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3934:9:55", + "nodeType": "YulIdentifier", + "src": "3934:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3921:12:55", + "nodeType": "YulIdentifier", + "src": "3921:12:55" + }, + "nativeSrc": "3921:23:55", + "nodeType": "YulFunctionCall", + "src": "3921:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3911:6:55", + "nodeType": "YulIdentifier", + "src": "3911:6:55" + } + ] + }, + { + "nativeSrc": "3953:45:55", + "nodeType": "YulVariableDeclaration", + "src": "3953:45:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3983:9:55", + "nodeType": "YulIdentifier", + "src": "3983:9:55" + }, + { + "kind": "number", + "nativeSrc": "3994:2:55", + "nodeType": "YulLiteral", + "src": "3994:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3979:3:55", + "nodeType": "YulIdentifier", + "src": "3979:3:55" + }, + "nativeSrc": "3979:18:55", + "nodeType": "YulFunctionCall", + "src": "3979:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3966:12:55", + "nodeType": "YulIdentifier", + "src": "3966:12:55" + }, + "nativeSrc": "3966:32:55", + "nodeType": "YulFunctionCall", + "src": "3966:32:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3957:5:55", + "nodeType": "YulTypedName", + "src": "3957:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4032:5:55", + "nodeType": "YulIdentifier", + "src": "4032:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4007:24:55", + "nodeType": "YulIdentifier", + "src": "4007:24:55" + }, + "nativeSrc": "4007:31:55", + "nodeType": "YulFunctionCall", + "src": "4007:31:55" + }, + "nativeSrc": "4007:31:55", + "nodeType": "YulExpressionStatement", + "src": "4007:31:55" + }, + { + "nativeSrc": "4047:15:55", + "nodeType": "YulAssignment", + "src": "4047:15:55", + "value": { + "name": "value", + "nativeSrc": "4057:5:55", + "nodeType": "YulIdentifier", + "src": "4057:5:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4047:6:55", + "nodeType": "YulIdentifier", + "src": "4047:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "3753:315:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3798:9:55", + "nodeType": "YulTypedName", + "src": "3798:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3809:7:55", + "nodeType": "YulTypedName", + "src": "3809:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3821:6:55", + "nodeType": "YulTypedName", + "src": "3821:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3829:6:55", + "nodeType": "YulTypedName", + "src": "3829:6:55", + "type": "" + } + ], + "src": "3753:315:55" + }, + { + "body": { + "nativeSrc": "4105:95:55", + "nodeType": "YulBlock", + "src": "4105:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4122:1:55", + "nodeType": "YulLiteral", + "src": "4122:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4129:3:55", + "nodeType": "YulLiteral", + "src": "4129:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "4134:10:55", + "nodeType": "YulLiteral", + "src": "4134:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4125:3:55", + "nodeType": "YulIdentifier", + "src": "4125:3:55" + }, + "nativeSrc": "4125:20:55", + "nodeType": "YulFunctionCall", + "src": "4125:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4115:6:55", + "nodeType": "YulIdentifier", + "src": "4115:6:55" + }, + "nativeSrc": "4115:31:55", + "nodeType": "YulFunctionCall", + "src": "4115:31:55" + }, + "nativeSrc": "4115:31:55", + "nodeType": "YulExpressionStatement", + "src": "4115:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4162:1:55", + "nodeType": "YulLiteral", + "src": "4162:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "4165:4:55", + "nodeType": "YulLiteral", + "src": "4165:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4155:6:55", + "nodeType": "YulIdentifier", + "src": "4155:6:55" + }, + "nativeSrc": "4155:15:55", + "nodeType": "YulFunctionCall", + "src": "4155:15:55" + }, + "nativeSrc": "4155:15:55", + "nodeType": "YulExpressionStatement", + "src": "4155:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4186:1:55", + "nodeType": "YulLiteral", + "src": "4186:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4189:4:55", + "nodeType": "YulLiteral", + "src": "4189:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4179:6:55", + "nodeType": "YulIdentifier", + "src": "4179:6:55" + }, + "nativeSrc": "4179:15:55", + "nodeType": "YulFunctionCall", + "src": "4179:15:55" + }, + "nativeSrc": "4179:15:55", + "nodeType": "YulExpressionStatement", + "src": "4179:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "4073:127:55", + "nodeType": "YulFunctionDefinition", + "src": "4073:127:55" + }, + { + "body": { + "nativeSrc": "4279:557:55", + "nodeType": "YulBlock", + "src": "4279:557:55", + "statements": [ + { + "nativeSrc": "4289:28:55", + "nodeType": "YulVariableDeclaration", + "src": "4289:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4307:2:55", + "nodeType": "YulLiteral", + "src": "4307:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4311:1:55", + "nodeType": "YulLiteral", + "src": "4311:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4303:3:55", + "nodeType": "YulIdentifier", + "src": "4303:3:55" + }, + "nativeSrc": "4303:10:55", + "nodeType": "YulFunctionCall", + "src": "4303:10:55" + }, + { + "kind": "number", + "nativeSrc": "4315:1:55", + "nodeType": "YulLiteral", + "src": "4315:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4299:3:55", + "nodeType": "YulIdentifier", + "src": "4299:3:55" + }, + "nativeSrc": "4299:18:55", + "nodeType": "YulFunctionCall", + "src": "4299:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4293:2:55", + "nodeType": "YulTypedName", + "src": "4293:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4344:22:55", + "nodeType": "YulBlock", + "src": "4344:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4346:16:55", + "nodeType": "YulIdentifier", + "src": "4346:16:55" + }, + "nativeSrc": "4346:18:55", + "nodeType": "YulFunctionCall", + "src": "4346:18:55" + }, + "nativeSrc": "4346:18:55", + "nodeType": "YulExpressionStatement", + "src": "4346:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "4332:6:55", + "nodeType": "YulIdentifier", + "src": "4332:6:55" + }, + { + "name": "_1", + "nativeSrc": "4340:2:55", + "nodeType": "YulIdentifier", + "src": "4340:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4329:2:55", + "nodeType": "YulIdentifier", + "src": "4329:2:55" + }, + "nativeSrc": "4329:14:55", + "nodeType": "YulFunctionCall", + "src": "4329:14:55" + }, + "nativeSrc": "4326:40:55", + "nodeType": "YulIf", + "src": "4326:40:55" + }, + { + "nativeSrc": "4375:17:55", + "nodeType": "YulVariableDeclaration", + "src": "4375:17:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4389:2:55", + "nodeType": "YulLiteral", + "src": "4389:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4385:3:55", + "nodeType": "YulIdentifier", + "src": "4385:3:55" + }, + "nativeSrc": "4385:7:55", + "nodeType": "YulFunctionCall", + "src": "4385:7:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "4379:2:55", + "nodeType": "YulTypedName", + "src": "4379:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4401:23:55", + "nodeType": "YulVariableDeclaration", + "src": "4401:23:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4421:2:55", + "nodeType": "YulLiteral", + "src": "4421:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4415:5:55", + "nodeType": "YulIdentifier", + "src": "4415:5:55" + }, + "nativeSrc": "4415:9:55", + "nodeType": "YulFunctionCall", + "src": "4415:9:55" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "4405:6:55", + "nodeType": "YulTypedName", + "src": "4405:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4433:73:55", + "nodeType": "YulVariableDeclaration", + "src": "4433:73:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4455:6:55", + "nodeType": "YulIdentifier", + "src": "4455:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "4479:6:55", + "nodeType": "YulIdentifier", + "src": "4479:6:55" + }, + { + "kind": "number", + "nativeSrc": "4487:2:55", + "nodeType": "YulLiteral", + "src": "4487:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4475:3:55", + "nodeType": "YulIdentifier", + "src": "4475:3:55" + }, + "nativeSrc": "4475:15:55", + "nodeType": "YulFunctionCall", + "src": "4475:15:55" + }, + { + "name": "_2", + "nativeSrc": "4492:2:55", + "nodeType": "YulIdentifier", + "src": "4492:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4471:3:55", + "nodeType": "YulIdentifier", + "src": "4471:3:55" + }, + "nativeSrc": "4471:24:55", + "nodeType": "YulFunctionCall", + "src": "4471:24:55" + }, + { + "kind": "number", + "nativeSrc": "4497:2:55", + "nodeType": "YulLiteral", + "src": "4497:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4467:3:55", + "nodeType": "YulIdentifier", + "src": "4467:3:55" + }, + "nativeSrc": "4467:33:55", + "nodeType": "YulFunctionCall", + "src": "4467:33:55" + }, + { + "name": "_2", + "nativeSrc": "4502:2:55", + "nodeType": "YulIdentifier", + "src": "4502:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4463:3:55", + "nodeType": "YulIdentifier", + "src": "4463:3:55" + }, + "nativeSrc": "4463:42:55", + "nodeType": "YulFunctionCall", + "src": "4463:42:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4451:3:55", + "nodeType": "YulIdentifier", + "src": "4451:3:55" + }, + "nativeSrc": "4451:55:55", + "nodeType": "YulFunctionCall", + "src": "4451:55:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "4437:10:55", + "nodeType": "YulTypedName", + "src": "4437:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4565:22:55", + "nodeType": "YulBlock", + "src": "4565:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4567:16:55", + "nodeType": "YulIdentifier", + "src": "4567:16:55" + }, + "nativeSrc": "4567:18:55", + "nodeType": "YulFunctionCall", + "src": "4567:18:55" + }, + "nativeSrc": "4567:18:55", + "nodeType": "YulExpressionStatement", + "src": "4567:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "4524:10:55", + "nodeType": "YulIdentifier", + "src": "4524:10:55" + }, + { + "name": "_1", + "nativeSrc": "4536:2:55", + "nodeType": "YulIdentifier", + "src": "4536:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4521:2:55", + "nodeType": "YulIdentifier", + "src": "4521:2:55" + }, + "nativeSrc": "4521:18:55", + "nodeType": "YulFunctionCall", + "src": "4521:18:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "4544:10:55", + "nodeType": "YulIdentifier", + "src": "4544:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "4556:6:55", + "nodeType": "YulIdentifier", + "src": "4556:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4541:2:55", + "nodeType": "YulIdentifier", + "src": "4541:2:55" + }, + "nativeSrc": "4541:22:55", + "nodeType": "YulFunctionCall", + "src": "4541:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4518:2:55", + "nodeType": "YulIdentifier", + "src": "4518:2:55" + }, + "nativeSrc": "4518:46:55", + "nodeType": "YulFunctionCall", + "src": "4518:46:55" + }, + "nativeSrc": "4515:72:55", + "nodeType": "YulIf", + "src": "4515:72:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4603:2:55", + "nodeType": "YulLiteral", + "src": "4603:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "4607:10:55", + "nodeType": "YulIdentifier", + "src": "4607:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4596:6:55", + "nodeType": "YulIdentifier", + "src": "4596:6:55" + }, + "nativeSrc": "4596:22:55", + "nodeType": "YulFunctionCall", + "src": "4596:22:55" + }, + "nativeSrc": "4596:22:55", + "nodeType": "YulExpressionStatement", + "src": "4596:22:55" + }, + { + "nativeSrc": "4627:15:55", + "nodeType": "YulAssignment", + "src": "4627:15:55", + "value": { + "name": "memPtr", + "nativeSrc": "4636:6:55", + "nodeType": "YulIdentifier", + "src": "4636:6:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "4627:5:55", + "nodeType": "YulIdentifier", + "src": "4627:5:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4658:6:55", + "nodeType": "YulIdentifier", + "src": "4658:6:55" + }, + { + "name": "length", + "nativeSrc": "4666:6:55", + "nodeType": "YulIdentifier", + "src": "4666:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4651:6:55", + "nodeType": "YulIdentifier", + "src": "4651:6:55" + }, + "nativeSrc": "4651:22:55", + "nodeType": "YulFunctionCall", + "src": "4651:22:55" + }, + "nativeSrc": "4651:22:55", + "nodeType": "YulExpressionStatement", + "src": "4651:22:55" + }, + { + "body": { + "nativeSrc": "4711:16:55", + "nodeType": "YulBlock", + "src": "4711:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4720:1:55", + "nodeType": "YulLiteral", + "src": "4720:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4723:1:55", + "nodeType": "YulLiteral", + "src": "4723:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4713:6:55", + "nodeType": "YulIdentifier", + "src": "4713:6:55" + }, + "nativeSrc": "4713:12:55", + "nodeType": "YulFunctionCall", + "src": "4713:12:55" + }, + "nativeSrc": "4713:12:55", + "nodeType": "YulExpressionStatement", + "src": "4713:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4692:3:55", + "nodeType": "YulIdentifier", + "src": "4692:3:55" + }, + { + "name": "length", + "nativeSrc": "4697:6:55", + "nodeType": "YulIdentifier", + "src": "4697:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4688:3:55", + "nodeType": "YulIdentifier", + "src": "4688:3:55" + }, + "nativeSrc": "4688:16:55", + "nodeType": "YulFunctionCall", + "src": "4688:16:55" + }, + { + "name": "end", + "nativeSrc": "4706:3:55", + "nodeType": "YulIdentifier", + "src": "4706:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4685:2:55", + "nodeType": "YulIdentifier", + "src": "4685:2:55" + }, + "nativeSrc": "4685:25:55", + "nodeType": "YulFunctionCall", + "src": "4685:25:55" + }, + "nativeSrc": "4682:45:55", + "nodeType": "YulIf", + "src": "4682:45:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4753:6:55", + "nodeType": "YulIdentifier", + "src": "4753:6:55" + }, + { + "kind": "number", + "nativeSrc": "4761:4:55", + "nodeType": "YulLiteral", + "src": "4761:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4749:3:55", + "nodeType": "YulIdentifier", + "src": "4749:3:55" + }, + "nativeSrc": "4749:17:55", + "nodeType": "YulFunctionCall", + "src": "4749:17:55" + }, + { + "name": "src", + "nativeSrc": "4768:3:55", + "nodeType": "YulIdentifier", + "src": "4768:3:55" + }, + { + "name": "length", + "nativeSrc": "4773:6:55", + "nodeType": "YulIdentifier", + "src": "4773:6:55" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "4736:12:55", + "nodeType": "YulIdentifier", + "src": "4736:12:55" + }, + "nativeSrc": "4736:44:55", + "nodeType": "YulFunctionCall", + "src": "4736:44:55" + }, + "nativeSrc": "4736:44:55", + "nodeType": "YulExpressionStatement", + "src": "4736:44:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4804:6:55", + "nodeType": "YulIdentifier", + "src": "4804:6:55" + }, + { + "name": "length", + "nativeSrc": "4812:6:55", + "nodeType": "YulIdentifier", + "src": "4812:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4800:3:55", + "nodeType": "YulIdentifier", + "src": "4800:3:55" + }, + "nativeSrc": "4800:19:55", + "nodeType": "YulFunctionCall", + "src": "4800:19:55" + }, + { + "kind": "number", + "nativeSrc": "4821:4:55", + "nodeType": "YulLiteral", + "src": "4821:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4796:3:55", + "nodeType": "YulIdentifier", + "src": "4796:3:55" + }, + "nativeSrc": "4796:30:55", + "nodeType": "YulFunctionCall", + "src": "4796:30:55" + }, + { + "kind": "number", + "nativeSrc": "4828:1:55", + "nodeType": "YulLiteral", + "src": "4828:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4789:6:55", + "nodeType": "YulIdentifier", + "src": "4789:6:55" + }, + "nativeSrc": "4789:41:55", + "nodeType": "YulFunctionCall", + "src": "4789:41:55" + }, + "nativeSrc": "4789:41:55", + "nodeType": "YulExpressionStatement", + "src": "4789:41:55" + } + ] + }, + "name": "abi_decode_available_length_bytes", + "nativeSrc": "4205:631:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "4248:3:55", + "nodeType": "YulTypedName", + "src": "4248:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "4253:6:55", + "nodeType": "YulTypedName", + "src": "4253:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "4261:3:55", + "nodeType": "YulTypedName", + "src": "4261:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "4269:5:55", + "nodeType": "YulTypedName", + "src": "4269:5:55", + "type": "" + } + ], + "src": "4205:631:55" + }, + { + "body": { + "nativeSrc": "4893:168:55", + "nodeType": "YulBlock", + "src": "4893:168:55", + "statements": [ + { + "body": { + "nativeSrc": "4942:16:55", + "nodeType": "YulBlock", + "src": "4942:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4951:1:55", + "nodeType": "YulLiteral", + "src": "4951:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4954:1:55", + "nodeType": "YulLiteral", + "src": "4954:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4944:6:55", + "nodeType": "YulIdentifier", + "src": "4944:6:55" + }, + "nativeSrc": "4944:12:55", + "nodeType": "YulFunctionCall", + "src": "4944:12:55" + }, + "nativeSrc": "4944:12:55", + "nodeType": "YulExpressionStatement", + "src": "4944:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4921:6:55", + "nodeType": "YulIdentifier", + "src": "4921:6:55" + }, + { + "kind": "number", + "nativeSrc": "4929:4:55", + "nodeType": "YulLiteral", + "src": "4929:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4917:3:55", + "nodeType": "YulIdentifier", + "src": "4917:3:55" + }, + "nativeSrc": "4917:17:55", + "nodeType": "YulFunctionCall", + "src": "4917:17:55" + }, + { + "name": "end", + "nativeSrc": "4936:3:55", + "nodeType": "YulIdentifier", + "src": "4936:3:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4913:3:55", + "nodeType": "YulIdentifier", + "src": "4913:3:55" + }, + "nativeSrc": "4913:27:55", + "nodeType": "YulFunctionCall", + "src": "4913:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4906:6:55", + "nodeType": "YulIdentifier", + "src": "4906:6:55" + }, + "nativeSrc": "4906:35:55", + "nodeType": "YulFunctionCall", + "src": "4906:35:55" + }, + "nativeSrc": "4903:55:55", + "nodeType": "YulIf", + "src": "4903:55:55" + }, + { + "nativeSrc": "4967:88:55", + "nodeType": "YulAssignment", + "src": "4967:88:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5014:6:55", + "nodeType": "YulIdentifier", + "src": "5014:6:55" + }, + { + "kind": "number", + "nativeSrc": "5022:4:55", + "nodeType": "YulLiteral", + "src": "5022:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5010:3:55", + "nodeType": "YulIdentifier", + "src": "5010:3:55" + }, + "nativeSrc": "5010:17:55", + "nodeType": "YulFunctionCall", + "src": "5010:17:55" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5042:6:55", + "nodeType": "YulIdentifier", + "src": "5042:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5029:12:55", + "nodeType": "YulIdentifier", + "src": "5029:12:55" + }, + "nativeSrc": "5029:20:55", + "nodeType": "YulFunctionCall", + "src": "5029:20:55" + }, + { + "name": "end", + "nativeSrc": "5051:3:55", + "nodeType": "YulIdentifier", + "src": "5051:3:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_bytes", + "nativeSrc": "4976:33:55", + "nodeType": "YulIdentifier", + "src": "4976:33:55" + }, + "nativeSrc": "4976:79:55", + "nodeType": "YulFunctionCall", + "src": "4976:79:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "4967:5:55", + "nodeType": "YulIdentifier", + "src": "4967:5:55" + } + ] + } + ] + }, + "name": "abi_decode_bytes", + "nativeSrc": "4841:220:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "4867:6:55", + "nodeType": "YulTypedName", + "src": "4867:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "4875:3:55", + "nodeType": "YulTypedName", + "src": "4875:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "4883:5:55", + "nodeType": "YulTypedName", + "src": "4883:5:55", + "type": "" + } + ], + "src": "4841:220:55" + }, + { + "body": { + "nativeSrc": "5162:359:55", + "nodeType": "YulBlock", + "src": "5162:359:55", + "statements": [ + { + "body": { + "nativeSrc": "5208:16:55", + "nodeType": "YulBlock", + "src": "5208:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5217:1:55", + "nodeType": "YulLiteral", + "src": "5217:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5220:1:55", + "nodeType": "YulLiteral", + "src": "5220:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5210:6:55", + "nodeType": "YulIdentifier", + "src": "5210:6:55" + }, + "nativeSrc": "5210:12:55", + "nodeType": "YulFunctionCall", + "src": "5210:12:55" + }, + "nativeSrc": "5210:12:55", + "nodeType": "YulExpressionStatement", + "src": "5210:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5183:7:55", + "nodeType": "YulIdentifier", + "src": "5183:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5192:9:55", + "nodeType": "YulIdentifier", + "src": "5192:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5179:3:55", + "nodeType": "YulIdentifier", + "src": "5179:3:55" + }, + "nativeSrc": "5179:23:55", + "nodeType": "YulFunctionCall", + "src": "5179:23:55" + }, + { + "kind": "number", + "nativeSrc": "5204:2:55", + "nodeType": "YulLiteral", + "src": "5204:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5175:3:55", + "nodeType": "YulIdentifier", + "src": "5175:3:55" + }, + "nativeSrc": "5175:32:55", + "nodeType": "YulFunctionCall", + "src": "5175:32:55" + }, + "nativeSrc": "5172:52:55", + "nodeType": "YulIf", + "src": "5172:52:55" + }, + { + "nativeSrc": "5233:36:55", + "nodeType": "YulVariableDeclaration", + "src": "5233:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5259:9:55", + "nodeType": "YulIdentifier", + "src": "5259:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5246:12:55", + "nodeType": "YulIdentifier", + "src": "5246:12:55" + }, + "nativeSrc": "5246:23:55", + "nodeType": "YulFunctionCall", + "src": "5246:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5237:5:55", + "nodeType": "YulTypedName", + "src": "5237:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5303:5:55", + "nodeType": "YulIdentifier", + "src": "5303:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5278:24:55", + "nodeType": "YulIdentifier", + "src": "5278:24:55" + }, + "nativeSrc": "5278:31:55", + "nodeType": "YulFunctionCall", + "src": "5278:31:55" + }, + "nativeSrc": "5278:31:55", + "nodeType": "YulExpressionStatement", + "src": "5278:31:55" + }, + { + "nativeSrc": "5318:15:55", + "nodeType": "YulAssignment", + "src": "5318:15:55", + "value": { + "name": "value", + "nativeSrc": "5328:5:55", + "nodeType": "YulIdentifier", + "src": "5328:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5318:6:55", + "nodeType": "YulIdentifier", + "src": "5318:6:55" + } + ] + }, + { + "nativeSrc": "5342:46:55", + "nodeType": "YulVariableDeclaration", + "src": "5342:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5373:9:55", + "nodeType": "YulIdentifier", + "src": "5373:9:55" + }, + { + "kind": "number", + "nativeSrc": "5384:2:55", + "nodeType": "YulLiteral", + "src": "5384:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5369:3:55", + "nodeType": "YulIdentifier", + "src": "5369:3:55" + }, + "nativeSrc": "5369:18:55", + "nodeType": "YulFunctionCall", + "src": "5369:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5356:12:55", + "nodeType": "YulIdentifier", + "src": "5356:12:55" + }, + "nativeSrc": "5356:32:55", + "nodeType": "YulFunctionCall", + "src": "5356:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5346:6:55", + "nodeType": "YulTypedName", + "src": "5346:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5431:16:55", + "nodeType": "YulBlock", + "src": "5431:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5440:1:55", + "nodeType": "YulLiteral", + "src": "5440:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5443:1:55", + "nodeType": "YulLiteral", + "src": "5443:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5433:6:55", + "nodeType": "YulIdentifier", + "src": "5433:6:55" + }, + "nativeSrc": "5433:12:55", + "nodeType": "YulFunctionCall", + "src": "5433:12:55" + }, + "nativeSrc": "5433:12:55", + "nodeType": "YulExpressionStatement", + "src": "5433:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5403:6:55", + "nodeType": "YulIdentifier", + "src": "5403:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5419:2:55", + "nodeType": "YulLiteral", + "src": "5419:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5423:1:55", + "nodeType": "YulLiteral", + "src": "5423:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5415:3:55", + "nodeType": "YulIdentifier", + "src": "5415:3:55" + }, + "nativeSrc": "5415:10:55", + "nodeType": "YulFunctionCall", + "src": "5415:10:55" + }, + { + "kind": "number", + "nativeSrc": "5427:1:55", + "nodeType": "YulLiteral", + "src": "5427:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5411:3:55", + "nodeType": "YulIdentifier", + "src": "5411:3:55" + }, + "nativeSrc": "5411:18:55", + "nodeType": "YulFunctionCall", + "src": "5411:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5400:2:55", + "nodeType": "YulIdentifier", + "src": "5400:2:55" + }, + "nativeSrc": "5400:30:55", + "nodeType": "YulFunctionCall", + "src": "5400:30:55" + }, + "nativeSrc": "5397:50:55", + "nodeType": "YulIf", + "src": "5397:50:55" + }, + { + "nativeSrc": "5456:59:55", + "nodeType": "YulAssignment", + "src": "5456:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5487:9:55", + "nodeType": "YulIdentifier", + "src": "5487:9:55" + }, + { + "name": "offset", + "nativeSrc": "5498:6:55", + "nodeType": "YulIdentifier", + "src": "5498:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5483:3:55", + "nodeType": "YulIdentifier", + "src": "5483:3:55" + }, + "nativeSrc": "5483:22:55", + "nodeType": "YulFunctionCall", + "src": "5483:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "5507:7:55", + "nodeType": "YulIdentifier", + "src": "5507:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "5466:16:55", + "nodeType": "YulIdentifier", + "src": "5466:16:55" + }, + "nativeSrc": "5466:49:55", + "nodeType": "YulFunctionCall", + "src": "5466:49:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5456:6:55", + "nodeType": "YulIdentifier", + "src": "5456:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "5066:455:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5120:9:55", + "nodeType": "YulTypedName", + "src": "5120:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5131:7:55", + "nodeType": "YulTypedName", + "src": "5131:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5143:6:55", + "nodeType": "YulTypedName", + "src": "5143:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5151:6:55", + "nodeType": "YulTypedName", + "src": "5151:6:55", + "type": "" + } + ], + "src": "5066:455:55" + }, + { + "body": { + "nativeSrc": "5689:716:55", + "nodeType": "YulBlock", + "src": "5689:716:55", + "statements": [ + { + "body": { + "nativeSrc": "5736:16:55", + "nodeType": "YulBlock", + "src": "5736:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5745:1:55", + "nodeType": "YulLiteral", + "src": "5745:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5748:1:55", + "nodeType": "YulLiteral", + "src": "5748:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5738:6:55", + "nodeType": "YulIdentifier", + "src": "5738:6:55" + }, + "nativeSrc": "5738:12:55", + "nodeType": "YulFunctionCall", + "src": "5738:12:55" + }, + "nativeSrc": "5738:12:55", + "nodeType": "YulExpressionStatement", + "src": "5738:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5710:7:55", + "nodeType": "YulIdentifier", + "src": "5710:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5719:9:55", + "nodeType": "YulIdentifier", + "src": "5719:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5706:3:55", + "nodeType": "YulIdentifier", + "src": "5706:3:55" + }, + "nativeSrc": "5706:23:55", + "nodeType": "YulFunctionCall", + "src": "5706:23:55" + }, + { + "kind": "number", + "nativeSrc": "5731:3:55", + "nodeType": "YulLiteral", + "src": "5731:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5702:3:55", + "nodeType": "YulIdentifier", + "src": "5702:3:55" + }, + "nativeSrc": "5702:33:55", + "nodeType": "YulFunctionCall", + "src": "5702:33:55" + }, + "nativeSrc": "5699:53:55", + "nodeType": "YulIf", + "src": "5699:53:55" + }, + { + "nativeSrc": "5761:36:55", + "nodeType": "YulVariableDeclaration", + "src": "5761:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5787:9:55", + "nodeType": "YulIdentifier", + "src": "5787:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5774:12:55", + "nodeType": "YulIdentifier", + "src": "5774:12:55" + }, + "nativeSrc": "5774:23:55", + "nodeType": "YulFunctionCall", + "src": "5774:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5765:5:55", + "nodeType": "YulTypedName", + "src": "5765:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5831:5:55", + "nodeType": "YulIdentifier", + "src": "5831:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5806:24:55", + "nodeType": "YulIdentifier", + "src": "5806:24:55" + }, + "nativeSrc": "5806:31:55", + "nodeType": "YulFunctionCall", + "src": "5806:31:55" + }, + "nativeSrc": "5806:31:55", + "nodeType": "YulExpressionStatement", + "src": "5806:31:55" + }, + { + "nativeSrc": "5846:15:55", + "nodeType": "YulAssignment", + "src": "5846:15:55", + "value": { + "name": "value", + "nativeSrc": "5856:5:55", + "nodeType": "YulIdentifier", + "src": "5856:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5846:6:55", + "nodeType": "YulIdentifier", + "src": "5846:6:55" + } + ] + }, + { + "nativeSrc": "5870:46:55", + "nodeType": "YulVariableDeclaration", + "src": "5870:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5901:9:55", + "nodeType": "YulIdentifier", + "src": "5901:9:55" + }, + { + "kind": "number", + "nativeSrc": "5912:2:55", + "nodeType": "YulLiteral", + "src": "5912:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5897:3:55", + "nodeType": "YulIdentifier", + "src": "5897:3:55" + }, + "nativeSrc": "5897:18:55", + "nodeType": "YulFunctionCall", + "src": "5897:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5884:12:55", + "nodeType": "YulIdentifier", + "src": "5884:12:55" + }, + "nativeSrc": "5884:32:55", + "nodeType": "YulFunctionCall", + "src": "5884:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5874:6:55", + "nodeType": "YulTypedName", + "src": "5874:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5959:16:55", + "nodeType": "YulBlock", + "src": "5959:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5968:1:55", + "nodeType": "YulLiteral", + "src": "5968:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5971:1:55", + "nodeType": "YulLiteral", + "src": "5971:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5961:6:55", + "nodeType": "YulIdentifier", + "src": "5961:6:55" + }, + "nativeSrc": "5961:12:55", + "nodeType": "YulFunctionCall", + "src": "5961:12:55" + }, + "nativeSrc": "5961:12:55", + "nodeType": "YulExpressionStatement", + "src": "5961:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5931:6:55", + "nodeType": "YulIdentifier", + "src": "5931:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5947:2:55", + "nodeType": "YulLiteral", + "src": "5947:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5951:1:55", + "nodeType": "YulLiteral", + "src": "5951:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5943:3:55", + "nodeType": "YulIdentifier", + "src": "5943:3:55" + }, + "nativeSrc": "5943:10:55", + "nodeType": "YulFunctionCall", + "src": "5943:10:55" + }, + { + "kind": "number", + "nativeSrc": "5955:1:55", + "nodeType": "YulLiteral", + "src": "5955:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5939:3:55", + "nodeType": "YulIdentifier", + "src": "5939:3:55" + }, + "nativeSrc": "5939:18:55", + "nodeType": "YulFunctionCall", + "src": "5939:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5928:2:55", + "nodeType": "YulIdentifier", + "src": "5928:2:55" + }, + "nativeSrc": "5928:30:55", + "nodeType": "YulFunctionCall", + "src": "5928:30:55" + }, + "nativeSrc": "5925:50:55", + "nodeType": "YulIf", + "src": "5925:50:55" + }, + { + "nativeSrc": "5984:32:55", + "nodeType": "YulVariableDeclaration", + "src": "5984:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5998:9:55", + "nodeType": "YulIdentifier", + "src": "5998:9:55" + }, + { + "name": "offset", + "nativeSrc": "6009:6:55", + "nodeType": "YulIdentifier", + "src": "6009:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5994:3:55", + "nodeType": "YulIdentifier", + "src": "5994:3:55" + }, + "nativeSrc": "5994:22:55", + "nodeType": "YulFunctionCall", + "src": "5994:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "5988:2:55", + "nodeType": "YulTypedName", + "src": "5988:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6064:16:55", + "nodeType": "YulBlock", + "src": "6064:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6073:1:55", + "nodeType": "YulLiteral", + "src": "6073:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6076:1:55", + "nodeType": "YulLiteral", + "src": "6076:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6066:6:55", + "nodeType": "YulIdentifier", + "src": "6066:6:55" + }, + "nativeSrc": "6066:12:55", + "nodeType": "YulFunctionCall", + "src": "6066:12:55" + }, + "nativeSrc": "6066:12:55", + "nodeType": "YulExpressionStatement", + "src": "6066:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6043:2:55", + "nodeType": "YulIdentifier", + "src": "6043:2:55" + }, + { + "kind": "number", + "nativeSrc": "6047:4:55", + "nodeType": "YulLiteral", + "src": "6047:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6039:3:55", + "nodeType": "YulIdentifier", + "src": "6039:3:55" + }, + "nativeSrc": "6039:13:55", + "nodeType": "YulFunctionCall", + "src": "6039:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "6054:7:55", + "nodeType": "YulIdentifier", + "src": "6054:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6035:3:55", + "nodeType": "YulIdentifier", + "src": "6035:3:55" + }, + "nativeSrc": "6035:27:55", + "nodeType": "YulFunctionCall", + "src": "6035:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6028:6:55", + "nodeType": "YulIdentifier", + "src": "6028:6:55" + }, + "nativeSrc": "6028:35:55", + "nodeType": "YulFunctionCall", + "src": "6028:35:55" + }, + "nativeSrc": "6025:55:55", + "nodeType": "YulIf", + "src": "6025:55:55" + }, + { + "nativeSrc": "6089:83:55", + "nodeType": "YulAssignment", + "src": "6089:83:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6137:2:55", + "nodeType": "YulIdentifier", + "src": "6137:2:55" + }, + { + "kind": "number", + "nativeSrc": "6141:2:55", + "nodeType": "YulLiteral", + "src": "6141:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6133:3:55", + "nodeType": "YulIdentifier", + "src": "6133:3:55" + }, + "nativeSrc": "6133:11:55", + "nodeType": "YulFunctionCall", + "src": "6133:11:55" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6159:2:55", + "nodeType": "YulIdentifier", + "src": "6159:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6146:12:55", + "nodeType": "YulIdentifier", + "src": "6146:12:55" + }, + "nativeSrc": "6146:16:55", + "nodeType": "YulFunctionCall", + "src": "6146:16:55" + }, + { + "name": "dataEnd", + "nativeSrc": "6164:7:55", + "nodeType": "YulIdentifier", + "src": "6164:7:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_bytes", + "nativeSrc": "6099:33:55", + "nodeType": "YulIdentifier", + "src": "6099:33:55" + }, + "nativeSrc": "6099:73:55", + "nodeType": "YulFunctionCall", + "src": "6099:73:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "6089:6:55", + "nodeType": "YulIdentifier", + "src": "6089:6:55" + } + ] + }, + { + "nativeSrc": "6181:42:55", + "nodeType": "YulAssignment", + "src": "6181:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6208:9:55", + "nodeType": "YulIdentifier", + "src": "6208:9:55" + }, + { + "kind": "number", + "nativeSrc": "6219:2:55", + "nodeType": "YulLiteral", + "src": "6219:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6204:3:55", + "nodeType": "YulIdentifier", + "src": "6204:3:55" + }, + "nativeSrc": "6204:18:55", + "nodeType": "YulFunctionCall", + "src": "6204:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6191:12:55", + "nodeType": "YulIdentifier", + "src": "6191:12:55" + }, + "nativeSrc": "6191:32:55", + "nodeType": "YulFunctionCall", + "src": "6191:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "6181:6:55", + "nodeType": "YulIdentifier", + "src": "6181:6:55" + } + ] + }, + { + "nativeSrc": "6232:42:55", + "nodeType": "YulAssignment", + "src": "6232:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6259:9:55", + "nodeType": "YulIdentifier", + "src": "6259:9:55" + }, + { + "kind": "number", + "nativeSrc": "6270:2:55", + "nodeType": "YulLiteral", + "src": "6270:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6255:3:55", + "nodeType": "YulIdentifier", + "src": "6255:3:55" + }, + "nativeSrc": "6255:18:55", + "nodeType": "YulFunctionCall", + "src": "6255:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6242:12:55", + "nodeType": "YulIdentifier", + "src": "6242:12:55" + }, + "nativeSrc": "6242:32:55", + "nodeType": "YulFunctionCall", + "src": "6242:32:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "6232:6:55", + "nodeType": "YulIdentifier", + "src": "6232:6:55" + } + ] + }, + { + "nativeSrc": "6283:48:55", + "nodeType": "YulVariableDeclaration", + "src": "6283:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6315:9:55", + "nodeType": "YulIdentifier", + "src": "6315:9:55" + }, + { + "kind": "number", + "nativeSrc": "6326:3:55", + "nodeType": "YulLiteral", + "src": "6326:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6311:3:55", + "nodeType": "YulIdentifier", + "src": "6311:3:55" + }, + "nativeSrc": "6311:19:55", + "nodeType": "YulFunctionCall", + "src": "6311:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6298:12:55", + "nodeType": "YulIdentifier", + "src": "6298:12:55" + }, + "nativeSrc": "6298:33:55", + "nodeType": "YulFunctionCall", + "src": "6298:33:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "6287:7:55", + "nodeType": "YulTypedName", + "src": "6287:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "6365:7:55", + "nodeType": "YulIdentifier", + "src": "6365:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "6340:24:55", + "nodeType": "YulIdentifier", + "src": "6340:24:55" + }, + "nativeSrc": "6340:33:55", + "nodeType": "YulFunctionCall", + "src": "6340:33:55" + }, + "nativeSrc": "6340:33:55", + "nodeType": "YulExpressionStatement", + "src": "6340:33:55" + }, + { + "nativeSrc": "6382:17:55", + "nodeType": "YulAssignment", + "src": "6382:17:55", + "value": { + "name": "value_1", + "nativeSrc": "6392:7:55", + "nodeType": "YulIdentifier", + "src": "6392:7:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "6382:6:55", + "nodeType": "YulIdentifier", + "src": "6382:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445", + "nativeSrc": "5526:879:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5623:9:55", + "nodeType": "YulTypedName", + "src": "5623:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5634:7:55", + "nodeType": "YulTypedName", + "src": "5634:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5646:6:55", + "nodeType": "YulTypedName", + "src": "5646:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5654:6:55", + "nodeType": "YulTypedName", + "src": "5654:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5662:6:55", + "nodeType": "YulTypedName", + "src": "5662:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5670:6:55", + "nodeType": "YulTypedName", + "src": "5670:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5678:6:55", + "nodeType": "YulTypedName", + "src": "5678:6:55", + "type": "" + } + ], + "src": "5526:879:55" + }, + { + "body": { + "nativeSrc": "6452:76:55", + "nodeType": "YulBlock", + "src": "6452:76:55", + "statements": [ + { + "body": { + "nativeSrc": "6506:16:55", + "nodeType": "YulBlock", + "src": "6506:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6515:1:55", + "nodeType": "YulLiteral", + "src": "6515:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6518:1:55", + "nodeType": "YulLiteral", + "src": "6518:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6508:6:55", + "nodeType": "YulIdentifier", + "src": "6508:6:55" + }, + "nativeSrc": "6508:12:55", + "nodeType": "YulFunctionCall", + "src": "6508:12:55" + }, + "nativeSrc": "6508:12:55", + "nodeType": "YulExpressionStatement", + "src": "6508:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6475:5:55", + "nodeType": "YulIdentifier", + "src": "6475:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6496:5:55", + "nodeType": "YulIdentifier", + "src": "6496:5:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6489:6:55", + "nodeType": "YulIdentifier", + "src": "6489:6:55" + }, + "nativeSrc": "6489:13:55", + "nodeType": "YulFunctionCall", + "src": "6489:13:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6482:6:55", + "nodeType": "YulIdentifier", + "src": "6482:6:55" + }, + "nativeSrc": "6482:21:55", + "nodeType": "YulFunctionCall", + "src": "6482:21:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "6472:2:55", + "nodeType": "YulIdentifier", + "src": "6472:2:55" + }, + "nativeSrc": "6472:32:55", + "nodeType": "YulFunctionCall", + "src": "6472:32:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6465:6:55", + "nodeType": "YulIdentifier", + "src": "6465:6:55" + }, + "nativeSrc": "6465:40:55", + "nodeType": "YulFunctionCall", + "src": "6465:40:55" + }, + "nativeSrc": "6462:60:55", + "nodeType": "YulIf", + "src": "6462:60:55" + } + ] + }, + "name": "validator_revert_bool", + "nativeSrc": "6410:118:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6441:5:55", + "nodeType": "YulTypedName", + "src": "6441:5:55", + "type": "" + } + ], + "src": "6410:118:55" + }, + { + "body": { + "nativeSrc": "6617:298:55", + "nodeType": "YulBlock", + "src": "6617:298:55", + "statements": [ + { + "body": { + "nativeSrc": "6663:16:55", + "nodeType": "YulBlock", + "src": "6663:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6672:1:55", + "nodeType": "YulLiteral", + "src": "6672:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6675:1:55", + "nodeType": "YulLiteral", + "src": "6675:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6665:6:55", + "nodeType": "YulIdentifier", + "src": "6665:6:55" + }, + "nativeSrc": "6665:12:55", + "nodeType": "YulFunctionCall", + "src": "6665:12:55" + }, + "nativeSrc": "6665:12:55", + "nodeType": "YulExpressionStatement", + "src": "6665:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6638:7:55", + "nodeType": "YulIdentifier", + "src": "6638:7:55" + }, + { + "name": "headStart", + "nativeSrc": "6647:9:55", + "nodeType": "YulIdentifier", + "src": "6647:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6634:3:55", + "nodeType": "YulIdentifier", + "src": "6634:3:55" + }, + "nativeSrc": "6634:23:55", + "nodeType": "YulFunctionCall", + "src": "6634:23:55" + }, + { + "kind": "number", + "nativeSrc": "6659:2:55", + "nodeType": "YulLiteral", + "src": "6659:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6630:3:55", + "nodeType": "YulIdentifier", + "src": "6630:3:55" + }, + "nativeSrc": "6630:32:55", + "nodeType": "YulFunctionCall", + "src": "6630:32:55" + }, + "nativeSrc": "6627:52:55", + "nodeType": "YulIf", + "src": "6627:52:55" + }, + { + "nativeSrc": "6688:36:55", + "nodeType": "YulVariableDeclaration", + "src": "6688:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6714:9:55", + "nodeType": "YulIdentifier", + "src": "6714:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6701:12:55", + "nodeType": "YulIdentifier", + "src": "6701:12:55" + }, + "nativeSrc": "6701:23:55", + "nodeType": "YulFunctionCall", + "src": "6701:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "6692:5:55", + "nodeType": "YulTypedName", + "src": "6692:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "6758:5:55", + "nodeType": "YulIdentifier", + "src": "6758:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "6733:24:55", + "nodeType": "YulIdentifier", + "src": "6733:24:55" + }, + "nativeSrc": "6733:31:55", + "nodeType": "YulFunctionCall", + "src": "6733:31:55" + }, + "nativeSrc": "6733:31:55", + "nodeType": "YulExpressionStatement", + "src": "6733:31:55" + }, + { + "nativeSrc": "6773:15:55", + "nodeType": "YulAssignment", + "src": "6773:15:55", + "value": { + "name": "value", + "nativeSrc": "6783:5:55", + "nodeType": "YulIdentifier", + "src": "6783:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6773:6:55", + "nodeType": "YulIdentifier", + "src": "6773:6:55" + } + ] + }, + { + "nativeSrc": "6797:47:55", + "nodeType": "YulVariableDeclaration", + "src": "6797:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6829:9:55", + "nodeType": "YulIdentifier", + "src": "6829:9:55" + }, + { + "kind": "number", + "nativeSrc": "6840:2:55", + "nodeType": "YulLiteral", + "src": "6840:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6825:3:55", + "nodeType": "YulIdentifier", + "src": "6825:3:55" + }, + "nativeSrc": "6825:18:55", + "nodeType": "YulFunctionCall", + "src": "6825:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6812:12:55", + "nodeType": "YulIdentifier", + "src": "6812:12:55" + }, + "nativeSrc": "6812:32:55", + "nodeType": "YulFunctionCall", + "src": "6812:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "6801:7:55", + "nodeType": "YulTypedName", + "src": "6801:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "6875:7:55", + "nodeType": "YulIdentifier", + "src": "6875:7:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "6853:21:55", + "nodeType": "YulIdentifier", + "src": "6853:21:55" + }, + "nativeSrc": "6853:30:55", + "nodeType": "YulFunctionCall", + "src": "6853:30:55" + }, + "nativeSrc": "6853:30:55", + "nodeType": "YulExpressionStatement", + "src": "6853:30:55" + }, + { + "nativeSrc": "6892:17:55", + "nodeType": "YulAssignment", + "src": "6892:17:55", + "value": { + "name": "value_1", + "nativeSrc": "6902:7:55", + "nodeType": "YulIdentifier", + "src": "6902:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "6892:6:55", + "nodeType": "YulIdentifier", + "src": "6892:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bool", + "nativeSrc": "6533:382:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6575:9:55", + "nodeType": "YulTypedName", + "src": "6575:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6586:7:55", + "nodeType": "YulTypedName", + "src": "6586:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6598:6:55", + "nodeType": "YulTypedName", + "src": "6598:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6606:6:55", + "nodeType": "YulTypedName", + "src": "6606:6:55", + "type": "" + } + ], + "src": "6533:382:55" + }, + { + "body": { + "nativeSrc": "7050:535:55", + "nodeType": "YulBlock", + "src": "7050:535:55", + "statements": [ + { + "body": { + "nativeSrc": "7097:16:55", + "nodeType": "YulBlock", + "src": "7097:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7106:1:55", + "nodeType": "YulLiteral", + "src": "7106:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7109:1:55", + "nodeType": "YulLiteral", + "src": "7109:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7099:6:55", + "nodeType": "YulIdentifier", + "src": "7099:6:55" + }, + "nativeSrc": "7099:12:55", + "nodeType": "YulFunctionCall", + "src": "7099:12:55" + }, + "nativeSrc": "7099:12:55", + "nodeType": "YulExpressionStatement", + "src": "7099:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7071:7:55", + "nodeType": "YulIdentifier", + "src": "7071:7:55" + }, + { + "name": "headStart", + "nativeSrc": "7080:9:55", + "nodeType": "YulIdentifier", + "src": "7080:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7067:3:55", + "nodeType": "YulIdentifier", + "src": "7067:3:55" + }, + "nativeSrc": "7067:23:55", + "nodeType": "YulFunctionCall", + "src": "7067:23:55" + }, + { + "kind": "number", + "nativeSrc": "7092:3:55", + "nodeType": "YulLiteral", + "src": "7092:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7063:3:55", + "nodeType": "YulIdentifier", + "src": "7063:3:55" + }, + "nativeSrc": "7063:33:55", + "nodeType": "YulFunctionCall", + "src": "7063:33:55" + }, + "nativeSrc": "7060:53:55", + "nodeType": "YulIf", + "src": "7060:53:55" + }, + { + "nativeSrc": "7122:36:55", + "nodeType": "YulVariableDeclaration", + "src": "7122:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7148:9:55", + "nodeType": "YulIdentifier", + "src": "7148:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7135:12:55", + "nodeType": "YulIdentifier", + "src": "7135:12:55" + }, + "nativeSrc": "7135:23:55", + "nodeType": "YulFunctionCall", + "src": "7135:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "7126:5:55", + "nodeType": "YulTypedName", + "src": "7126:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7192:5:55", + "nodeType": "YulIdentifier", + "src": "7192:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7167:24:55", + "nodeType": "YulIdentifier", + "src": "7167:24:55" + }, + "nativeSrc": "7167:31:55", + "nodeType": "YulFunctionCall", + "src": "7167:31:55" + }, + "nativeSrc": "7167:31:55", + "nodeType": "YulExpressionStatement", + "src": "7167:31:55" + }, + { + "nativeSrc": "7207:15:55", + "nodeType": "YulAssignment", + "src": "7207:15:55", + "value": { + "name": "value", + "nativeSrc": "7217:5:55", + "nodeType": "YulIdentifier", + "src": "7217:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7207:6:55", + "nodeType": "YulIdentifier", + "src": "7207:6:55" + } + ] + }, + { + "nativeSrc": "7231:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7231:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7263:9:55", + "nodeType": "YulIdentifier", + "src": "7263:9:55" + }, + { + "kind": "number", + "nativeSrc": "7274:2:55", + "nodeType": "YulLiteral", + "src": "7274:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7259:3:55", + "nodeType": "YulIdentifier", + "src": "7259:3:55" + }, + "nativeSrc": "7259:18:55", + "nodeType": "YulFunctionCall", + "src": "7259:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7246:12:55", + "nodeType": "YulIdentifier", + "src": "7246:12:55" + }, + "nativeSrc": "7246:32:55", + "nodeType": "YulFunctionCall", + "src": "7246:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "7235:7:55", + "nodeType": "YulTypedName", + "src": "7235:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "7312:7:55", + "nodeType": "YulIdentifier", + "src": "7312:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7287:24:55", + "nodeType": "YulIdentifier", + "src": "7287:24:55" + }, + "nativeSrc": "7287:33:55", + "nodeType": "YulFunctionCall", + "src": "7287:33:55" + }, + "nativeSrc": "7287:33:55", + "nodeType": "YulExpressionStatement", + "src": "7287:33:55" + }, + { + "nativeSrc": "7329:17:55", + "nodeType": "YulAssignment", + "src": "7329:17:55", + "value": { + "name": "value_1", + "nativeSrc": "7339:7:55", + "nodeType": "YulIdentifier", + "src": "7339:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7329:6:55", + "nodeType": "YulIdentifier", + "src": "7329:6:55" + } + ] + }, + { + "nativeSrc": "7355:42:55", + "nodeType": "YulAssignment", + "src": "7355:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7382:9:55", + "nodeType": "YulIdentifier", + "src": "7382:9:55" + }, + { + "kind": "number", + "nativeSrc": "7393:2:55", + "nodeType": "YulLiteral", + "src": "7393:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7378:3:55", + "nodeType": "YulIdentifier", + "src": "7378:3:55" + }, + "nativeSrc": "7378:18:55", + "nodeType": "YulFunctionCall", + "src": "7378:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7365:12:55", + "nodeType": "YulIdentifier", + "src": "7365:12:55" + }, + "nativeSrc": "7365:32:55", + "nodeType": "YulFunctionCall", + "src": "7365:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7355:6:55", + "nodeType": "YulIdentifier", + "src": "7355:6:55" + } + ] + }, + { + "nativeSrc": "7406:46:55", + "nodeType": "YulVariableDeclaration", + "src": "7406:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7437:9:55", + "nodeType": "YulIdentifier", + "src": "7437:9:55" + }, + { + "kind": "number", + "nativeSrc": "7448:2:55", + "nodeType": "YulLiteral", + "src": "7448:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7433:3:55", + "nodeType": "YulIdentifier", + "src": "7433:3:55" + }, + "nativeSrc": "7433:18:55", + "nodeType": "YulFunctionCall", + "src": "7433:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7420:12:55", + "nodeType": "YulIdentifier", + "src": "7420:12:55" + }, + "nativeSrc": "7420:32:55", + "nodeType": "YulFunctionCall", + "src": "7420:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7410:6:55", + "nodeType": "YulTypedName", + "src": "7410:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7495:16:55", + "nodeType": "YulBlock", + "src": "7495:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7504:1:55", + "nodeType": "YulLiteral", + "src": "7504:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7507:1:55", + "nodeType": "YulLiteral", + "src": "7507:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7497:6:55", + "nodeType": "YulIdentifier", + "src": "7497:6:55" + }, + "nativeSrc": "7497:12:55", + "nodeType": "YulFunctionCall", + "src": "7497:12:55" + }, + "nativeSrc": "7497:12:55", + "nodeType": "YulExpressionStatement", + "src": "7497:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "7467:6:55", + "nodeType": "YulIdentifier", + "src": "7467:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7483:2:55", + "nodeType": "YulLiteral", + "src": "7483:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "7487:1:55", + "nodeType": "YulLiteral", + "src": "7487:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7479:3:55", + "nodeType": "YulIdentifier", + "src": "7479:3:55" + }, + "nativeSrc": "7479:10:55", + "nodeType": "YulFunctionCall", + "src": "7479:10:55" + }, + { + "kind": "number", + "nativeSrc": "7491:1:55", + "nodeType": "YulLiteral", + "src": "7491:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7475:3:55", + "nodeType": "YulIdentifier", + "src": "7475:3:55" + }, + "nativeSrc": "7475:18:55", + "nodeType": "YulFunctionCall", + "src": "7475:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7464:2:55", + "nodeType": "YulIdentifier", + "src": "7464:2:55" + }, + "nativeSrc": "7464:30:55", + "nodeType": "YulFunctionCall", + "src": "7464:30:55" + }, + "nativeSrc": "7461:50:55", + "nodeType": "YulIf", + "src": "7461:50:55" + }, + { + "nativeSrc": "7520:59:55", + "nodeType": "YulAssignment", + "src": "7520:59:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7551:9:55", + "nodeType": "YulIdentifier", + "src": "7551:9:55" + }, + { + "name": "offset", + "nativeSrc": "7562:6:55", + "nodeType": "YulIdentifier", + "src": "7562:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7547:3:55", + "nodeType": "YulIdentifier", + "src": "7547:3:55" + }, + "nativeSrc": "7547:22:55", + "nodeType": "YulFunctionCall", + "src": "7547:22:55" + }, + { + "name": "dataEnd", + "nativeSrc": "7571:7:55", + "nodeType": "YulIdentifier", + "src": "7571:7:55" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "7530:16:55", + "nodeType": "YulIdentifier", + "src": "7530:16:55" + }, + "nativeSrc": "7530:49:55", + "nodeType": "YulFunctionCall", + "src": "7530:49:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "7520:6:55", + "nodeType": "YulIdentifier", + "src": "7520:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nativeSrc": "6920:665:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6992:9:55", + "nodeType": "YulTypedName", + "src": "6992:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7003:7:55", + "nodeType": "YulTypedName", + "src": "7003:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7015:6:55", + "nodeType": "YulTypedName", + "src": "7015:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7023:6:55", + "nodeType": "YulTypedName", + "src": "7023:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7031:6:55", + "nodeType": "YulTypedName", + "src": "7031:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7039:6:55", + "nodeType": "YulTypedName", + "src": "7039:6:55", + "type": "" + } + ], + "src": "6920:665:55" + }, + { + "body": { + "nativeSrc": "7694:425:55", + "nodeType": "YulBlock", + "src": "7694:425:55", + "statements": [ + { + "body": { + "nativeSrc": "7740:16:55", + "nodeType": "YulBlock", + "src": "7740:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7749:1:55", + "nodeType": "YulLiteral", + "src": "7749:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7752:1:55", + "nodeType": "YulLiteral", + "src": "7752:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7742:6:55", + "nodeType": "YulIdentifier", + "src": "7742:6:55" + }, + "nativeSrc": "7742:12:55", + "nodeType": "YulFunctionCall", + "src": "7742:12:55" + }, + "nativeSrc": "7742:12:55", + "nodeType": "YulExpressionStatement", + "src": "7742:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7715:7:55", + "nodeType": "YulIdentifier", + "src": "7715:7:55" + }, + { + "name": "headStart", + "nativeSrc": "7724:9:55", + "nodeType": "YulIdentifier", + "src": "7724:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7711:3:55", + "nodeType": "YulIdentifier", + "src": "7711:3:55" + }, + "nativeSrc": "7711:23:55", + "nodeType": "YulFunctionCall", + "src": "7711:23:55" + }, + { + "kind": "number", + "nativeSrc": "7736:2:55", + "nodeType": "YulLiteral", + "src": "7736:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7707:3:55", + "nodeType": "YulIdentifier", + "src": "7707:3:55" + }, + "nativeSrc": "7707:32:55", + "nodeType": "YulFunctionCall", + "src": "7707:32:55" + }, + "nativeSrc": "7704:52:55", + "nodeType": "YulIf", + "src": "7704:52:55" + }, + { + "nativeSrc": "7765:36:55", + "nodeType": "YulVariableDeclaration", + "src": "7765:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7791:9:55", + "nodeType": "YulIdentifier", + "src": "7791:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7778:12:55", + "nodeType": "YulIdentifier", + "src": "7778:12:55" + }, + "nativeSrc": "7778:23:55", + "nodeType": "YulFunctionCall", + "src": "7778:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "7769:5:55", + "nodeType": "YulTypedName", + "src": "7769:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7835:5:55", + "nodeType": "YulIdentifier", + "src": "7835:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7810:24:55", + "nodeType": "YulIdentifier", + "src": "7810:24:55" + }, + "nativeSrc": "7810:31:55", + "nodeType": "YulFunctionCall", + "src": "7810:31:55" + }, + "nativeSrc": "7810:31:55", + "nodeType": "YulExpressionStatement", + "src": "7810:31:55" + }, + { + "nativeSrc": "7850:15:55", + "nodeType": "YulAssignment", + "src": "7850:15:55", + "value": { + "name": "value", + "nativeSrc": "7860:5:55", + "nodeType": "YulIdentifier", + "src": "7860:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7850:6:55", + "nodeType": "YulIdentifier", + "src": "7850:6:55" + } + ] + }, + { + "nativeSrc": "7874:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7874:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7906:9:55", + "nodeType": "YulIdentifier", + "src": "7906:9:55" + }, + { + "kind": "number", + "nativeSrc": "7917:2:55", + "nodeType": "YulLiteral", + "src": "7917:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7902:3:55", + "nodeType": "YulIdentifier", + "src": "7902:3:55" + }, + "nativeSrc": "7902:18:55", + "nodeType": "YulFunctionCall", + "src": "7902:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7889:12:55", + "nodeType": "YulIdentifier", + "src": "7889:12:55" + }, + "nativeSrc": "7889:32:55", + "nodeType": "YulFunctionCall", + "src": "7889:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "7878:7:55", + "nodeType": "YulTypedName", + "src": "7878:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "7955:7:55", + "nodeType": "YulIdentifier", + "src": "7955:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7930:24:55", + "nodeType": "YulIdentifier", + "src": "7930:24:55" + }, + "nativeSrc": "7930:33:55", + "nodeType": "YulFunctionCall", + "src": "7930:33:55" + }, + "nativeSrc": "7930:33:55", + "nodeType": "YulExpressionStatement", + "src": "7930:33:55" + }, + { + "nativeSrc": "7972:17:55", + "nodeType": "YulAssignment", + "src": "7972:17:55", + "value": { + "name": "value_1", + "nativeSrc": "7982:7:55", + "nodeType": "YulIdentifier", + "src": "7982:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7972:6:55", + "nodeType": "YulIdentifier", + "src": "7972:6:55" + } + ] + }, + { + "nativeSrc": "7998:47:55", + "nodeType": "YulVariableDeclaration", + "src": "7998:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8030:9:55", + "nodeType": "YulIdentifier", + "src": "8030:9:55" + }, + { + "kind": "number", + "nativeSrc": "8041:2:55", + "nodeType": "YulLiteral", + "src": "8041:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8026:3:55", + "nodeType": "YulIdentifier", + "src": "8026:3:55" + }, + "nativeSrc": "8026:18:55", + "nodeType": "YulFunctionCall", + "src": "8026:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8013:12:55", + "nodeType": "YulIdentifier", + "src": "8013:12:55" + }, + "nativeSrc": "8013:32:55", + "nodeType": "YulFunctionCall", + "src": "8013:32:55" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "8002:7:55", + "nodeType": "YulTypedName", + "src": "8002:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "8079:7:55", + "nodeType": "YulIdentifier", + "src": "8079:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "8054:24:55", + "nodeType": "YulIdentifier", + "src": "8054:24:55" + }, + "nativeSrc": "8054:33:55", + "nodeType": "YulFunctionCall", + "src": "8054:33:55" + }, + "nativeSrc": "8054:33:55", + "nodeType": "YulExpressionStatement", + "src": "8054:33:55" + }, + { + "nativeSrc": "8096:17:55", + "nodeType": "YulAssignment", + "src": "8096:17:55", + "value": { + "name": "value_2", + "nativeSrc": "8106:7:55", + "nodeType": "YulIdentifier", + "src": "8106:7:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "8096:6:55", + "nodeType": "YulIdentifier", + "src": "8096:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_address", + "nativeSrc": "7590:529:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7644:9:55", + "nodeType": "YulTypedName", + "src": "7644:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7655:7:55", + "nodeType": "YulTypedName", + "src": "7655:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7667:6:55", + "nodeType": "YulTypedName", + "src": "7667:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7675:6:55", + "nodeType": "YulTypedName", + "src": "7675:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7683:6:55", + "nodeType": "YulTypedName", + "src": "7683:6:55", + "type": "" + } + ], + "src": "7590:529:55" + }, + { + "body": { + "nativeSrc": "8211:301:55", + "nodeType": "YulBlock", + "src": "8211:301:55", + "statements": [ + { + "body": { + "nativeSrc": "8257:16:55", + "nodeType": "YulBlock", + "src": "8257:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8266:1:55", + "nodeType": "YulLiteral", + "src": "8266:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8269:1:55", + "nodeType": "YulLiteral", + "src": "8269:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8259:6:55", + "nodeType": "YulIdentifier", + "src": "8259:6:55" + }, + "nativeSrc": "8259:12:55", + "nodeType": "YulFunctionCall", + "src": "8259:12:55" + }, + "nativeSrc": "8259:12:55", + "nodeType": "YulExpressionStatement", + "src": "8259:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8232:7:55", + "nodeType": "YulIdentifier", + "src": "8232:7:55" + }, + { + "name": "headStart", + "nativeSrc": "8241:9:55", + "nodeType": "YulIdentifier", + "src": "8241:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8228:3:55", + "nodeType": "YulIdentifier", + "src": "8228:3:55" + }, + "nativeSrc": "8228:23:55", + "nodeType": "YulFunctionCall", + "src": "8228:23:55" + }, + { + "kind": "number", + "nativeSrc": "8253:2:55", + "nodeType": "YulLiteral", + "src": "8253:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8224:3:55", + "nodeType": "YulIdentifier", + "src": "8224:3:55" + }, + "nativeSrc": "8224:32:55", + "nodeType": "YulFunctionCall", + "src": "8224:32:55" + }, + "nativeSrc": "8221:52:55", + "nodeType": "YulIf", + "src": "8221:52:55" + }, + { + "nativeSrc": "8282:36:55", + "nodeType": "YulVariableDeclaration", + "src": "8282:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8308:9:55", + "nodeType": "YulIdentifier", + "src": "8308:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8295:12:55", + "nodeType": "YulIdentifier", + "src": "8295:12:55" + }, + "nativeSrc": "8295:23:55", + "nodeType": "YulFunctionCall", + "src": "8295:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "8286:5:55", + "nodeType": "YulTypedName", + "src": "8286:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "8352:5:55", + "nodeType": "YulIdentifier", + "src": "8352:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "8327:24:55", + "nodeType": "YulIdentifier", + "src": "8327:24:55" + }, + "nativeSrc": "8327:31:55", + "nodeType": "YulFunctionCall", + "src": "8327:31:55" + }, + "nativeSrc": "8327:31:55", + "nodeType": "YulExpressionStatement", + "src": "8327:31:55" + }, + { + "nativeSrc": "8367:15:55", + "nodeType": "YulAssignment", + "src": "8367:15:55", + "value": { + "name": "value", + "nativeSrc": "8377:5:55", + "nodeType": "YulIdentifier", + "src": "8377:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8367:6:55", + "nodeType": "YulIdentifier", + "src": "8367:6:55" + } + ] + }, + { + "nativeSrc": "8391:47:55", + "nodeType": "YulVariableDeclaration", + "src": "8391:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8423:9:55", + "nodeType": "YulIdentifier", + "src": "8423:9:55" + }, + { + "kind": "number", + "nativeSrc": "8434:2:55", + "nodeType": "YulLiteral", + "src": "8434:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8419:3:55", + "nodeType": "YulIdentifier", + "src": "8419:3:55" + }, + "nativeSrc": "8419:18:55", + "nodeType": "YulFunctionCall", + "src": "8419:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8406:12:55", + "nodeType": "YulIdentifier", + "src": "8406:12:55" + }, + "nativeSrc": "8406:32:55", + "nodeType": "YulFunctionCall", + "src": "8406:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "8395:7:55", + "nodeType": "YulTypedName", + "src": "8395:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "8472:7:55", + "nodeType": "YulIdentifier", + "src": "8472:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "8447:24:55", + "nodeType": "YulIdentifier", + "src": "8447:24:55" + }, + "nativeSrc": "8447:33:55", + "nodeType": "YulFunctionCall", + "src": "8447:33:55" + }, + "nativeSrc": "8447:33:55", + "nodeType": "YulExpressionStatement", + "src": "8447:33:55" + }, + { + "nativeSrc": "8489:17:55", + "nodeType": "YulAssignment", + "src": "8489:17:55", + "value": { + "name": "value_1", + "nativeSrc": "8499:7:55", + "nodeType": "YulIdentifier", + "src": "8499:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "8489:6:55", + "nodeType": "YulIdentifier", + "src": "8489:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "8124:388:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8169:9:55", + "nodeType": "YulTypedName", + "src": "8169:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8180:7:55", + "nodeType": "YulTypedName", + "src": "8180:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8192:6:55", + "nodeType": "YulTypedName", + "src": "8192:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8200:6:55", + "nodeType": "YulTypedName", + "src": "8200:6:55", + "type": "" + } + ], + "src": "8124:388:55" + }, + { + "body": { + "nativeSrc": "8572:325:55", + "nodeType": "YulBlock", + "src": "8572:325:55", + "statements": [ + { + "nativeSrc": "8582:22:55", + "nodeType": "YulAssignment", + "src": "8582:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8596:1:55", + "nodeType": "YulLiteral", + "src": "8596:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "8599:4:55", + "nodeType": "YulIdentifier", + "src": "8599:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8592:3:55", + "nodeType": "YulIdentifier", + "src": "8592:3:55" + }, + "nativeSrc": "8592:12:55", + "nodeType": "YulFunctionCall", + "src": "8592:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8582:6:55", + "nodeType": "YulIdentifier", + "src": "8582:6:55" + } + ] + }, + { + "nativeSrc": "8613:38:55", + "nodeType": "YulVariableDeclaration", + "src": "8613:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8643:4:55", + "nodeType": "YulIdentifier", + "src": "8643:4:55" + }, + { + "kind": "number", + "nativeSrc": "8649:1:55", + "nodeType": "YulLiteral", + "src": "8649:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8639:3:55", + "nodeType": "YulIdentifier", + "src": "8639:3:55" + }, + "nativeSrc": "8639:12:55", + "nodeType": "YulFunctionCall", + "src": "8639:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8617:18:55", + "nodeType": "YulTypedName", + "src": "8617:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8690:31:55", + "nodeType": "YulBlock", + "src": "8690:31:55", + "statements": [ + { + "nativeSrc": "8692:27:55", + "nodeType": "YulAssignment", + "src": "8692:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "8706:6:55", + "nodeType": "YulIdentifier", + "src": "8706:6:55" + }, + { + "kind": "number", + "nativeSrc": "8714:4:55", + "nodeType": "YulLiteral", + "src": "8714:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8702:3:55", + "nodeType": "YulIdentifier", + "src": "8702:3:55" + }, + "nativeSrc": "8702:17:55", + "nodeType": "YulFunctionCall", + "src": "8702:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8692:6:55", + "nodeType": "YulIdentifier", + "src": "8692:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8670:18:55", + "nodeType": "YulIdentifier", + "src": "8670:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8663:6:55", + "nodeType": "YulIdentifier", + "src": "8663:6:55" + }, + "nativeSrc": "8663:26:55", + "nodeType": "YulFunctionCall", + "src": "8663:26:55" + }, + "nativeSrc": "8660:61:55", + "nodeType": "YulIf", + "src": "8660:61:55" + }, + { + "body": { + "nativeSrc": "8780:111:55", + "nodeType": "YulBlock", + "src": "8780:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8801:1:55", + "nodeType": "YulLiteral", + "src": "8801:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8808:3:55", + "nodeType": "YulLiteral", + "src": "8808:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8813:10:55", + "nodeType": "YulLiteral", + "src": "8813:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8804:3:55", + "nodeType": "YulIdentifier", + "src": "8804:3:55" + }, + "nativeSrc": "8804:20:55", + "nodeType": "YulFunctionCall", + "src": "8804:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8794:6:55", + "nodeType": "YulIdentifier", + "src": "8794:6:55" + }, + "nativeSrc": "8794:31:55", + "nodeType": "YulFunctionCall", + "src": "8794:31:55" + }, + "nativeSrc": "8794:31:55", + "nodeType": "YulExpressionStatement", + "src": "8794:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8845:1:55", + "nodeType": "YulLiteral", + "src": "8845:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8848:4:55", + "nodeType": "YulLiteral", + "src": "8848:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8838:6:55", + "nodeType": "YulIdentifier", + "src": "8838:6:55" + }, + "nativeSrc": "8838:15:55", + "nodeType": "YulFunctionCall", + "src": "8838:15:55" + }, + "nativeSrc": "8838:15:55", + "nodeType": "YulExpressionStatement", + "src": "8838:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8873:1:55", + "nodeType": "YulLiteral", + "src": "8873:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8876:4:55", + "nodeType": "YulLiteral", + "src": "8876:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8866:6:55", + "nodeType": "YulIdentifier", + "src": "8866:6:55" + }, + "nativeSrc": "8866:15:55", + "nodeType": "YulFunctionCall", + "src": "8866:15:55" + }, + "nativeSrc": "8866:15:55", + "nodeType": "YulExpressionStatement", + "src": "8866:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8736:18:55", + "nodeType": "YulIdentifier", + "src": "8736:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "8759:6:55", + "nodeType": "YulIdentifier", + "src": "8759:6:55" + }, + { + "kind": "number", + "nativeSrc": "8767:2:55", + "nodeType": "YulLiteral", + "src": "8767:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8756:2:55", + "nodeType": "YulIdentifier", + "src": "8756:2:55" + }, + "nativeSrc": "8756:14:55", + "nodeType": "YulFunctionCall", + "src": "8756:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8733:2:55", + "nodeType": "YulIdentifier", + "src": "8733:2:55" + }, + "nativeSrc": "8733:38:55", + "nodeType": "YulFunctionCall", + "src": "8733:38:55" + }, + "nativeSrc": "8730:161:55", + "nodeType": "YulIf", + "src": "8730:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "8517:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "8552:4:55", + "nodeType": "YulTypedName", + "src": "8552:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "8561:6:55", + "nodeType": "YulTypedName", + "src": "8561:6:55", + "type": "" + } + ], + "src": "8517:380:55" + }, + { + "body": { + "nativeSrc": "8980:167:55", + "nodeType": "YulBlock", + "src": "8980:167:55", + "statements": [ + { + "body": { + "nativeSrc": "9026:16:55", + "nodeType": "YulBlock", + "src": "9026:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9035:1:55", + "nodeType": "YulLiteral", + "src": "9035:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9038:1:55", + "nodeType": "YulLiteral", + "src": "9038:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9028:6:55", + "nodeType": "YulIdentifier", + "src": "9028:6:55" + }, + "nativeSrc": "9028:12:55", + "nodeType": "YulFunctionCall", + "src": "9028:12:55" + }, + "nativeSrc": "9028:12:55", + "nodeType": "YulExpressionStatement", + "src": "9028:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9001:7:55", + "nodeType": "YulIdentifier", + "src": "9001:7:55" + }, + { + "name": "headStart", + "nativeSrc": "9010:9:55", + "nodeType": "YulIdentifier", + "src": "9010:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8997:3:55", + "nodeType": "YulIdentifier", + "src": "8997:3:55" + }, + "nativeSrc": "8997:23:55", + "nodeType": "YulFunctionCall", + "src": "8997:23:55" + }, + { + "kind": "number", + "nativeSrc": "9022:2:55", + "nodeType": "YulLiteral", + "src": "9022:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8993:3:55", + "nodeType": "YulIdentifier", + "src": "8993:3:55" + }, + "nativeSrc": "8993:32:55", + "nodeType": "YulFunctionCall", + "src": "8993:32:55" + }, + "nativeSrc": "8990:52:55", + "nodeType": "YulIf", + "src": "8990:52:55" + }, + { + "nativeSrc": "9051:29:55", + "nodeType": "YulVariableDeclaration", + "src": "9051:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9070:9:55", + "nodeType": "YulIdentifier", + "src": "9070:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9064:5:55", + "nodeType": "YulIdentifier", + "src": "9064:5:55" + }, + "nativeSrc": "9064:16:55", + "nodeType": "YulFunctionCall", + "src": "9064:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9055:5:55", + "nodeType": "YulTypedName", + "src": "9055:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9111:5:55", + "nodeType": "YulIdentifier", + "src": "9111:5:55" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "9089:21:55", + "nodeType": "YulIdentifier", + "src": "9089:21:55" + }, + "nativeSrc": "9089:28:55", + "nodeType": "YulFunctionCall", + "src": "9089:28:55" + }, + "nativeSrc": "9089:28:55", + "nodeType": "YulExpressionStatement", + "src": "9089:28:55" + }, + { + "nativeSrc": "9126:15:55", + "nodeType": "YulAssignment", + "src": "9126:15:55", + "value": { + "name": "value", + "nativeSrc": "9136:5:55", + "nodeType": "YulIdentifier", + "src": "9136:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9126:6:55", + "nodeType": "YulIdentifier", + "src": "9126:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "8902:245:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8946:9:55", + "nodeType": "YulTypedName", + "src": "8946:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8957:7:55", + "nodeType": "YulTypedName", + "src": "8957:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8969:6:55", + "nodeType": "YulTypedName", + "src": "8969:6:55", + "type": "" + } + ], + "src": "8902:245:55" + }, + { + "body": { + "nativeSrc": "9281:145:55", + "nodeType": "YulBlock", + "src": "9281:145:55", + "statements": [ + { + "nativeSrc": "9291:26:55", + "nodeType": "YulAssignment", + "src": "9291:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9303:9:55", + "nodeType": "YulIdentifier", + "src": "9303:9:55" + }, + { + "kind": "number", + "nativeSrc": "9314:2:55", + "nodeType": "YulLiteral", + "src": "9314:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9299:3:55", + "nodeType": "YulIdentifier", + "src": "9299:3:55" + }, + "nativeSrc": "9299:18:55", + "nodeType": "YulFunctionCall", + "src": "9299:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "9291:4:55", + "nodeType": "YulIdentifier", + "src": "9291:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9333:9:55", + "nodeType": "YulIdentifier", + "src": "9333:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "9348:6:55", + "nodeType": "YulIdentifier", + "src": "9348:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9364:3:55", + "nodeType": "YulLiteral", + "src": "9364:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "9369:1:55", + "nodeType": "YulLiteral", + "src": "9369:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9360:3:55", + "nodeType": "YulIdentifier", + "src": "9360:3:55" + }, + "nativeSrc": "9360:11:55", + "nodeType": "YulFunctionCall", + "src": "9360:11:55" + }, + { + "kind": "number", + "nativeSrc": "9373:1:55", + "nodeType": "YulLiteral", + "src": "9373:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9356:3:55", + "nodeType": "YulIdentifier", + "src": "9356:3:55" + }, + "nativeSrc": "9356:19:55", + "nodeType": "YulFunctionCall", + "src": "9356:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9344:3:55", + "nodeType": "YulIdentifier", + "src": "9344:3:55" + }, + "nativeSrc": "9344:32:55", + "nodeType": "YulFunctionCall", + "src": "9344:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9326:6:55", + "nodeType": "YulIdentifier", + "src": "9326:6:55" + }, + "nativeSrc": "9326:51:55", + "nodeType": "YulFunctionCall", + "src": "9326:51:55" + }, + "nativeSrc": "9326:51:55", + "nodeType": "YulExpressionStatement", + "src": "9326:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9397:9:55", + "nodeType": "YulIdentifier", + "src": "9397:9:55" + }, + { + "kind": "number", + "nativeSrc": "9408:2:55", + "nodeType": "YulLiteral", + "src": "9408:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9393:3:55", + "nodeType": "YulIdentifier", + "src": "9393:3:55" + }, + "nativeSrc": "9393:18:55", + "nodeType": "YulFunctionCall", + "src": "9393:18:55" + }, + { + "name": "value1", + "nativeSrc": "9413:6:55", + "nodeType": "YulIdentifier", + "src": "9413:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9386:6:55", + "nodeType": "YulIdentifier", + "src": "9386:6:55" + }, + "nativeSrc": "9386:34:55", + "nodeType": "YulFunctionCall", + "src": "9386:34:55" + }, + "nativeSrc": "9386:34:55", + "nodeType": "YulExpressionStatement", + "src": "9386:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "9152:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9242:9:55", + "nodeType": "YulTypedName", + "src": "9242:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9253:6:55", + "nodeType": "YulTypedName", + "src": "9253:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "9261:6:55", + "nodeType": "YulTypedName", + "src": "9261:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "9272:4:55", + "nodeType": "YulTypedName", + "src": "9272:4:55", + "type": "" + } + ], + "src": "9152:274:55" + }, + { + "body": { + "nativeSrc": "9463:95:55", + "nodeType": "YulBlock", + "src": "9463:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9480:1:55", + "nodeType": "YulLiteral", + "src": "9480:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9487:3:55", + "nodeType": "YulLiteral", + "src": "9487:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "9492:10:55", + "nodeType": "YulLiteral", + "src": "9492:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9483:3:55", + "nodeType": "YulIdentifier", + "src": "9483:3:55" + }, + "nativeSrc": "9483:20:55", + "nodeType": "YulFunctionCall", + "src": "9483:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9473:6:55", + "nodeType": "YulIdentifier", + "src": "9473:6:55" + }, + "nativeSrc": "9473:31:55", + "nodeType": "YulFunctionCall", + "src": "9473:31:55" + }, + "nativeSrc": "9473:31:55", + "nodeType": "YulExpressionStatement", + "src": "9473:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9520:1:55", + "nodeType": "YulLiteral", + "src": "9520:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "9523:4:55", + "nodeType": "YulLiteral", + "src": "9523:4:55", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9513:6:55", + "nodeType": "YulIdentifier", + "src": "9513:6:55" + }, + "nativeSrc": "9513:15:55", + "nodeType": "YulFunctionCall", + "src": "9513:15:55" + }, + "nativeSrc": "9513:15:55", + "nodeType": "YulExpressionStatement", + "src": "9513:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9544:1:55", + "nodeType": "YulLiteral", + "src": "9544:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9547:4:55", + "nodeType": "YulLiteral", + "src": "9547:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9537:6:55", + "nodeType": "YulIdentifier", + "src": "9537:6:55" + }, + "nativeSrc": "9537:15:55", + "nodeType": "YulFunctionCall", + "src": "9537:15:55" + }, + "nativeSrc": "9537:15:55", + "nodeType": "YulExpressionStatement", + "src": "9537:15:55" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "9431:127:55", + "nodeType": "YulFunctionDefinition", + "src": "9431:127:55" + }, + { + "body": { + "nativeSrc": "9595:95:55", + "nodeType": "YulBlock", + "src": "9595:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9612:1:55", + "nodeType": "YulLiteral", + "src": "9612:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9619:3:55", + "nodeType": "YulLiteral", + "src": "9619:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "9624:10:55", + "nodeType": "YulLiteral", + "src": "9624:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9615:3:55", + "nodeType": "YulIdentifier", + "src": "9615:3:55" + }, + "nativeSrc": "9615:20:55", + "nodeType": "YulFunctionCall", + "src": "9615:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9605:6:55", + "nodeType": "YulIdentifier", + "src": "9605:6:55" + }, + "nativeSrc": "9605:31:55", + "nodeType": "YulFunctionCall", + "src": "9605:31:55" + }, + "nativeSrc": "9605:31:55", + "nodeType": "YulExpressionStatement", + "src": "9605:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9652:1:55", + "nodeType": "YulLiteral", + "src": "9652:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "9655:4:55", + "nodeType": "YulLiteral", + "src": "9655:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9645:6:55", + "nodeType": "YulIdentifier", + "src": "9645:6:55" + }, + "nativeSrc": "9645:15:55", + "nodeType": "YulFunctionCall", + "src": "9645:15:55" + }, + "nativeSrc": "9645:15:55", + "nodeType": "YulExpressionStatement", + "src": "9645:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9676:1:55", + "nodeType": "YulLiteral", + "src": "9676:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9679:4:55", + "nodeType": "YulLiteral", + "src": "9679:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9669:6:55", + "nodeType": "YulIdentifier", + "src": "9669:6:55" + }, + "nativeSrc": "9669:15:55", + "nodeType": "YulFunctionCall", + "src": "9669:15:55" + }, + "nativeSrc": "9669:15:55", + "nodeType": "YulExpressionStatement", + "src": "9669:15:55" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "9563:127:55", + "nodeType": "YulFunctionDefinition", + "src": "9563:127:55" + }, + { + "body": { + "nativeSrc": "9743:77:55", + "nodeType": "YulBlock", + "src": "9743:77:55", + "statements": [ + { + "nativeSrc": "9753:16:55", + "nodeType": "YulAssignment", + "src": "9753:16:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "9764:1:55", + "nodeType": "YulIdentifier", + "src": "9764:1:55" + }, + { + "name": "y", + "nativeSrc": "9767:1:55", + "nodeType": "YulIdentifier", + "src": "9767:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9760:3:55", + "nodeType": "YulIdentifier", + "src": "9760:3:55" + }, + "nativeSrc": "9760:9:55", + "nodeType": "YulFunctionCall", + "src": "9760:9:55" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "9753:3:55", + "nodeType": "YulIdentifier", + "src": "9753:3:55" + } + ] + }, + { + "body": { + "nativeSrc": "9792:22:55", + "nodeType": "YulBlock", + "src": "9792:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "9794:16:55", + "nodeType": "YulIdentifier", + "src": "9794:16:55" + }, + "nativeSrc": "9794:18:55", + "nodeType": "YulFunctionCall", + "src": "9794:18:55" + }, + "nativeSrc": "9794:18:55", + "nodeType": "YulExpressionStatement", + "src": "9794:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "9784:1:55", + "nodeType": "YulIdentifier", + "src": "9784:1:55" + }, + { + "name": "sum", + "nativeSrc": "9787:3:55", + "nodeType": "YulIdentifier", + "src": "9787:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9781:2:55", + "nodeType": "YulIdentifier", + "src": "9781:2:55" + }, + "nativeSrc": "9781:10:55", + "nodeType": "YulFunctionCall", + "src": "9781:10:55" + }, + "nativeSrc": "9778:36:55", + "nodeType": "YulIf", + "src": "9778:36:55" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "9695:125:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "9726:1:55", + "nodeType": "YulTypedName", + "src": "9726:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "9729:1:55", + "nodeType": "YulTypedName", + "src": "9729:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "9735:3:55", + "nodeType": "YulTypedName", + "src": "9735:3:55", + "type": "" + } + ], + "src": "9695:125:55" + }, + { + "body": { + "nativeSrc": "9954:119:55", + "nodeType": "YulBlock", + "src": "9954:119:55", + "statements": [ + { + "nativeSrc": "9964:26:55", + "nodeType": "YulAssignment", + "src": "9964:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9976:9:55", + "nodeType": "YulIdentifier", + "src": "9976:9:55" + }, + { + "kind": "number", + "nativeSrc": "9987:2:55", + "nodeType": "YulLiteral", + "src": "9987:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9972:3:55", + "nodeType": "YulIdentifier", + "src": "9972:3:55" + }, + "nativeSrc": "9972:18:55", + "nodeType": "YulFunctionCall", + "src": "9972:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "9964:4:55", + "nodeType": "YulIdentifier", + "src": "9964:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10006:9:55", + "nodeType": "YulIdentifier", + "src": "10006:9:55" + }, + { + "name": "value0", + "nativeSrc": "10017:6:55", + "nodeType": "YulIdentifier", + "src": "10017:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9999:6:55", + "nodeType": "YulIdentifier", + "src": "9999:6:55" + }, + "nativeSrc": "9999:25:55", + "nodeType": "YulFunctionCall", + "src": "9999:25:55" + }, + "nativeSrc": "9999:25:55", + "nodeType": "YulExpressionStatement", + "src": "9999:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10044:9:55", + "nodeType": "YulIdentifier", + "src": "10044:9:55" + }, + { + "kind": "number", + "nativeSrc": "10055:2:55", + "nodeType": "YulLiteral", + "src": "10055:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10040:3:55", + "nodeType": "YulIdentifier", + "src": "10040:3:55" + }, + "nativeSrc": "10040:18:55", + "nodeType": "YulFunctionCall", + "src": "10040:18:55" + }, + { + "name": "value1", + "nativeSrc": "10060:6:55", + "nodeType": "YulIdentifier", + "src": "10060:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10033:6:55", + "nodeType": "YulIdentifier", + "src": "10033:6:55" + }, + "nativeSrc": "10033:34:55", + "nodeType": "YulFunctionCall", + "src": "10033:34:55" + }, + "nativeSrc": "10033:34:55", + "nodeType": "YulExpressionStatement", + "src": "10033:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "9825:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9915:9:55", + "nodeType": "YulTypedName", + "src": "9915:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9926:6:55", + "nodeType": "YulTypedName", + "src": "9926:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "9934:6:55", + "nodeType": "YulTypedName", + "src": "9934:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "9945:4:55", + "nodeType": "YulTypedName", + "src": "9945:4:55", + "type": "" + } + ], + "src": "9825:248:55" + }, + { + "body": { + "nativeSrc": "10125:88:55", + "nodeType": "YulBlock", + "src": "10125:88:55", + "statements": [ + { + "body": { + "nativeSrc": "10156:22:55", + "nodeType": "YulBlock", + "src": "10156:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "10158:16:55", + "nodeType": "YulIdentifier", + "src": "10158:16:55" + }, + "nativeSrc": "10158:18:55", + "nodeType": "YulFunctionCall", + "src": "10158:18:55" + }, + "nativeSrc": "10158:18:55", + "nodeType": "YulExpressionStatement", + "src": "10158:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "10141:5:55", + "nodeType": "YulIdentifier", + "src": "10141:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10152:1:55", + "nodeType": "YulLiteral", + "src": "10152:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10148:3:55", + "nodeType": "YulIdentifier", + "src": "10148:3:55" + }, + "nativeSrc": "10148:6:55", + "nodeType": "YulFunctionCall", + "src": "10148:6:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10138:2:55", + "nodeType": "YulIdentifier", + "src": "10138:2:55" + }, + "nativeSrc": "10138:17:55", + "nodeType": "YulFunctionCall", + "src": "10138:17:55" + }, + "nativeSrc": "10135:43:55", + "nodeType": "YulIf", + "src": "10135:43:55" + }, + { + "nativeSrc": "10187:20:55", + "nodeType": "YulAssignment", + "src": "10187:20:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "10198:5:55", + "nodeType": "YulIdentifier", + "src": "10198:5:55" + }, + { + "kind": "number", + "nativeSrc": "10205:1:55", + "nodeType": "YulLiteral", + "src": "10205:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10194:3:55", + "nodeType": "YulIdentifier", + "src": "10194:3:55" + }, + "nativeSrc": "10194:13:55", + "nodeType": "YulFunctionCall", + "src": "10194:13:55" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "10187:3:55", + "nodeType": "YulIdentifier", + "src": "10187:3:55" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nativeSrc": "10078:135:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "10107:5:55", + "nodeType": "YulTypedName", + "src": "10107:5:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "10117:3:55", + "nodeType": "YulTypedName", + "src": "10117:3:55", + "type": "" + } + ], + "src": "10078:135:55" + }, + { + "body": { + "nativeSrc": "10390:188:55", + "nodeType": "YulBlock", + "src": "10390:188:55", + "statements": [ + { + "nativeSrc": "10400:26:55", + "nodeType": "YulAssignment", + "src": "10400:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10412:9:55", + "nodeType": "YulIdentifier", + "src": "10412:9:55" + }, + { + "kind": "number", + "nativeSrc": "10423:2:55", + "nodeType": "YulLiteral", + "src": "10423:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10408:3:55", + "nodeType": "YulIdentifier", + "src": "10408:3:55" + }, + "nativeSrc": "10408:18:55", + "nodeType": "YulFunctionCall", + "src": "10408:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10400:4:55", + "nodeType": "YulIdentifier", + "src": "10400:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10442:9:55", + "nodeType": "YulIdentifier", + "src": "10442:9:55" + }, + { + "name": "value0", + "nativeSrc": "10453:6:55", + "nodeType": "YulIdentifier", + "src": "10453:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10435:6:55", + "nodeType": "YulIdentifier", + "src": "10435:6:55" + }, + "nativeSrc": "10435:25:55", + "nodeType": "YulFunctionCall", + "src": "10435:25:55" + }, + "nativeSrc": "10435:25:55", + "nodeType": "YulExpressionStatement", + "src": "10435:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10480:9:55", + "nodeType": "YulIdentifier", + "src": "10480:9:55" + }, + { + "kind": "number", + "nativeSrc": "10491:2:55", + "nodeType": "YulLiteral", + "src": "10491:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10476:3:55", + "nodeType": "YulIdentifier", + "src": "10476:3:55" + }, + "nativeSrc": "10476:18:55", + "nodeType": "YulFunctionCall", + "src": "10476:18:55" + }, + { + "name": "value1", + "nativeSrc": "10496:6:55", + "nodeType": "YulIdentifier", + "src": "10496:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10469:6:55", + "nodeType": "YulIdentifier", + "src": "10469:6:55" + }, + "nativeSrc": "10469:34:55", + "nodeType": "YulFunctionCall", + "src": "10469:34:55" + }, + "nativeSrc": "10469:34:55", + "nodeType": "YulExpressionStatement", + "src": "10469:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10523:9:55", + "nodeType": "YulIdentifier", + "src": "10523:9:55" + }, + { + "kind": "number", + "nativeSrc": "10534:2:55", + "nodeType": "YulLiteral", + "src": "10534:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10519:3:55", + "nodeType": "YulIdentifier", + "src": "10519:3:55" + }, + "nativeSrc": "10519:18:55", + "nodeType": "YulFunctionCall", + "src": "10519:18:55" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "10543:6:55", + "nodeType": "YulIdentifier", + "src": "10543:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10559:3:55", + "nodeType": "YulLiteral", + "src": "10559:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "10564:1:55", + "nodeType": "YulLiteral", + "src": "10564:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10555:3:55", + "nodeType": "YulIdentifier", + "src": "10555:3:55" + }, + "nativeSrc": "10555:11:55", + "nodeType": "YulFunctionCall", + "src": "10555:11:55" + }, + { + "kind": "number", + "nativeSrc": "10568:1:55", + "nodeType": "YulLiteral", + "src": "10568:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10551:3:55", + "nodeType": "YulIdentifier", + "src": "10551:3:55" + }, + "nativeSrc": "10551:19:55", + "nodeType": "YulFunctionCall", + "src": "10551:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10539:3:55", + "nodeType": "YulIdentifier", + "src": "10539:3:55" + }, + "nativeSrc": "10539:32:55", + "nodeType": "YulFunctionCall", + "src": "10539:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10512:6:55", + "nodeType": "YulIdentifier", + "src": "10512:6:55" + }, + "nativeSrc": "10512:60:55", + "nodeType": "YulFunctionCall", + "src": "10512:60:55" + }, + "nativeSrc": "10512:60:55", + "nodeType": "YulExpressionStatement", + "src": "10512:60:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "10218:360:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10343:9:55", + "nodeType": "YulTypedName", + "src": "10343:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "10354:6:55", + "nodeType": "YulTypedName", + "src": "10354:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10362:6:55", + "nodeType": "YulTypedName", + "src": "10362:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10370:6:55", + "nodeType": "YulTypedName", + "src": "10370:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10381:4:55", + "nodeType": "YulTypedName", + "src": "10381:4:55", + "type": "" + } + ], + "src": "10218:360:55" + }, + { + "body": { + "nativeSrc": "10712:175:55", + "nodeType": "YulBlock", + "src": "10712:175:55", + "statements": [ + { + "nativeSrc": "10722:26:55", + "nodeType": "YulAssignment", + "src": "10722:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10734:9:55", + "nodeType": "YulIdentifier", + "src": "10734:9:55" + }, + { + "kind": "number", + "nativeSrc": "10745:2:55", + "nodeType": "YulLiteral", + "src": "10745:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10730:3:55", + "nodeType": "YulIdentifier", + "src": "10730:3:55" + }, + "nativeSrc": "10730:18:55", + "nodeType": "YulFunctionCall", + "src": "10730:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10722:4:55", + "nodeType": "YulIdentifier", + "src": "10722:4:55" + } + ] + }, + { + "nativeSrc": "10757:29:55", + "nodeType": "YulVariableDeclaration", + "src": "10757:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10775:3:55", + "nodeType": "YulLiteral", + "src": "10775:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "10780:1:55", + "nodeType": "YulLiteral", + "src": "10780:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10771:3:55", + "nodeType": "YulIdentifier", + "src": "10771:3:55" + }, + "nativeSrc": "10771:11:55", + "nodeType": "YulFunctionCall", + "src": "10771:11:55" + }, + { + "kind": "number", + "nativeSrc": "10784:1:55", + "nodeType": "YulLiteral", + "src": "10784:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10767:3:55", + "nodeType": "YulIdentifier", + "src": "10767:3:55" + }, + "nativeSrc": "10767:19:55", + "nodeType": "YulFunctionCall", + "src": "10767:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "10761:2:55", + "nodeType": "YulTypedName", + "src": "10761:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10802:9:55", + "nodeType": "YulIdentifier", + "src": "10802:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "10817:6:55", + "nodeType": "YulIdentifier", + "src": "10817:6:55" + }, + { + "name": "_1", + "nativeSrc": "10825:2:55", + "nodeType": "YulIdentifier", + "src": "10825:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10813:3:55", + "nodeType": "YulIdentifier", + "src": "10813:3:55" + }, + "nativeSrc": "10813:15:55", + "nodeType": "YulFunctionCall", + "src": "10813:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10795:6:55", + "nodeType": "YulIdentifier", + "src": "10795:6:55" + }, + "nativeSrc": "10795:34:55", + "nodeType": "YulFunctionCall", + "src": "10795:34:55" + }, + "nativeSrc": "10795:34:55", + "nodeType": "YulExpressionStatement", + "src": "10795:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10849:9:55", + "nodeType": "YulIdentifier", + "src": "10849:9:55" + }, + { + "kind": "number", + "nativeSrc": "10860:2:55", + "nodeType": "YulLiteral", + "src": "10860:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10845:3:55", + "nodeType": "YulIdentifier", + "src": "10845:3:55" + }, + "nativeSrc": "10845:18:55", + "nodeType": "YulFunctionCall", + "src": "10845:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "10869:6:55", + "nodeType": "YulIdentifier", + "src": "10869:6:55" + }, + { + "name": "_1", + "nativeSrc": "10877:2:55", + "nodeType": "YulIdentifier", + "src": "10877:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10865:3:55", + "nodeType": "YulIdentifier", + "src": "10865:3:55" + }, + "nativeSrc": "10865:15:55", + "nodeType": "YulFunctionCall", + "src": "10865:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10838:6:55", + "nodeType": "YulIdentifier", + "src": "10838:6:55" + }, + "nativeSrc": "10838:43:55", + "nodeType": "YulFunctionCall", + "src": "10838:43:55" + }, + "nativeSrc": "10838:43:55", + "nodeType": "YulExpressionStatement", + "src": "10838:43:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nativeSrc": "10583:304:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10673:9:55", + "nodeType": "YulTypedName", + "src": "10673:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10684:6:55", + "nodeType": "YulTypedName", + "src": "10684:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10692:6:55", + "nodeType": "YulTypedName", + "src": "10692:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10703:4:55", + "nodeType": "YulTypedName", + "src": "10703:4:55", + "type": "" + } + ], + "src": "10583:304:55" + }, + { + "body": { + "nativeSrc": "11021:145:55", + "nodeType": "YulBlock", + "src": "11021:145:55", + "statements": [ + { + "nativeSrc": "11031:26:55", + "nodeType": "YulAssignment", + "src": "11031:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11043:9:55", + "nodeType": "YulIdentifier", + "src": "11043:9:55" + }, + { + "kind": "number", + "nativeSrc": "11054:2:55", + "nodeType": "YulLiteral", + "src": "11054:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11039:3:55", + "nodeType": "YulIdentifier", + "src": "11039:3:55" + }, + "nativeSrc": "11039:18:55", + "nodeType": "YulFunctionCall", + "src": "11039:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11031:4:55", + "nodeType": "YulIdentifier", + "src": "11031:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11073:9:55", + "nodeType": "YulIdentifier", + "src": "11073:9:55" + }, + { + "name": "value0", + "nativeSrc": "11084:6:55", + "nodeType": "YulIdentifier", + "src": "11084:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11066:6:55", + "nodeType": "YulIdentifier", + "src": "11066:6:55" + }, + "nativeSrc": "11066:25:55", + "nodeType": "YulFunctionCall", + "src": "11066:25:55" + }, + "nativeSrc": "11066:25:55", + "nodeType": "YulExpressionStatement", + "src": "11066:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11111:9:55", + "nodeType": "YulIdentifier", + "src": "11111:9:55" + }, + { + "kind": "number", + "nativeSrc": "11122:2:55", + "nodeType": "YulLiteral", + "src": "11122:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11107:3:55", + "nodeType": "YulIdentifier", + "src": "11107:3:55" + }, + "nativeSrc": "11107:18:55", + "nodeType": "YulFunctionCall", + "src": "11107:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "11131:6:55", + "nodeType": "YulIdentifier", + "src": "11131:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11147:3:55", + "nodeType": "YulLiteral", + "src": "11147:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11152:1:55", + "nodeType": "YulLiteral", + "src": "11152:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11143:3:55", + "nodeType": "YulIdentifier", + "src": "11143:3:55" + }, + "nativeSrc": "11143:11:55", + "nodeType": "YulFunctionCall", + "src": "11143:11:55" + }, + { + "kind": "number", + "nativeSrc": "11156:1:55", + "nodeType": "YulLiteral", + "src": "11156:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11139:3:55", + "nodeType": "YulIdentifier", + "src": "11139:3:55" + }, + "nativeSrc": "11139:19:55", + "nodeType": "YulFunctionCall", + "src": "11139:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11127:3:55", + "nodeType": "YulIdentifier", + "src": "11127:3:55" + }, + "nativeSrc": "11127:32:55", + "nodeType": "YulFunctionCall", + "src": "11127:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11100:6:55", + "nodeType": "YulIdentifier", + "src": "11100:6:55" + }, + "nativeSrc": "11100:60:55", + "nodeType": "YulFunctionCall", + "src": "11100:60:55" + }, + "nativeSrc": "11100:60:55", + "nodeType": "YulExpressionStatement", + "src": "11100:60:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "10892:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10982:9:55", + "nodeType": "YulTypedName", + "src": "10982:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10993:6:55", + "nodeType": "YulTypedName", + "src": "10993:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11001:6:55", + "nodeType": "YulTypedName", + "src": "11001:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11012:4:55", + "nodeType": "YulTypedName", + "src": "11012:4:55", + "type": "" + } + ], + "src": "10892:274:55" + }, + { + "body": { + "nativeSrc": "11252:103:55", + "nodeType": "YulBlock", + "src": "11252:103:55", + "statements": [ + { + "body": { + "nativeSrc": "11298:16:55", + "nodeType": "YulBlock", + "src": "11298:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11307:1:55", + "nodeType": "YulLiteral", + "src": "11307:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11310:1:55", + "nodeType": "YulLiteral", + "src": "11310:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11300:6:55", + "nodeType": "YulIdentifier", + "src": "11300:6:55" + }, + "nativeSrc": "11300:12:55", + "nodeType": "YulFunctionCall", + "src": "11300:12:55" + }, + "nativeSrc": "11300:12:55", + "nodeType": "YulExpressionStatement", + "src": "11300:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11273:7:55", + "nodeType": "YulIdentifier", + "src": "11273:7:55" + }, + { + "name": "headStart", + "nativeSrc": "11282:9:55", + "nodeType": "YulIdentifier", + "src": "11282:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11269:3:55", + "nodeType": "YulIdentifier", + "src": "11269:3:55" + }, + "nativeSrc": "11269:23:55", + "nodeType": "YulFunctionCall", + "src": "11269:23:55" + }, + { + "kind": "number", + "nativeSrc": "11294:2:55", + "nodeType": "YulLiteral", + "src": "11294:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11265:3:55", + "nodeType": "YulIdentifier", + "src": "11265:3:55" + }, + "nativeSrc": "11265:32:55", + "nodeType": "YulFunctionCall", + "src": "11265:32:55" + }, + "nativeSrc": "11262:52:55", + "nodeType": "YulIf", + "src": "11262:52:55" + }, + { + "nativeSrc": "11323:26:55", + "nodeType": "YulAssignment", + "src": "11323:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11339:9:55", + "nodeType": "YulIdentifier", + "src": "11339:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11333:5:55", + "nodeType": "YulIdentifier", + "src": "11333:5:55" + }, + "nativeSrc": "11333:16:55", + "nodeType": "YulFunctionCall", + "src": "11333:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11323:6:55", + "nodeType": "YulIdentifier", + "src": "11323:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "11171:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11218:9:55", + "nodeType": "YulTypedName", + "src": "11218:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11229:7:55", + "nodeType": "YulTypedName", + "src": "11229:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11241:6:55", + "nodeType": "YulTypedName", + "src": "11241:6:55", + "type": "" + } + ], + "src": "11171:184:55" + }, + { + "body": { + "nativeSrc": "11560:262:55", + "nodeType": "YulBlock", + "src": "11560:262:55", + "statements": [ + { + "nativeSrc": "11570:27:55", + "nodeType": "YulAssignment", + "src": "11570:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11582:9:55", + "nodeType": "YulIdentifier", + "src": "11582:9:55" + }, + { + "kind": "number", + "nativeSrc": "11593:3:55", + "nodeType": "YulLiteral", + "src": "11593:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11578:3:55", + "nodeType": "YulIdentifier", + "src": "11578:3:55" + }, + "nativeSrc": "11578:19:55", + "nodeType": "YulFunctionCall", + "src": "11578:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11570:4:55", + "nodeType": "YulIdentifier", + "src": "11570:4:55" + } + ] + }, + { + "nativeSrc": "11606:29:55", + "nodeType": "YulVariableDeclaration", + "src": "11606:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11624:3:55", + "nodeType": "YulLiteral", + "src": "11624:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11629:1:55", + "nodeType": "YulLiteral", + "src": "11629:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11620:3:55", + "nodeType": "YulIdentifier", + "src": "11620:3:55" + }, + "nativeSrc": "11620:11:55", + "nodeType": "YulFunctionCall", + "src": "11620:11:55" + }, + { + "kind": "number", + "nativeSrc": "11633:1:55", + "nodeType": "YulLiteral", + "src": "11633:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11616:3:55", + "nodeType": "YulIdentifier", + "src": "11616:3:55" + }, + "nativeSrc": "11616:19:55", + "nodeType": "YulFunctionCall", + "src": "11616:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "11610:2:55", + "nodeType": "YulTypedName", + "src": "11610:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11651:9:55", + "nodeType": "YulIdentifier", + "src": "11651:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11666:6:55", + "nodeType": "YulIdentifier", + "src": "11666:6:55" + }, + { + "name": "_1", + "nativeSrc": "11674:2:55", + "nodeType": "YulIdentifier", + "src": "11674:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11662:3:55", + "nodeType": "YulIdentifier", + "src": "11662:3:55" + }, + "nativeSrc": "11662:15:55", + "nodeType": "YulFunctionCall", + "src": "11662:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11644:6:55", + "nodeType": "YulIdentifier", + "src": "11644:6:55" + }, + "nativeSrc": "11644:34:55", + "nodeType": "YulFunctionCall", + "src": "11644:34:55" + }, + "nativeSrc": "11644:34:55", + "nodeType": "YulExpressionStatement", + "src": "11644:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11698:9:55", + "nodeType": "YulIdentifier", + "src": "11698:9:55" + }, + { + "kind": "number", + "nativeSrc": "11709:2:55", + "nodeType": "YulLiteral", + "src": "11709:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11694:3:55", + "nodeType": "YulIdentifier", + "src": "11694:3:55" + }, + "nativeSrc": "11694:18:55", + "nodeType": "YulFunctionCall", + "src": "11694:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "11718:6:55", + "nodeType": "YulIdentifier", + "src": "11718:6:55" + }, + { + "name": "_1", + "nativeSrc": "11726:2:55", + "nodeType": "YulIdentifier", + "src": "11726:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11714:3:55", + "nodeType": "YulIdentifier", + "src": "11714:3:55" + }, + "nativeSrc": "11714:15:55", + "nodeType": "YulFunctionCall", + "src": "11714:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11687:6:55", + "nodeType": "YulIdentifier", + "src": "11687:6:55" + }, + "nativeSrc": "11687:43:55", + "nodeType": "YulFunctionCall", + "src": "11687:43:55" + }, + "nativeSrc": "11687:43:55", + "nodeType": "YulExpressionStatement", + "src": "11687:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11750:9:55", + "nodeType": "YulIdentifier", + "src": "11750:9:55" + }, + { + "kind": "number", + "nativeSrc": "11761:2:55", + "nodeType": "YulLiteral", + "src": "11761:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11746:3:55", + "nodeType": "YulIdentifier", + "src": "11746:3:55" + }, + "nativeSrc": "11746:18:55", + "nodeType": "YulFunctionCall", + "src": "11746:18:55" + }, + { + "name": "value2", + "nativeSrc": "11766:6:55", + "nodeType": "YulIdentifier", + "src": "11766:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11739:6:55", + "nodeType": "YulIdentifier", + "src": "11739:6:55" + }, + "nativeSrc": "11739:34:55", + "nodeType": "YulFunctionCall", + "src": "11739:34:55" + }, + "nativeSrc": "11739:34:55", + "nodeType": "YulExpressionStatement", + "src": "11739:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11793:9:55", + "nodeType": "YulIdentifier", + "src": "11793:9:55" + }, + { + "kind": "number", + "nativeSrc": "11804:2:55", + "nodeType": "YulLiteral", + "src": "11804:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11789:3:55", + "nodeType": "YulIdentifier", + "src": "11789:3:55" + }, + "nativeSrc": "11789:18:55", + "nodeType": "YulFunctionCall", + "src": "11789:18:55" + }, + { + "name": "value3", + "nativeSrc": "11809:6:55", + "nodeType": "YulIdentifier", + "src": "11809:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11782:6:55", + "nodeType": "YulIdentifier", + "src": "11782:6:55" + }, + "nativeSrc": "11782:34:55", + "nodeType": "YulFunctionCall", + "src": "11782:34:55" + }, + "nativeSrc": "11782:34:55", + "nodeType": "YulExpressionStatement", + "src": "11782:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_contract$_IERC20_$4445_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "11360:462:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11505:9:55", + "nodeType": "YulTypedName", + "src": "11505:9:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11516:6:55", + "nodeType": "YulTypedName", + "src": "11516:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11524:6:55", + "nodeType": "YulTypedName", + "src": "11524:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11532:6:55", + "nodeType": "YulTypedName", + "src": "11532:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11540:6:55", + "nodeType": "YulTypedName", + "src": "11540:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11551:4:55", + "nodeType": "YulTypedName", + "src": "11551:4:55", + "type": "" + } + ], + "src": "11360:462:55" + }, + { + "body": { + "nativeSrc": "11935:101:55", + "nodeType": "YulBlock", + "src": "11935:101:55", + "statements": [ + { + "nativeSrc": "11945:26:55", + "nodeType": "YulAssignment", + "src": "11945:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11957:9:55", + "nodeType": "YulIdentifier", + "src": "11957:9:55" + }, + { + "kind": "number", + "nativeSrc": "11968:2:55", + "nodeType": "YulLiteral", + "src": "11968:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11953:3:55", + "nodeType": "YulIdentifier", + "src": "11953:3:55" + }, + "nativeSrc": "11953:18:55", + "nodeType": "YulFunctionCall", + "src": "11953:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11945:4:55", + "nodeType": "YulIdentifier", + "src": "11945:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11987:9:55", + "nodeType": "YulIdentifier", + "src": "11987:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12002:6:55", + "nodeType": "YulIdentifier", + "src": "12002:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12018:2:55", + "nodeType": "YulLiteral", + "src": "12018:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "12022:1:55", + "nodeType": "YulLiteral", + "src": "12022:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12014:3:55", + "nodeType": "YulIdentifier", + "src": "12014:3:55" + }, + "nativeSrc": "12014:10:55", + "nodeType": "YulFunctionCall", + "src": "12014:10:55" + }, + { + "kind": "number", + "nativeSrc": "12026:1:55", + "nodeType": "YulLiteral", + "src": "12026:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12010:3:55", + "nodeType": "YulIdentifier", + "src": "12010:3:55" + }, + "nativeSrc": "12010:18:55", + "nodeType": "YulFunctionCall", + "src": "12010:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11998:3:55", + "nodeType": "YulIdentifier", + "src": "11998:3:55" + }, + "nativeSrc": "11998:31:55", + "nodeType": "YulFunctionCall", + "src": "11998:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11980:6:55", + "nodeType": "YulIdentifier", + "src": "11980:6:55" + }, + "nativeSrc": "11980:50:55", + "nodeType": "YulFunctionCall", + "src": "11980:50:55" + }, + "nativeSrc": "11980:50:55", + "nodeType": "YulExpressionStatement", + "src": "11980:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "11827:209:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11904:9:55", + "nodeType": "YulTypedName", + "src": "11904:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11915:6:55", + "nodeType": "YulTypedName", + "src": "11915:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11926:4:55", + "nodeType": "YulTypedName", + "src": "11926:4:55", + "type": "" + } + ], + "src": "11827:209:55" + }, + { + "body": { + "nativeSrc": "12198:218:55", + "nodeType": "YulBlock", + "src": "12198:218:55", + "statements": [ + { + "nativeSrc": "12208:26:55", + "nodeType": "YulAssignment", + "src": "12208:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12220:9:55", + "nodeType": "YulIdentifier", + "src": "12220:9:55" + }, + { + "kind": "number", + "nativeSrc": "12231:2:55", + "nodeType": "YulLiteral", + "src": "12231:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12216:3:55", + "nodeType": "YulIdentifier", + "src": "12216:3:55" + }, + "nativeSrc": "12216:18:55", + "nodeType": "YulFunctionCall", + "src": "12216:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12208:4:55", + "nodeType": "YulIdentifier", + "src": "12208:4:55" + } + ] + }, + { + "nativeSrc": "12243:29:55", + "nodeType": "YulVariableDeclaration", + "src": "12243:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12261:3:55", + "nodeType": "YulLiteral", + "src": "12261:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12266:1:55", + "nodeType": "YulLiteral", + "src": "12266:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12257:3:55", + "nodeType": "YulIdentifier", + "src": "12257:3:55" + }, + "nativeSrc": "12257:11:55", + "nodeType": "YulFunctionCall", + "src": "12257:11:55" + }, + { + "kind": "number", + "nativeSrc": "12270:1:55", + "nodeType": "YulLiteral", + "src": "12270:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12253:3:55", + "nodeType": "YulIdentifier", + "src": "12253:3:55" + }, + "nativeSrc": "12253:19:55", + "nodeType": "YulFunctionCall", + "src": "12253:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "12247:2:55", + "nodeType": "YulTypedName", + "src": "12247:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12288:9:55", + "nodeType": "YulIdentifier", + "src": "12288:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12303:6:55", + "nodeType": "YulIdentifier", + "src": "12303:6:55" + }, + { + "name": "_1", + "nativeSrc": "12311:2:55", + "nodeType": "YulIdentifier", + "src": "12311:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12299:3:55", + "nodeType": "YulIdentifier", + "src": "12299:3:55" + }, + "nativeSrc": "12299:15:55", + "nodeType": "YulFunctionCall", + "src": "12299:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12281:6:55", + "nodeType": "YulIdentifier", + "src": "12281:6:55" + }, + "nativeSrc": "12281:34:55", + "nodeType": "YulFunctionCall", + "src": "12281:34:55" + }, + "nativeSrc": "12281:34:55", + "nodeType": "YulExpressionStatement", + "src": "12281:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12335:9:55", + "nodeType": "YulIdentifier", + "src": "12335:9:55" + }, + { + "kind": "number", + "nativeSrc": "12346:2:55", + "nodeType": "YulLiteral", + "src": "12346:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12331:3:55", + "nodeType": "YulIdentifier", + "src": "12331:3:55" + }, + "nativeSrc": "12331:18:55", + "nodeType": "YulFunctionCall", + "src": "12331:18:55" + }, + { + "name": "value1", + "nativeSrc": "12351:6:55", + "nodeType": "YulIdentifier", + "src": "12351:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12324:6:55", + "nodeType": "YulIdentifier", + "src": "12324:6:55" + }, + "nativeSrc": "12324:34:55", + "nodeType": "YulFunctionCall", + "src": "12324:34:55" + }, + "nativeSrc": "12324:34:55", + "nodeType": "YulExpressionStatement", + "src": "12324:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12378:9:55", + "nodeType": "YulIdentifier", + "src": "12378:9:55" + }, + { + "kind": "number", + "nativeSrc": "12389:2:55", + "nodeType": "YulLiteral", + "src": "12389:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12374:3:55", + "nodeType": "YulIdentifier", + "src": "12374:3:55" + }, + "nativeSrc": "12374:18:55", + "nodeType": "YulFunctionCall", + "src": "12374:18:55" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "12398:6:55", + "nodeType": "YulIdentifier", + "src": "12398:6:55" + }, + { + "name": "_1", + "nativeSrc": "12406:2:55", + "nodeType": "YulIdentifier", + "src": "12406:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12394:3:55", + "nodeType": "YulIdentifier", + "src": "12394:3:55" + }, + "nativeSrc": "12394:15:55", + "nodeType": "YulFunctionCall", + "src": "12394:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12367:6:55", + "nodeType": "YulIdentifier", + "src": "12367:6:55" + }, + "nativeSrc": "12367:43:55", + "nodeType": "YulFunctionCall", + "src": "12367:43:55" + }, + "nativeSrc": "12367:43:55", + "nodeType": "YulExpressionStatement", + "src": "12367:43:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "12041:375:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12151:9:55", + "nodeType": "YulTypedName", + "src": "12151:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "12162:6:55", + "nodeType": "YulTypedName", + "src": "12162:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12170:6:55", + "nodeType": "YulTypedName", + "src": "12170:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12178:6:55", + "nodeType": "YulTypedName", + "src": "12178:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12189:4:55", + "nodeType": "YulTypedName", + "src": "12189:4:55", + "type": "" + } + ], + "src": "12041:375:55" + }, + { + "body": { + "nativeSrc": "12502:103:55", + "nodeType": "YulBlock", + "src": "12502:103:55", + "statements": [ + { + "body": { + "nativeSrc": "12548:16:55", + "nodeType": "YulBlock", + "src": "12548:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12557:1:55", + "nodeType": "YulLiteral", + "src": "12557:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12560:1:55", + "nodeType": "YulLiteral", + "src": "12560:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12550:6:55", + "nodeType": "YulIdentifier", + "src": "12550:6:55" + }, + "nativeSrc": "12550:12:55", + "nodeType": "YulFunctionCall", + "src": "12550:12:55" + }, + "nativeSrc": "12550:12:55", + "nodeType": "YulExpressionStatement", + "src": "12550:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12523:7:55", + "nodeType": "YulIdentifier", + "src": "12523:7:55" + }, + { + "name": "headStart", + "nativeSrc": "12532:9:55", + "nodeType": "YulIdentifier", + "src": "12532:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12519:3:55", + "nodeType": "YulIdentifier", + "src": "12519:3:55" + }, + "nativeSrc": "12519:23:55", + "nodeType": "YulFunctionCall", + "src": "12519:23:55" + }, + { + "kind": "number", + "nativeSrc": "12544:2:55", + "nodeType": "YulLiteral", + "src": "12544:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12515:3:55", + "nodeType": "YulIdentifier", + "src": "12515:3:55" + }, + "nativeSrc": "12515:32:55", + "nodeType": "YulFunctionCall", + "src": "12515:32:55" + }, + "nativeSrc": "12512:52:55", + "nodeType": "YulIf", + "src": "12512:52:55" + }, + { + "nativeSrc": "12573:26:55", + "nodeType": "YulAssignment", + "src": "12573:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12589:9:55", + "nodeType": "YulIdentifier", + "src": "12589:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12583:5:55", + "nodeType": "YulIdentifier", + "src": "12583:5:55" + }, + "nativeSrc": "12583:16:55", + "nodeType": "YulFunctionCall", + "src": "12583:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12573:6:55", + "nodeType": "YulIdentifier", + "src": "12573:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "12421:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12468:9:55", + "nodeType": "YulTypedName", + "src": "12468:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12479:7:55", + "nodeType": "YulTypedName", + "src": "12479:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12491:6:55", + "nodeType": "YulTypedName", + "src": "12491:6:55", + "type": "" + } + ], + "src": "12421:184:55" + }, + { + "body": { + "nativeSrc": "12666:65:55", + "nodeType": "YulBlock", + "src": "12666:65:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12683:1:55", + "nodeType": "YulLiteral", + "src": "12683:1:55", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "12686:3:55", + "nodeType": "YulIdentifier", + "src": "12686:3:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12676:6:55", + "nodeType": "YulIdentifier", + "src": "12676:6:55" + }, + "nativeSrc": "12676:14:55", + "nodeType": "YulFunctionCall", + "src": "12676:14:55" + }, + "nativeSrc": "12676:14:55", + "nodeType": "YulExpressionStatement", + "src": "12676:14:55" + }, + { + "nativeSrc": "12699:26:55", + "nodeType": "YulAssignment", + "src": "12699:26:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12717:1:55", + "nodeType": "YulLiteral", + "src": "12717:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12720:4:55", + "nodeType": "YulLiteral", + "src": "12720:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "12707:9:55", + "nodeType": "YulIdentifier", + "src": "12707:9:55" + }, + "nativeSrc": "12707:18:55", + "nodeType": "YulFunctionCall", + "src": "12707:18:55" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "12699:4:55", + "nodeType": "YulIdentifier", + "src": "12699:4:55" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "12610:121:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "12649:3:55", + "nodeType": "YulTypedName", + "src": "12649:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "12657:4:55", + "nodeType": "YulTypedName", + "src": "12657:4:55", + "type": "" + } + ], + "src": "12610:121:55" + }, + { + "body": { + "nativeSrc": "12817:462:55", + "nodeType": "YulBlock", + "src": "12817:462:55", + "statements": [ + { + "body": { + "nativeSrc": "12850:423:55", + "nodeType": "YulBlock", + "src": "12850:423:55", + "statements": [ + { + "nativeSrc": "12864:11:55", + "nodeType": "YulVariableDeclaration", + "src": "12864:11:55", + "value": { + "kind": "number", + "nativeSrc": "12874:1:55", + "nodeType": "YulLiteral", + "src": "12874:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "12868:2:55", + "nodeType": "YulTypedName", + "src": "12868:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12895:1:55", + "nodeType": "YulLiteral", + "src": "12895:1:55", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "12898:5:55", + "nodeType": "YulIdentifier", + "src": "12898:5:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12888:6:55", + "nodeType": "YulIdentifier", + "src": "12888:6:55" + }, + "nativeSrc": "12888:16:55", + "nodeType": "YulFunctionCall", + "src": "12888:16:55" + }, + "nativeSrc": "12888:16:55", + "nodeType": "YulExpressionStatement", + "src": "12888:16:55" + }, + { + "nativeSrc": "12917:30:55", + "nodeType": "YulVariableDeclaration", + "src": "12917:30:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12939:1:55", + "nodeType": "YulLiteral", + "src": "12939:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12942:4:55", + "nodeType": "YulLiteral", + "src": "12942:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "12929:9:55", + "nodeType": "YulIdentifier", + "src": "12929:9:55" + }, + "nativeSrc": "12929:18:55", + "nodeType": "YulFunctionCall", + "src": "12929:18:55" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "12921:4:55", + "nodeType": "YulTypedName", + "src": "12921:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "12960:57:55", + "nodeType": "YulVariableDeclaration", + "src": "12960:57:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "12983:4:55", + "nodeType": "YulIdentifier", + "src": "12983:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12993:1:55", + "nodeType": "YulLiteral", + "src": "12993:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "13000:10:55", + "nodeType": "YulIdentifier", + "src": "13000:10:55" + }, + { + "kind": "number", + "nativeSrc": "13012:2:55", + "nodeType": "YulLiteral", + "src": "13012:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12996:3:55", + "nodeType": "YulIdentifier", + "src": "12996:3:55" + }, + "nativeSrc": "12996:19:55", + "nodeType": "YulFunctionCall", + "src": "12996:19:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "12989:3:55", + "nodeType": "YulIdentifier", + "src": "12989:3:55" + }, + "nativeSrc": "12989:27:55", + "nodeType": "YulFunctionCall", + "src": "12989:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12979:3:55", + "nodeType": "YulIdentifier", + "src": "12979:3:55" + }, + "nativeSrc": "12979:38:55", + "nodeType": "YulFunctionCall", + "src": "12979:38:55" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "12964:11:55", + "nodeType": "YulTypedName", + "src": "12964:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13054:23:55", + "nodeType": "YulBlock", + "src": "13054:23:55", + "statements": [ + { + "nativeSrc": "13056:19:55", + "nodeType": "YulAssignment", + "src": "13056:19:55", + "value": { + "name": "data", + "nativeSrc": "13071:4:55", + "nodeType": "YulIdentifier", + "src": "13071:4:55" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "13056:11:55", + "nodeType": "YulIdentifier", + "src": "13056:11:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "13036:10:55", + "nodeType": "YulIdentifier", + "src": "13036:10:55" + }, + { + "kind": "number", + "nativeSrc": "13048:4:55", + "nodeType": "YulLiteral", + "src": "13048:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "13033:2:55", + "nodeType": "YulIdentifier", + "src": "13033:2:55" + }, + "nativeSrc": "13033:20:55", + "nodeType": "YulFunctionCall", + "src": "13033:20:55" + }, + "nativeSrc": "13030:47:55", + "nodeType": "YulIf", + "src": "13030:47:55" + }, + { + "nativeSrc": "13090:41:55", + "nodeType": "YulVariableDeclaration", + "src": "13090:41:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "13104:4:55", + "nodeType": "YulIdentifier", + "src": "13104:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13114:1:55", + "nodeType": "YulLiteral", + "src": "13114:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "13121:3:55", + "nodeType": "YulIdentifier", + "src": "13121:3:55" + }, + { + "kind": "number", + "nativeSrc": "13126:2:55", + "nodeType": "YulLiteral", + "src": "13126:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13117:3:55", + "nodeType": "YulIdentifier", + "src": "13117:3:55" + }, + "nativeSrc": "13117:12:55", + "nodeType": "YulFunctionCall", + "src": "13117:12:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13110:3:55", + "nodeType": "YulIdentifier", + "src": "13110:3:55" + }, + "nativeSrc": "13110:20:55", + "nodeType": "YulFunctionCall", + "src": "13110:20:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13100:3:55", + "nodeType": "YulIdentifier", + "src": "13100:3:55" + }, + "nativeSrc": "13100:31:55", + "nodeType": "YulFunctionCall", + "src": "13100:31:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "13094:2:55", + "nodeType": "YulTypedName", + "src": "13094:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "13144:24:55", + "nodeType": "YulVariableDeclaration", + "src": "13144:24:55", + "value": { + "name": "deleteStart", + "nativeSrc": "13157:11:55", + "nodeType": "YulIdentifier", + "src": "13157:11:55" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "13148:5:55", + "nodeType": "YulTypedName", + "src": "13148:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13242:21:55", + "nodeType": "YulBlock", + "src": "13242:21:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "13251:5:55", + "nodeType": "YulIdentifier", + "src": "13251:5:55" + }, + { + "name": "_1", + "nativeSrc": "13258:2:55", + "nodeType": "YulIdentifier", + "src": "13258:2:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "13244:6:55", + "nodeType": "YulIdentifier", + "src": "13244:6:55" + }, + "nativeSrc": "13244:17:55", + "nodeType": "YulFunctionCall", + "src": "13244:17:55" + }, + "nativeSrc": "13244:17:55", + "nodeType": "YulExpressionStatement", + "src": "13244:17:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "13192:5:55", + "nodeType": "YulIdentifier", + "src": "13192:5:55" + }, + { + "name": "_2", + "nativeSrc": "13199:2:55", + "nodeType": "YulIdentifier", + "src": "13199:2:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "13189:2:55", + "nodeType": "YulIdentifier", + "src": "13189:2:55" + }, + "nativeSrc": "13189:13:55", + "nodeType": "YulFunctionCall", + "src": "13189:13:55" + }, + "nativeSrc": "13181:82:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "13203:26:55", + "nodeType": "YulBlock", + "src": "13203:26:55", + "statements": [ + { + "nativeSrc": "13205:22:55", + "nodeType": "YulAssignment", + "src": "13205:22:55", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "13218:5:55", + "nodeType": "YulIdentifier", + "src": "13218:5:55" + }, + { + "kind": "number", + "nativeSrc": "13225:1:55", + "nodeType": "YulLiteral", + "src": "13225:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13214:3:55", + "nodeType": "YulIdentifier", + "src": "13214:3:55" + }, + "nativeSrc": "13214:13:55", + "nodeType": "YulFunctionCall", + "src": "13214:13:55" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "13205:5:55", + "nodeType": "YulIdentifier", + "src": "13205:5:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "13185:3:55", + "nodeType": "YulBlock", + "src": "13185:3:55", + "statements": [] + }, + "src": "13181:82:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "12833:3:55", + "nodeType": "YulIdentifier", + "src": "12833:3:55" + }, + { + "kind": "number", + "nativeSrc": "12838:2:55", + "nodeType": "YulLiteral", + "src": "12838:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12830:2:55", + "nodeType": "YulIdentifier", + "src": "12830:2:55" + }, + "nativeSrc": "12830:11:55", + "nodeType": "YulFunctionCall", + "src": "12830:11:55" + }, + "nativeSrc": "12827:446:55", + "nodeType": "YulIf", + "src": "12827:446:55" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "12736:543:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "12789:5:55", + "nodeType": "YulTypedName", + "src": "12789:5:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "12796:3:55", + "nodeType": "YulTypedName", + "src": "12796:3:55", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "12801:10:55", + "nodeType": "YulTypedName", + "src": "12801:10:55", + "type": "" + } + ], + "src": "12736:543:55" + }, + { + "body": { + "nativeSrc": "13369:81:55", + "nodeType": "YulBlock", + "src": "13369:81:55", + "statements": [ + { + "nativeSrc": "13379:65:55", + "nodeType": "YulAssignment", + "src": "13379:65:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "13394:4:55", + "nodeType": "YulIdentifier", + "src": "13394:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13412:1:55", + "nodeType": "YulLiteral", + "src": "13412:1:55", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "13415:3:55", + "nodeType": "YulIdentifier", + "src": "13415:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13408:3:55", + "nodeType": "YulIdentifier", + "src": "13408:3:55" + }, + "nativeSrc": "13408:11:55", + "nodeType": "YulFunctionCall", + "src": "13408:11:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13425:1:55", + "nodeType": "YulLiteral", + "src": "13425:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "13421:3:55", + "nodeType": "YulIdentifier", + "src": "13421:3:55" + }, + "nativeSrc": "13421:6:55", + "nodeType": "YulFunctionCall", + "src": "13421:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13404:3:55", + "nodeType": "YulIdentifier", + "src": "13404:3:55" + }, + "nativeSrc": "13404:24:55", + "nodeType": "YulFunctionCall", + "src": "13404:24:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "13400:3:55", + "nodeType": "YulIdentifier", + "src": "13400:3:55" + }, + "nativeSrc": "13400:29:55", + "nodeType": "YulFunctionCall", + "src": "13400:29:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13390:3:55", + "nodeType": "YulIdentifier", + "src": "13390:3:55" + }, + "nativeSrc": "13390:40:55", + "nodeType": "YulFunctionCall", + "src": "13390:40:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13436:1:55", + "nodeType": "YulLiteral", + "src": "13436:1:55", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "13439:3:55", + "nodeType": "YulIdentifier", + "src": "13439:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13432:3:55", + "nodeType": "YulIdentifier", + "src": "13432:3:55" + }, + "nativeSrc": "13432:11:55", + "nodeType": "YulFunctionCall", + "src": "13432:11:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "13387:2:55", + "nodeType": "YulIdentifier", + "src": "13387:2:55" + }, + "nativeSrc": "13387:57:55", + "nodeType": "YulFunctionCall", + "src": "13387:57:55" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "13379:4:55", + "nodeType": "YulIdentifier", + "src": "13379:4:55" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "13284:166:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "13346:4:55", + "nodeType": "YulTypedName", + "src": "13346:4:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "13352:3:55", + "nodeType": "YulTypedName", + "src": "13352:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "13360:4:55", + "nodeType": "YulTypedName", + "src": "13360:4:55", + "type": "" + } + ], + "src": "13284:166:55" + }, + { + "body": { + "nativeSrc": "13551:1249:55", + "nodeType": "YulBlock", + "src": "13551:1249:55", + "statements": [ + { + "nativeSrc": "13561:24:55", + "nodeType": "YulVariableDeclaration", + "src": "13561:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "13581:3:55", + "nodeType": "YulIdentifier", + "src": "13581:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13575:5:55", + "nodeType": "YulIdentifier", + "src": "13575:5:55" + }, + "nativeSrc": "13575:10:55", + "nodeType": "YulFunctionCall", + "src": "13575:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "13565:6:55", + "nodeType": "YulTypedName", + "src": "13565:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13628:22:55", + "nodeType": "YulBlock", + "src": "13628:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "13630:16:55", + "nodeType": "YulIdentifier", + "src": "13630:16:55" + }, + "nativeSrc": "13630:18:55", + "nodeType": "YulFunctionCall", + "src": "13630:18:55" + }, + "nativeSrc": "13630:18:55", + "nodeType": "YulExpressionStatement", + "src": "13630:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "13600:6:55", + "nodeType": "YulIdentifier", + "src": "13600:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13616:2:55", + "nodeType": "YulLiteral", + "src": "13616:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "13620:1:55", + "nodeType": "YulLiteral", + "src": "13620:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13612:3:55", + "nodeType": "YulIdentifier", + "src": "13612:3:55" + }, + "nativeSrc": "13612:10:55", + "nodeType": "YulFunctionCall", + "src": "13612:10:55" + }, + { + "kind": "number", + "nativeSrc": "13624:1:55", + "nodeType": "YulLiteral", + "src": "13624:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13608:3:55", + "nodeType": "YulIdentifier", + "src": "13608:3:55" + }, + "nativeSrc": "13608:18:55", + "nodeType": "YulFunctionCall", + "src": "13608:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13597:2:55", + "nodeType": "YulIdentifier", + "src": "13597:2:55" + }, + "nativeSrc": "13597:30:55", + "nodeType": "YulFunctionCall", + "src": "13597:30:55" + }, + "nativeSrc": "13594:56:55", + "nodeType": "YulIf", + "src": "13594:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "13703:4:55", + "nodeType": "YulIdentifier", + "src": "13703:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "13741:4:55", + "nodeType": "YulIdentifier", + "src": "13741:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "13735:5:55", + "nodeType": "YulIdentifier", + "src": "13735:5:55" + }, + "nativeSrc": "13735:11:55", + "nodeType": "YulFunctionCall", + "src": "13735:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "13709:25:55", + "nodeType": "YulIdentifier", + "src": "13709:25:55" + }, + "nativeSrc": "13709:38:55", + "nodeType": "YulFunctionCall", + "src": "13709:38:55" + }, + { + "name": "newLen", + "nativeSrc": "13749:6:55", + "nodeType": "YulIdentifier", + "src": "13749:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "13659:43:55", + "nodeType": "YulIdentifier", + "src": "13659:43:55" + }, + "nativeSrc": "13659:97:55", + "nodeType": "YulFunctionCall", + "src": "13659:97:55" + }, + "nativeSrc": "13659:97:55", + "nodeType": "YulExpressionStatement", + "src": "13659:97:55" + }, + { + "nativeSrc": "13765:18:55", + "nodeType": "YulVariableDeclaration", + "src": "13765:18:55", + "value": { + "kind": "number", + "nativeSrc": "13782:1:55", + "nodeType": "YulLiteral", + "src": "13782:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "13769:9:55", + "nodeType": "YulTypedName", + "src": "13769:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "13792:23:55", + "nodeType": "YulVariableDeclaration", + "src": "13792:23:55", + "value": { + "kind": "number", + "nativeSrc": "13811:4:55", + "nodeType": "YulLiteral", + "src": "13811:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "13796:11:55", + "nodeType": "YulTypedName", + "src": "13796:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "13824:17:55", + "nodeType": "YulAssignment", + "src": "13824:17:55", + "value": { + "kind": "number", + "nativeSrc": "13837:4:55", + "nodeType": "YulLiteral", + "src": "13837:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "13824:9:55", + "nodeType": "YulIdentifier", + "src": "13824:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "13887:656:55", + "nodeType": "YulBlock", + "src": "13887:656:55", + "statements": [ + { + "nativeSrc": "13901:35:55", + "nodeType": "YulVariableDeclaration", + "src": "13901:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "13920:6:55", + "nodeType": "YulIdentifier", + "src": "13920:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13932:2:55", + "nodeType": "YulLiteral", + "src": "13932:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "13928:3:55", + "nodeType": "YulIdentifier", + "src": "13928:3:55" + }, + "nativeSrc": "13928:7:55", + "nodeType": "YulFunctionCall", + "src": "13928:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13916:3:55", + "nodeType": "YulIdentifier", + "src": "13916:3:55" + }, + "nativeSrc": "13916:20:55", + "nodeType": "YulFunctionCall", + "src": "13916:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "13905:7:55", + "nodeType": "YulTypedName", + "src": "13905:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "13949:49:55", + "nodeType": "YulVariableDeclaration", + "src": "13949:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "13993:4:55", + "nodeType": "YulIdentifier", + "src": "13993:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "13963:29:55", + "nodeType": "YulIdentifier", + "src": "13963:29:55" + }, + "nativeSrc": "13963:35:55", + "nodeType": "YulFunctionCall", + "src": "13963:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "13953:6:55", + "nodeType": "YulTypedName", + "src": "13953:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "14011:10:55", + "nodeType": "YulVariableDeclaration", + "src": "14011:10:55", + "value": { + "kind": "number", + "nativeSrc": "14020:1:55", + "nodeType": "YulLiteral", + "src": "14020:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "14015:1:55", + "nodeType": "YulTypedName", + "src": "14015:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14098:172:55", + "nodeType": "YulBlock", + "src": "14098:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "14123:6:55", + "nodeType": "YulIdentifier", + "src": "14123:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "14141:3:55", + "nodeType": "YulIdentifier", + "src": "14141:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "14146:9:55", + "nodeType": "YulIdentifier", + "src": "14146:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14137:3:55", + "nodeType": "YulIdentifier", + "src": "14137:3:55" + }, + "nativeSrc": "14137:19:55", + "nodeType": "YulFunctionCall", + "src": "14137:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14131:5:55", + "nodeType": "YulIdentifier", + "src": "14131:5:55" + }, + "nativeSrc": "14131:26:55", + "nodeType": "YulFunctionCall", + "src": "14131:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "14116:6:55", + "nodeType": "YulIdentifier", + "src": "14116:6:55" + }, + "nativeSrc": "14116:42:55", + "nodeType": "YulFunctionCall", + "src": "14116:42:55" + }, + "nativeSrc": "14116:42:55", + "nodeType": "YulExpressionStatement", + "src": "14116:42:55" + }, + { + "nativeSrc": "14175:24:55", + "nodeType": "YulAssignment", + "src": "14175:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "14189:6:55", + "nodeType": "YulIdentifier", + "src": "14189:6:55" + }, + { + "kind": "number", + "nativeSrc": "14197:1:55", + "nodeType": "YulLiteral", + "src": "14197:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14185:3:55", + "nodeType": "YulIdentifier", + "src": "14185:3:55" + }, + "nativeSrc": "14185:14:55", + "nodeType": "YulFunctionCall", + "src": "14185:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "14175:6:55", + "nodeType": "YulIdentifier", + "src": "14175:6:55" + } + ] + }, + { + "nativeSrc": "14216:40:55", + "nodeType": "YulAssignment", + "src": "14216:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "14233:9:55", + "nodeType": "YulIdentifier", + "src": "14233:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "14244:11:55", + "nodeType": "YulIdentifier", + "src": "14244:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14229:3:55", + "nodeType": "YulIdentifier", + "src": "14229:3:55" + }, + "nativeSrc": "14229:27:55", + "nodeType": "YulFunctionCall", + "src": "14229:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "14216:9:55", + "nodeType": "YulIdentifier", + "src": "14216:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "14045:1:55", + "nodeType": "YulIdentifier", + "src": "14045:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "14048:7:55", + "nodeType": "YulIdentifier", + "src": "14048:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "14042:2:55", + "nodeType": "YulIdentifier", + "src": "14042:2:55" + }, + "nativeSrc": "14042:14:55", + "nodeType": "YulFunctionCall", + "src": "14042:14:55" + }, + "nativeSrc": "14034:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "14057:28:55", + "nodeType": "YulBlock", + "src": "14057:28:55", + "statements": [ + { + "nativeSrc": "14059:24:55", + "nodeType": "YulAssignment", + "src": "14059:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "14068:1:55", + "nodeType": "YulIdentifier", + "src": "14068:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "14071:11:55", + "nodeType": "YulIdentifier", + "src": "14071:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14064:3:55", + "nodeType": "YulIdentifier", + "src": "14064:3:55" + }, + "nativeSrc": "14064:19:55", + "nodeType": "YulFunctionCall", + "src": "14064:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "14059:1:55", + "nodeType": "YulIdentifier", + "src": "14059:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "14038:3:55", + "nodeType": "YulBlock", + "src": "14038:3:55", + "statements": [] + }, + "src": "14034:236:55" + }, + { + "body": { + "nativeSrc": "14318:166:55", + "nodeType": "YulBlock", + "src": "14318:166:55", + "statements": [ + { + "nativeSrc": "14336:43:55", + "nodeType": "YulVariableDeclaration", + "src": "14336:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "14363:3:55", + "nodeType": "YulIdentifier", + "src": "14363:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "14368:9:55", + "nodeType": "YulIdentifier", + "src": "14368:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14359:3:55", + "nodeType": "YulIdentifier", + "src": "14359:3:55" + }, + "nativeSrc": "14359:19:55", + "nodeType": "YulFunctionCall", + "src": "14359:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14353:5:55", + "nodeType": "YulIdentifier", + "src": "14353:5:55" + }, + "nativeSrc": "14353:26:55", + "nodeType": "YulFunctionCall", + "src": "14353:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "14340:9:55", + "nodeType": "YulTypedName", + "src": "14340:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "14403:6:55", + "nodeType": "YulIdentifier", + "src": "14403:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "14415:9:55", + "nodeType": "YulIdentifier", + "src": "14415:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14442:1:55", + "nodeType": "YulLiteral", + "src": "14442:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "14445:6:55", + "nodeType": "YulIdentifier", + "src": "14445:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14438:3:55", + "nodeType": "YulIdentifier", + "src": "14438:3:55" + }, + "nativeSrc": "14438:14:55", + "nodeType": "YulFunctionCall", + "src": "14438:14:55" + }, + { + "kind": "number", + "nativeSrc": "14454:3:55", + "nodeType": "YulLiteral", + "src": "14454:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14434:3:55", + "nodeType": "YulIdentifier", + "src": "14434:3:55" + }, + "nativeSrc": "14434:24:55", + "nodeType": "YulFunctionCall", + "src": "14434:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14464:1:55", + "nodeType": "YulLiteral", + "src": "14464:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "14460:3:55", + "nodeType": "YulIdentifier", + "src": "14460:3:55" + }, + "nativeSrc": "14460:6:55", + "nodeType": "YulFunctionCall", + "src": "14460:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14430:3:55", + "nodeType": "YulIdentifier", + "src": "14430:3:55" + }, + "nativeSrc": "14430:37:55", + "nodeType": "YulFunctionCall", + "src": "14430:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "14426:3:55", + "nodeType": "YulIdentifier", + "src": "14426:3:55" + }, + "nativeSrc": "14426:42:55", + "nodeType": "YulFunctionCall", + "src": "14426:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14411:3:55", + "nodeType": "YulIdentifier", + "src": "14411:3:55" + }, + "nativeSrc": "14411:58:55", + "nodeType": "YulFunctionCall", + "src": "14411:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "14396:6:55", + "nodeType": "YulIdentifier", + "src": "14396:6:55" + }, + "nativeSrc": "14396:74:55", + "nodeType": "YulFunctionCall", + "src": "14396:74:55" + }, + "nativeSrc": "14396:74:55", + "nodeType": "YulExpressionStatement", + "src": "14396:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "14289:7:55", + "nodeType": "YulIdentifier", + "src": "14289:7:55" + }, + { + "name": "newLen", + "nativeSrc": "14298:6:55", + "nodeType": "YulIdentifier", + "src": "14298:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "14286:2:55", + "nodeType": "YulIdentifier", + "src": "14286:2:55" + }, + "nativeSrc": "14286:19:55", + "nodeType": "YulFunctionCall", + "src": "14286:19:55" + }, + "nativeSrc": "14283:201:55", + "nodeType": "YulIf", + "src": "14283:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "14504:4:55", + "nodeType": "YulIdentifier", + "src": "14504:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14518:1:55", + "nodeType": "YulLiteral", + "src": "14518:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "14521:6:55", + "nodeType": "YulIdentifier", + "src": "14521:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14514:3:55", + "nodeType": "YulIdentifier", + "src": "14514:3:55" + }, + "nativeSrc": "14514:14:55", + "nodeType": "YulFunctionCall", + "src": "14514:14:55" + }, + { + "kind": "number", + "nativeSrc": "14530:1:55", + "nodeType": "YulLiteral", + "src": "14530:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14510:3:55", + "nodeType": "YulIdentifier", + "src": "14510:3:55" + }, + "nativeSrc": "14510:22:55", + "nodeType": "YulFunctionCall", + "src": "14510:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "14497:6:55", + "nodeType": "YulIdentifier", + "src": "14497:6:55" + }, + "nativeSrc": "14497:36:55", + "nodeType": "YulFunctionCall", + "src": "14497:36:55" + }, + "nativeSrc": "14497:36:55", + "nodeType": "YulExpressionStatement", + "src": "14497:36:55" + } + ] + }, + "nativeSrc": "13880:663:55", + "nodeType": "YulCase", + "src": "13880:663:55", + "value": { + "kind": "number", + "nativeSrc": "13885:1:55", + "nodeType": "YulLiteral", + "src": "13885:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "14560:234:55", + "nodeType": "YulBlock", + "src": "14560:234:55", + "statements": [ + { + "nativeSrc": "14574:14:55", + "nodeType": "YulVariableDeclaration", + "src": "14574:14:55", + "value": { + "kind": "number", + "nativeSrc": "14587:1:55", + "nodeType": "YulLiteral", + "src": "14587:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "14578:5:55", + "nodeType": "YulTypedName", + "src": "14578:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14623:67:55", + "nodeType": "YulBlock", + "src": "14623:67:55", + "statements": [ + { + "nativeSrc": "14641:35:55", + "nodeType": "YulAssignment", + "src": "14641:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "14660:3:55", + "nodeType": "YulIdentifier", + "src": "14660:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "14665:9:55", + "nodeType": "YulIdentifier", + "src": "14665:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14656:3:55", + "nodeType": "YulIdentifier", + "src": "14656:3:55" + }, + "nativeSrc": "14656:19:55", + "nodeType": "YulFunctionCall", + "src": "14656:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14650:5:55", + "nodeType": "YulIdentifier", + "src": "14650:5:55" + }, + "nativeSrc": "14650:26:55", + "nodeType": "YulFunctionCall", + "src": "14650:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "14641:5:55", + "nodeType": "YulIdentifier", + "src": "14641:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "14604:6:55", + "nodeType": "YulIdentifier", + "src": "14604:6:55" + }, + "nativeSrc": "14601:89:55", + "nodeType": "YulIf", + "src": "14601:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "14710:4:55", + "nodeType": "YulIdentifier", + "src": "14710:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "14769:5:55", + "nodeType": "YulIdentifier", + "src": "14769:5:55" + }, + { + "name": "newLen", + "nativeSrc": "14776:6:55", + "nodeType": "YulIdentifier", + "src": "14776:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "14716:52:55", + "nodeType": "YulIdentifier", + "src": "14716:52:55" + }, + "nativeSrc": "14716:67:55", + "nodeType": "YulFunctionCall", + "src": "14716:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "14703:6:55", + "nodeType": "YulIdentifier", + "src": "14703:6:55" + }, + "nativeSrc": "14703:81:55", + "nodeType": "YulFunctionCall", + "src": "14703:81:55" + }, + "nativeSrc": "14703:81:55", + "nodeType": "YulExpressionStatement", + "src": "14703:81:55" + } + ] + }, + "nativeSrc": "14552:242:55", + "nodeType": "YulCase", + "src": "14552:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "13860:6:55", + "nodeType": "YulIdentifier", + "src": "13860:6:55" + }, + { + "kind": "number", + "nativeSrc": "13868:2:55", + "nodeType": "YulLiteral", + "src": "13868:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13857:2:55", + "nodeType": "YulIdentifier", + "src": "13857:2:55" + }, + "nativeSrc": "13857:14:55", + "nodeType": "YulFunctionCall", + "src": "13857:14:55" + }, + "nativeSrc": "13850:944:55", + "nodeType": "YulSwitch", + "src": "13850:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "13455:1345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "13536:4:55", + "nodeType": "YulTypedName", + "src": "13536:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "13542:3:55", + "nodeType": "YulTypedName", + "src": "13542:3:55", + "type": "" + } + ], + "src": "13455:1345:55" + }, + { + "body": { + "nativeSrc": "14962:218:55", + "nodeType": "YulBlock", + "src": "14962:218:55", + "statements": [ + { + "nativeSrc": "14972:26:55", + "nodeType": "YulAssignment", + "src": "14972:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14984:9:55", + "nodeType": "YulIdentifier", + "src": "14984:9:55" + }, + { + "kind": "number", + "nativeSrc": "14995:2:55", + "nodeType": "YulLiteral", + "src": "14995:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14980:3:55", + "nodeType": "YulIdentifier", + "src": "14980:3:55" + }, + "nativeSrc": "14980:18:55", + "nodeType": "YulFunctionCall", + "src": "14980:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "14972:4:55", + "nodeType": "YulIdentifier", + "src": "14972:4:55" + } + ] + }, + { + "nativeSrc": "15007:29:55", + "nodeType": "YulVariableDeclaration", + "src": "15007:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15025:3:55", + "nodeType": "YulLiteral", + "src": "15025:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "15030:1:55", + "nodeType": "YulLiteral", + "src": "15030:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15021:3:55", + "nodeType": "YulIdentifier", + "src": "15021:3:55" + }, + "nativeSrc": "15021:11:55", + "nodeType": "YulFunctionCall", + "src": "15021:11:55" + }, + { + "kind": "number", + "nativeSrc": "15034:1:55", + "nodeType": "YulLiteral", + "src": "15034:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15017:3:55", + "nodeType": "YulIdentifier", + "src": "15017:3:55" + }, + "nativeSrc": "15017:19:55", + "nodeType": "YulFunctionCall", + "src": "15017:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "15011:2:55", + "nodeType": "YulTypedName", + "src": "15011:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15052:9:55", + "nodeType": "YulIdentifier", + "src": "15052:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "15067:6:55", + "nodeType": "YulIdentifier", + "src": "15067:6:55" + }, + { + "name": "_1", + "nativeSrc": "15075:2:55", + "nodeType": "YulIdentifier", + "src": "15075:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15063:3:55", + "nodeType": "YulIdentifier", + "src": "15063:3:55" + }, + "nativeSrc": "15063:15:55", + "nodeType": "YulFunctionCall", + "src": "15063:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15045:6:55", + "nodeType": "YulIdentifier", + "src": "15045:6:55" + }, + "nativeSrc": "15045:34:55", + "nodeType": "YulFunctionCall", + "src": "15045:34:55" + }, + "nativeSrc": "15045:34:55", + "nodeType": "YulExpressionStatement", + "src": "15045:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15099:9:55", + "nodeType": "YulIdentifier", + "src": "15099:9:55" + }, + { + "kind": "number", + "nativeSrc": "15110:2:55", + "nodeType": "YulLiteral", + "src": "15110:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15095:3:55", + "nodeType": "YulIdentifier", + "src": "15095:3:55" + }, + "nativeSrc": "15095:18:55", + "nodeType": "YulFunctionCall", + "src": "15095:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "15119:6:55", + "nodeType": "YulIdentifier", + "src": "15119:6:55" + }, + { + "name": "_1", + "nativeSrc": "15127:2:55", + "nodeType": "YulIdentifier", + "src": "15127:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15115:3:55", + "nodeType": "YulIdentifier", + "src": "15115:3:55" + }, + "nativeSrc": "15115:15:55", + "nodeType": "YulFunctionCall", + "src": "15115:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15088:6:55", + "nodeType": "YulIdentifier", + "src": "15088:6:55" + }, + "nativeSrc": "15088:43:55", + "nodeType": "YulFunctionCall", + "src": "15088:43:55" + }, + "nativeSrc": "15088:43:55", + "nodeType": "YulExpressionStatement", + "src": "15088:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15151:9:55", + "nodeType": "YulIdentifier", + "src": "15151:9:55" + }, + { + "kind": "number", + "nativeSrc": "15162:2:55", + "nodeType": "YulLiteral", + "src": "15162:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15147:3:55", + "nodeType": "YulIdentifier", + "src": "15147:3:55" + }, + "nativeSrc": "15147:18:55", + "nodeType": "YulFunctionCall", + "src": "15147:18:55" + }, + { + "name": "value2", + "nativeSrc": "15167:6:55", + "nodeType": "YulIdentifier", + "src": "15167:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15140:6:55", + "nodeType": "YulIdentifier", + "src": "15140:6:55" + }, + "nativeSrc": "15140:34:55", + "nodeType": "YulFunctionCall", + "src": "15140:34:55" + }, + "nativeSrc": "15140:34:55", + "nodeType": "YulExpressionStatement", + "src": "15140:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "14805:375:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14915:9:55", + "nodeType": "YulTypedName", + "src": "14915:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "14926:6:55", + "nodeType": "YulTypedName", + "src": "14926:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14934:6:55", + "nodeType": "YulTypedName", + "src": "14934:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "14942:6:55", + "nodeType": "YulTypedName", + "src": "14942:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "14953:4:55", + "nodeType": "YulTypedName", + "src": "14953:4:55", + "type": "" + } + ], + "src": "14805:375:55" + }, + { + "body": { + "nativeSrc": "15376:14:55", + "nodeType": "YulBlock", + "src": "15376:14:55", + "statements": [ + { + "nativeSrc": "15378:10:55", + "nodeType": "YulAssignment", + "src": "15378:10:55", + "value": { + "name": "pos", + "nativeSrc": "15385:3:55", + "nodeType": "YulIdentifier", + "src": "15385:3:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "15378:3:55", + "nodeType": "YulIdentifier", + "src": "15378:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "15185:205:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "15360:3:55", + "nodeType": "YulTypedName", + "src": "15360:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "15368:3:55", + "nodeType": "YulTypedName", + "src": "15368:3:55", + "type": "" + } + ], + "src": "15185:205:55" + }, + { + "body": { + "nativeSrc": "15582:309:55", + "nodeType": "YulBlock", + "src": "15582:309:55", + "statements": [ + { + "nativeSrc": "15592:27:55", + "nodeType": "YulVariableDeclaration", + "src": "15592:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "15612:6:55", + "nodeType": "YulIdentifier", + "src": "15612:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15606:5:55", + "nodeType": "YulIdentifier", + "src": "15606:5:55" + }, + "nativeSrc": "15606:13:55", + "nodeType": "YulFunctionCall", + "src": "15606:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "15596:6:55", + "nodeType": "YulTypedName", + "src": "15596:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "15667:6:55", + "nodeType": "YulIdentifier", + "src": "15667:6:55" + }, + { + "kind": "number", + "nativeSrc": "15675:4:55", + "nodeType": "YulLiteral", + "src": "15675:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15663:3:55", + "nodeType": "YulIdentifier", + "src": "15663:3:55" + }, + "nativeSrc": "15663:17:55", + "nodeType": "YulFunctionCall", + "src": "15663:17:55" + }, + { + "name": "pos", + "nativeSrc": "15682:3:55", + "nodeType": "YulIdentifier", + "src": "15682:3:55" + }, + { + "name": "length", + "nativeSrc": "15687:6:55", + "nodeType": "YulIdentifier", + "src": "15687:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "15628:34:55", + "nodeType": "YulIdentifier", + "src": "15628:34:55" + }, + "nativeSrc": "15628:66:55", + "nodeType": "YulFunctionCall", + "src": "15628:66:55" + }, + "nativeSrc": "15628:66:55", + "nodeType": "YulExpressionStatement", + "src": "15628:66:55" + }, + { + "nativeSrc": "15703:29:55", + "nodeType": "YulVariableDeclaration", + "src": "15703:29:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15720:3:55", + "nodeType": "YulIdentifier", + "src": "15720:3:55" + }, + { + "name": "length", + "nativeSrc": "15725:6:55", + "nodeType": "YulIdentifier", + "src": "15725:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15716:3:55", + "nodeType": "YulIdentifier", + "src": "15716:3:55" + }, + "nativeSrc": "15716:16:55", + "nodeType": "YulFunctionCall", + "src": "15716:16:55" + }, + "variables": [ + { + "name": "end_1", + "nativeSrc": "15707:5:55", + "nodeType": "YulTypedName", + "src": "15707:5:55", + "type": "" + } + ] + }, + { + "nativeSrc": "15741:29:55", + "nodeType": "YulVariableDeclaration", + "src": "15741:29:55", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "15763:6:55", + "nodeType": "YulIdentifier", + "src": "15763:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15757:5:55", + "nodeType": "YulIdentifier", + "src": "15757:5:55" + }, + "nativeSrc": "15757:13:55", + "nodeType": "YulFunctionCall", + "src": "15757:13:55" + }, + "variables": [ + { + "name": "length_1", + "nativeSrc": "15745:8:55", + "nodeType": "YulTypedName", + "src": "15745:8:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "15818:6:55", + "nodeType": "YulIdentifier", + "src": "15818:6:55" + }, + { + "kind": "number", + "nativeSrc": "15826:4:55", + "nodeType": "YulLiteral", + "src": "15826:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15814:3:55", + "nodeType": "YulIdentifier", + "src": "15814:3:55" + }, + "nativeSrc": "15814:17:55", + "nodeType": "YulFunctionCall", + "src": "15814:17:55" + }, + { + "name": "end_1", + "nativeSrc": "15833:5:55", + "nodeType": "YulIdentifier", + "src": "15833:5:55" + }, + { + "name": "length_1", + "nativeSrc": "15840:8:55", + "nodeType": "YulIdentifier", + "src": "15840:8:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "15779:34:55", + "nodeType": "YulIdentifier", + "src": "15779:34:55" + }, + "nativeSrc": "15779:70:55", + "nodeType": "YulFunctionCall", + "src": "15779:70:55" + }, + "nativeSrc": "15779:70:55", + "nodeType": "YulExpressionStatement", + "src": "15779:70:55" + }, + { + "nativeSrc": "15858:27:55", + "nodeType": "YulAssignment", + "src": "15858:27:55", + "value": { + "arguments": [ + { + "name": "end_1", + "nativeSrc": "15869:5:55", + "nodeType": "YulIdentifier", + "src": "15869:5:55" + }, + { + "name": "length_1", + "nativeSrc": "15876:8:55", + "nodeType": "YulIdentifier", + "src": "15876:8:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15865:3:55", + "nodeType": "YulIdentifier", + "src": "15865:3:55" + }, + "nativeSrc": "15865:20:55", + "nodeType": "YulFunctionCall", + "src": "15865:20:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "15858:3:55", + "nodeType": "YulIdentifier", + "src": "15858:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "15395:496:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "15550:3:55", + "nodeType": "YulTypedName", + "src": "15550:3:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "15555:6:55", + "nodeType": "YulTypedName", + "src": "15555:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "15563:6:55", + "nodeType": "YulTypedName", + "src": "15563:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "15574:3:55", + "nodeType": "YulTypedName", + "src": "15574:3:55", + "type": "" + } + ], + "src": "15395:496:55" + }, + { + "body": { + "nativeSrc": "16025:145:55", + "nodeType": "YulBlock", + "src": "16025:145:55", + "statements": [ + { + "nativeSrc": "16035:26:55", + "nodeType": "YulAssignment", + "src": "16035:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16047:9:55", + "nodeType": "YulIdentifier", + "src": "16047:9:55" + }, + { + "kind": "number", + "nativeSrc": "16058:2:55", + "nodeType": "YulLiteral", + "src": "16058:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16043:3:55", + "nodeType": "YulIdentifier", + "src": "16043:3:55" + }, + "nativeSrc": "16043:18:55", + "nodeType": "YulFunctionCall", + "src": "16043:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16035:4:55", + "nodeType": "YulIdentifier", + "src": "16035:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16077:9:55", + "nodeType": "YulIdentifier", + "src": "16077:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "16092:6:55", + "nodeType": "YulIdentifier", + "src": "16092:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16108:3:55", + "nodeType": "YulLiteral", + "src": "16108:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "16113:1:55", + "nodeType": "YulLiteral", + "src": "16113:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16104:3:55", + "nodeType": "YulIdentifier", + "src": "16104:3:55" + }, + "nativeSrc": "16104:11:55", + "nodeType": "YulFunctionCall", + "src": "16104:11:55" + }, + { + "kind": "number", + "nativeSrc": "16117:1:55", + "nodeType": "YulLiteral", + "src": "16117:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16100:3:55", + "nodeType": "YulIdentifier", + "src": "16100:3:55" + }, + "nativeSrc": "16100:19:55", + "nodeType": "YulFunctionCall", + "src": "16100:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16088:3:55", + "nodeType": "YulIdentifier", + "src": "16088:3:55" + }, + "nativeSrc": "16088:32:55", + "nodeType": "YulFunctionCall", + "src": "16088:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16070:6:55", + "nodeType": "YulIdentifier", + "src": "16070:6:55" + }, + "nativeSrc": "16070:51:55", + "nodeType": "YulFunctionCall", + "src": "16070:51:55" + }, + "nativeSrc": "16070:51:55", + "nodeType": "YulExpressionStatement", + "src": "16070:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16141:9:55", + "nodeType": "YulIdentifier", + "src": "16141:9:55" + }, + { + "kind": "number", + "nativeSrc": "16152:2:55", + "nodeType": "YulLiteral", + "src": "16152:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16137:3:55", + "nodeType": "YulIdentifier", + "src": "16137:3:55" + }, + "nativeSrc": "16137:18:55", + "nodeType": "YulFunctionCall", + "src": "16137:18:55" + }, + { + "name": "value1", + "nativeSrc": "16157:6:55", + "nodeType": "YulIdentifier", + "src": "16157:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16130:6:55", + "nodeType": "YulIdentifier", + "src": "16130:6:55" + }, + "nativeSrc": "16130:34:55", + "nodeType": "YulFunctionCall", + "src": "16130:34:55" + }, + "nativeSrc": "16130:34:55", + "nodeType": "YulExpressionStatement", + "src": "16130:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "15896:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "15986:9:55", + "nodeType": "YulTypedName", + "src": "15986:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "15997:6:55", + "nodeType": "YulTypedName", + "src": "15997:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16005:6:55", + "nodeType": "YulTypedName", + "src": "16005:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16016:4:55", + "nodeType": "YulTypedName", + "src": "16016:4:55", + "type": "" + } + ], + "src": "15896:274:55" + }, + { + "body": { + "nativeSrc": "16378:286:55", + "nodeType": "YulBlock", + "src": "16378:286:55", + "statements": [ + { + "nativeSrc": "16388:29:55", + "nodeType": "YulVariableDeclaration", + "src": "16388:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16406:3:55", + "nodeType": "YulLiteral", + "src": "16406:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "16411:1:55", + "nodeType": "YulLiteral", + "src": "16411:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16402:3:55", + "nodeType": "YulIdentifier", + "src": "16402:3:55" + }, + "nativeSrc": "16402:11:55", + "nodeType": "YulFunctionCall", + "src": "16402:11:55" + }, + { + "kind": "number", + "nativeSrc": "16415:1:55", + "nodeType": "YulLiteral", + "src": "16415:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16398:3:55", + "nodeType": "YulIdentifier", + "src": "16398:3:55" + }, + "nativeSrc": "16398:19:55", + "nodeType": "YulFunctionCall", + "src": "16398:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "16392:2:55", + "nodeType": "YulTypedName", + "src": "16392:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16433:9:55", + "nodeType": "YulIdentifier", + "src": "16433:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "16448:6:55", + "nodeType": "YulIdentifier", + "src": "16448:6:55" + }, + { + "name": "_1", + "nativeSrc": "16456:2:55", + "nodeType": "YulIdentifier", + "src": "16456:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16444:3:55", + "nodeType": "YulIdentifier", + "src": "16444:3:55" + }, + "nativeSrc": "16444:15:55", + "nodeType": "YulFunctionCall", + "src": "16444:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16426:6:55", + "nodeType": "YulIdentifier", + "src": "16426:6:55" + }, + "nativeSrc": "16426:34:55", + "nodeType": "YulFunctionCall", + "src": "16426:34:55" + }, + "nativeSrc": "16426:34:55", + "nodeType": "YulExpressionStatement", + "src": "16426:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16480:9:55", + "nodeType": "YulIdentifier", + "src": "16480:9:55" + }, + { + "kind": "number", + "nativeSrc": "16491:2:55", + "nodeType": "YulLiteral", + "src": "16491:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16476:3:55", + "nodeType": "YulIdentifier", + "src": "16476:3:55" + }, + "nativeSrc": "16476:18:55", + "nodeType": "YulFunctionCall", + "src": "16476:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16500:6:55", + "nodeType": "YulIdentifier", + "src": "16500:6:55" + }, + { + "name": "_1", + "nativeSrc": "16508:2:55", + "nodeType": "YulIdentifier", + "src": "16508:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16496:3:55", + "nodeType": "YulIdentifier", + "src": "16496:3:55" + }, + "nativeSrc": "16496:15:55", + "nodeType": "YulFunctionCall", + "src": "16496:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16469:6:55", + "nodeType": "YulIdentifier", + "src": "16469:6:55" + }, + "nativeSrc": "16469:43:55", + "nodeType": "YulFunctionCall", + "src": "16469:43:55" + }, + "nativeSrc": "16469:43:55", + "nodeType": "YulExpressionStatement", + "src": "16469:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16532:9:55", + "nodeType": "YulIdentifier", + "src": "16532:9:55" + }, + { + "kind": "number", + "nativeSrc": "16543:2:55", + "nodeType": "YulLiteral", + "src": "16543:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16528:3:55", + "nodeType": "YulIdentifier", + "src": "16528:3:55" + }, + "nativeSrc": "16528:18:55", + "nodeType": "YulFunctionCall", + "src": "16528:18:55" + }, + { + "name": "value2", + "nativeSrc": "16548:6:55", + "nodeType": "YulIdentifier", + "src": "16548:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16521:6:55", + "nodeType": "YulIdentifier", + "src": "16521:6:55" + }, + "nativeSrc": "16521:34:55", + "nodeType": "YulFunctionCall", + "src": "16521:34:55" + }, + "nativeSrc": "16521:34:55", + "nodeType": "YulExpressionStatement", + "src": "16521:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16575:9:55", + "nodeType": "YulIdentifier", + "src": "16575:9:55" + }, + { + "kind": "number", + "nativeSrc": "16586:2:55", + "nodeType": "YulLiteral", + "src": "16586:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16571:3:55", + "nodeType": "YulIdentifier", + "src": "16571:3:55" + }, + "nativeSrc": "16571:18:55", + "nodeType": "YulFunctionCall", + "src": "16571:18:55" + }, + { + "kind": "number", + "nativeSrc": "16591:3:55", + "nodeType": "YulLiteral", + "src": "16591:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16564:6:55", + "nodeType": "YulIdentifier", + "src": "16564:6:55" + }, + "nativeSrc": "16564:31:55", + "nodeType": "YulFunctionCall", + "src": "16564:31:55" + }, + "nativeSrc": "16564:31:55", + "nodeType": "YulExpressionStatement", + "src": "16564:31:55" + }, + { + "nativeSrc": "16604:54:55", + "nodeType": "YulAssignment", + "src": "16604:54:55", + "value": { + "arguments": [ + { + "name": "value3", + "nativeSrc": "16630:6:55", + "nodeType": "YulIdentifier", + "src": "16630:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16642:9:55", + "nodeType": "YulIdentifier", + "src": "16642:9:55" + }, + { + "kind": "number", + "nativeSrc": "16653:3:55", + "nodeType": "YulLiteral", + "src": "16653:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16638:3:55", + "nodeType": "YulIdentifier", + "src": "16638:3:55" + }, + "nativeSrc": "16638:19:55", + "nodeType": "YulFunctionCall", + "src": "16638:19:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "16612:17:55", + "nodeType": "YulIdentifier", + "src": "16612:17:55" + }, + "nativeSrc": "16612:46:55", + "nodeType": "YulFunctionCall", + "src": "16612:46:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16604:4:55", + "nodeType": "YulIdentifier", + "src": "16604:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "16175:489:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16323:9:55", + "nodeType": "YulTypedName", + "src": "16323:9:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "16334:6:55", + "nodeType": "YulTypedName", + "src": "16334:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "16342:6:55", + "nodeType": "YulTypedName", + "src": "16342:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16350:6:55", + "nodeType": "YulTypedName", + "src": "16350:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16358:6:55", + "nodeType": "YulTypedName", + "src": "16358:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16369:4:55", + "nodeType": "YulTypedName", + "src": "16369:4:55", + "type": "" + } + ], + "src": "16175:489:55" + }, + { + "body": { + "nativeSrc": "16749:169:55", + "nodeType": "YulBlock", + "src": "16749:169:55", + "statements": [ + { + "body": { + "nativeSrc": "16795:16:55", + "nodeType": "YulBlock", + "src": "16795:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16804:1:55", + "nodeType": "YulLiteral", + "src": "16804:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "16807:1:55", + "nodeType": "YulLiteral", + "src": "16807:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "16797:6:55", + "nodeType": "YulIdentifier", + "src": "16797:6:55" + }, + "nativeSrc": "16797:12:55", + "nodeType": "YulFunctionCall", + "src": "16797:12:55" + }, + "nativeSrc": "16797:12:55", + "nodeType": "YulExpressionStatement", + "src": "16797:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "16770:7:55", + "nodeType": "YulIdentifier", + "src": "16770:7:55" + }, + { + "name": "headStart", + "nativeSrc": "16779:9:55", + "nodeType": "YulIdentifier", + "src": "16779:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16766:3:55", + "nodeType": "YulIdentifier", + "src": "16766:3:55" + }, + "nativeSrc": "16766:23:55", + "nodeType": "YulFunctionCall", + "src": "16766:23:55" + }, + { + "kind": "number", + "nativeSrc": "16791:2:55", + "nodeType": "YulLiteral", + "src": "16791:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "16762:3:55", + "nodeType": "YulIdentifier", + "src": "16762:3:55" + }, + "nativeSrc": "16762:32:55", + "nodeType": "YulFunctionCall", + "src": "16762:32:55" + }, + "nativeSrc": "16759:52:55", + "nodeType": "YulIf", + "src": "16759:52:55" + }, + { + "nativeSrc": "16820:29:55", + "nodeType": "YulVariableDeclaration", + "src": "16820:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16839:9:55", + "nodeType": "YulIdentifier", + "src": "16839:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16833:5:55", + "nodeType": "YulIdentifier", + "src": "16833:5:55" + }, + "nativeSrc": "16833:16:55", + "nodeType": "YulFunctionCall", + "src": "16833:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "16824:5:55", + "nodeType": "YulTypedName", + "src": "16824:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "16882:5:55", + "nodeType": "YulIdentifier", + "src": "16882:5:55" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nativeSrc": "16858:23:55", + "nodeType": "YulIdentifier", + "src": "16858:23:55" + }, + "nativeSrc": "16858:30:55", + "nodeType": "YulFunctionCall", + "src": "16858:30:55" + }, + "nativeSrc": "16858:30:55", + "nodeType": "YulExpressionStatement", + "src": "16858:30:55" + }, + { + "nativeSrc": "16897:15:55", + "nodeType": "YulAssignment", + "src": "16897:15:55", + "value": { + "name": "value", + "nativeSrc": "16907:5:55", + "nodeType": "YulIdentifier", + "src": "16907:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "16897:6:55", + "nodeType": "YulIdentifier", + "src": "16897:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4_fromMemory", + "nativeSrc": "16669:249:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16715:9:55", + "nodeType": "YulTypedName", + "src": "16715:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "16726:7:55", + "nodeType": "YulTypedName", + "src": "16726:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "16738:6:55", + "nodeType": "YulTypedName", + "src": "16738:6:55", + "type": "" + } + ], + "src": "16669:249:55" + }, + { + "body": { + "nativeSrc": "17060:150:55", + "nodeType": "YulBlock", + "src": "17060:150:55", + "statements": [ + { + "nativeSrc": "17070:27:55", + "nodeType": "YulVariableDeclaration", + "src": "17070:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17090:6:55", + "nodeType": "YulIdentifier", + "src": "17090:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17084:5:55", + "nodeType": "YulIdentifier", + "src": "17084:5:55" + }, + "nativeSrc": "17084:13:55", + "nodeType": "YulFunctionCall", + "src": "17084:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "17074:6:55", + "nodeType": "YulTypedName", + "src": "17074:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17145:6:55", + "nodeType": "YulIdentifier", + "src": "17145:6:55" + }, + { + "kind": "number", + "nativeSrc": "17153:4:55", + "nodeType": "YulLiteral", + "src": "17153:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17141:3:55", + "nodeType": "YulIdentifier", + "src": "17141:3:55" + }, + "nativeSrc": "17141:17:55", + "nodeType": "YulFunctionCall", + "src": "17141:17:55" + }, + { + "name": "pos", + "nativeSrc": "17160:3:55", + "nodeType": "YulIdentifier", + "src": "17160:3:55" + }, + { + "name": "length", + "nativeSrc": "17165:6:55", + "nodeType": "YulIdentifier", + "src": "17165:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "17106:34:55", + "nodeType": "YulIdentifier", + "src": "17106:34:55" + }, + "nativeSrc": "17106:66:55", + "nodeType": "YulFunctionCall", + "src": "17106:66:55" + }, + "nativeSrc": "17106:66:55", + "nodeType": "YulExpressionStatement", + "src": "17106:66:55" + }, + { + "nativeSrc": "17181:23:55", + "nodeType": "YulAssignment", + "src": "17181:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "17192:3:55", + "nodeType": "YulIdentifier", + "src": "17192:3:55" + }, + { + "name": "length", + "nativeSrc": "17197:6:55", + "nodeType": "YulIdentifier", + "src": "17197:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17188:3:55", + "nodeType": "YulIdentifier", + "src": "17188:3:55" + }, + "nativeSrc": "17188:16:55", + "nodeType": "YulFunctionCall", + "src": "17188:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "17181:3:55", + "nodeType": "YulIdentifier", + "src": "17181:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "16923:287:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "17036:3:55", + "nodeType": "YulTypedName", + "src": "17036:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17041:6:55", + "nodeType": "YulTypedName", + "src": "17041:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "17052:3:55", + "nodeType": "YulTypedName", + "src": "17052:3:55", + "type": "" + } + ], + "src": "16923:287:55" + }, + { + "body": { + "nativeSrc": "17247:95:55", + "nodeType": "YulBlock", + "src": "17247:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17264:1:55", + "nodeType": "YulLiteral", + "src": "17264:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17271:3:55", + "nodeType": "YulLiteral", + "src": "17271:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "17276:10:55", + "nodeType": "YulLiteral", + "src": "17276:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "17267:3:55", + "nodeType": "YulIdentifier", + "src": "17267:3:55" + }, + "nativeSrc": "17267:20:55", + "nodeType": "YulFunctionCall", + "src": "17267:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17257:6:55", + "nodeType": "YulIdentifier", + "src": "17257:6:55" + }, + "nativeSrc": "17257:31:55", + "nodeType": "YulFunctionCall", + "src": "17257:31:55" + }, + "nativeSrc": "17257:31:55", + "nodeType": "YulExpressionStatement", + "src": "17257:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17304:1:55", + "nodeType": "YulLiteral", + "src": "17304:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "17307:4:55", + "nodeType": "YulLiteral", + "src": "17307:4:55", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17297:6:55", + "nodeType": "YulIdentifier", + "src": "17297:6:55" + }, + "nativeSrc": "17297:15:55", + "nodeType": "YulFunctionCall", + "src": "17297:15:55" + }, + "nativeSrc": "17297:15:55", + "nodeType": "YulExpressionStatement", + "src": "17297:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17328:1:55", + "nodeType": "YulLiteral", + "src": "17328:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17331:4:55", + "nodeType": "YulLiteral", + "src": "17331:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17321:6:55", + "nodeType": "YulIdentifier", + "src": "17321:6:55" + }, + "nativeSrc": "17321:15:55", + "nodeType": "YulFunctionCall", + "src": "17321:15:55" + }, + "nativeSrc": "17321:15:55", + "nodeType": "YulExpressionStatement", + "src": "17321:15:55" + } + ] + }, + "name": "panic_error_0x12", + "nativeSrc": "17215:127:55", + "nodeType": "YulFunctionDefinition", + "src": "17215:127:55" + }, + { + "body": { + "nativeSrc": "17396:79:55", + "nodeType": "YulBlock", + "src": "17396:79:55", + "statements": [ + { + "nativeSrc": "17406:17:55", + "nodeType": "YulAssignment", + "src": "17406:17:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "17418:1:55", + "nodeType": "YulIdentifier", + "src": "17418:1:55" + }, + { + "name": "y", + "nativeSrc": "17421:1:55", + "nodeType": "YulIdentifier", + "src": "17421:1:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17414:3:55", + "nodeType": "YulIdentifier", + "src": "17414:3:55" + }, + "nativeSrc": "17414:9:55", + "nodeType": "YulFunctionCall", + "src": "17414:9:55" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "17406:4:55", + "nodeType": "YulIdentifier", + "src": "17406:4:55" + } + ] + }, + { + "body": { + "nativeSrc": "17447:22:55", + "nodeType": "YulBlock", + "src": "17447:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "17449:16:55", + "nodeType": "YulIdentifier", + "src": "17449:16:55" + }, + "nativeSrc": "17449:18:55", + "nodeType": "YulFunctionCall", + "src": "17449:18:55" + }, + "nativeSrc": "17449:18:55", + "nodeType": "YulExpressionStatement", + "src": "17449:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "17438:4:55", + "nodeType": "YulIdentifier", + "src": "17438:4:55" + }, + { + "name": "x", + "nativeSrc": "17444:1:55", + "nodeType": "YulIdentifier", + "src": "17444:1:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17435:2:55", + "nodeType": "YulIdentifier", + "src": "17435:2:55" + }, + "nativeSrc": "17435:11:55", + "nodeType": "YulFunctionCall", + "src": "17435:11:55" + }, + "nativeSrc": "17432:37:55", + "nodeType": "YulIf", + "src": "17432:37:55" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "17347:128:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "17378:1:55", + "nodeType": "YulTypedName", + "src": "17378:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "17381:1:55", + "nodeType": "YulTypedName", + "src": "17381:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "17387:4:55", + "nodeType": "YulTypedName", + "src": "17387:4:55", + "type": "" + } + ], + "src": "17347:128:55" + }, + { + "body": { + "nativeSrc": "17512:95:55", + "nodeType": "YulBlock", + "src": "17512:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17529:1:55", + "nodeType": "YulLiteral", + "src": "17529:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17536:3:55", + "nodeType": "YulLiteral", + "src": "17536:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "17541:10:55", + "nodeType": "YulLiteral", + "src": "17541:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "17532:3:55", + "nodeType": "YulIdentifier", + "src": "17532:3:55" + }, + "nativeSrc": "17532:20:55", + "nodeType": "YulFunctionCall", + "src": "17532:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17522:6:55", + "nodeType": "YulIdentifier", + "src": "17522:6:55" + }, + "nativeSrc": "17522:31:55", + "nodeType": "YulFunctionCall", + "src": "17522:31:55" + }, + "nativeSrc": "17522:31:55", + "nodeType": "YulExpressionStatement", + "src": "17522:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17569:1:55", + "nodeType": "YulLiteral", + "src": "17569:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "17572:4:55", + "nodeType": "YulLiteral", + "src": "17572:4:55", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17562:6:55", + "nodeType": "YulIdentifier", + "src": "17562:6:55" + }, + "nativeSrc": "17562:15:55", + "nodeType": "YulFunctionCall", + "src": "17562:15:55" + }, + "nativeSrc": "17562:15:55", + "nodeType": "YulExpressionStatement", + "src": "17562:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17593:1:55", + "nodeType": "YulLiteral", + "src": "17593:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17596:4:55", + "nodeType": "YulLiteral", + "src": "17596:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17586:6:55", + "nodeType": "YulIdentifier", + "src": "17586:6:55" + }, + "nativeSrc": "17586:15:55", + "nodeType": "YulFunctionCall", + "src": "17586:15:55" + }, + "nativeSrc": "17586:15:55", + "nodeType": "YulExpressionStatement", + "src": "17586:15:55" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "17480:127:55", + "nodeType": "YulFunctionDefinition", + "src": "17480:127:55" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_available_length_bytes(src, length, end) -> array\n {\n let _1 := sub(shl(64, 1), 1)\n if gt(length, _1) { panic_error_0x41() }\n let _2 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n array := abi_decode_available_length_bytes(add(offset, 0x20), calldataload(offset), end)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value1 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_1 := calldataload(add(headStart, 128))\n validator_revert_address(value_1)\n value4 := value_1\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_bool(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_uint256_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address_t_contract$_IERC20_$4445_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, _1))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "837": [ + { + "length": 32, + "start": 5255 + }, + { + "length": 32, + "start": 5296 + }, + { + "length": 32, + "start": 5626 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361061019e5760003560e01c80624fdd3c146101a357806301ffc9a7146101da57806306fdde031461020a578063081812fc1461022c578063095ea7b3146102595780630e75c1a81461027b57806312b357b51461029e57806318160ddd146102be57806323b872dd146102d3578063248a9ca3146102f35780632edf5e2c146103135780632f2ff15d146103355780632f745c591461035557806336568abe14610375578063414319081461039557806342842e0e146103b55780634f1ef286146103d55780634f6ccce7146103e8578063516a82b81461040857806352d1902d146104285780635d4badb21461043d5780636352211e1461045d57806370a082311461047d57806391d148541461049d57806395d89b41146104bd57806396591edd146104d2578063a217fddf146104e5578063a22cb465146104fa578063ad3cb1cc1461051a578063b88d4fde1461054b578063c0c53b8b1461056b578063c162d7da1461058b578063c87b56dd146105a0578063d547741f146105c0578063e985e9c5146105e0578063f72c0d8b14610600575b600080fd5b3480156101af57600080fd5b506101c36101be3660046128a4565b610622565b6040516101d19291906128bd565b60405180910390f35b3480156101e657600080fd5b506101fa6101f53660046128ea565b61065f565b60405190151581526020016101d1565b34801561021657600080fd5b5061021f610670565b6040516101d19190612957565b34801561023857600080fd5b5061024c6102473660046128a4565b610711565b6040516101d1919061296a565b34801561026557600080fd5b50610279610274366004612993565b610726565b005b34801561028757600080fd5b50610290610735565b6040519081526020016101d1565b3480156102aa57600080fd5b506101fa6102b93660046129bf565b61074a565b3480156102ca57600080fd5b506102906107c0565b3480156102df57600080fd5b506102796102ee3660046129dc565b6107cb565b3480156102ff57600080fd5b5061029061030e3660046128a4565b6107e4565b34801561031f57600080fd5b5061029060008051602061302483398151915281565b34801561034157600080fd5b50610279610350366004612a1d565b610804565b34801561036157600080fd5b50610290610370366004612993565b610826565b34801561038157600080fd5b50610279610390366004612a1d565b610891565b3480156103a157600080fd5b506102796103b03660046129bf565b6108c4565b3480156103c157600080fd5b506102796103d03660046129dc565b6108fc565b6102796103e3366004612af8565b610917565b3480156103f457600080fd5b506102906104033660046128a4565b610932565b34801561041457600080fd5b506102796104233660046128a4565b610993565b34801561043457600080fd5b506102906109c0565b34801561044957600080fd5b50610279610458366004612b47565b6109dd565b34801561046957600080fd5b5061024c6104783660046128a4565b610acb565b34801561048957600080fd5b506102906104983660046129bf565b610ad6565b3480156104a957600080fd5b506101fa6104b8366004612a1d565b610b2e565b3480156104c957600080fd5b5061021f610b64565b6102796104e03660046128a4565b610b81565b3480156104f157600080fd5b50610290600081565b34801561050657600080fd5b50610279610515366004612be0565b610e97565b34801561052657600080fd5b5061021f604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561055757600080fd5b50610279610566366004612c0e565b610ea2565b34801561057757600080fd5b50610279610586366004612c79565b610eb7565b34801561059757600080fd5b5061024c611064565b3480156105ac57600080fd5b5061021f6105bb3660046128a4565b61107f565b3480156105cc57600080fd5b506102796105db366004612a1d565b61108a565b3480156105ec57600080fd5b506101fa6105fb366004612cc4565b6110a6565b34801561060c57600080fd5b50610290600080516020612fe483398151915281565b600080600061062f6110e5565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061066a82611109565b92915050565b6060600061067c61112e565b905080600001805461068d90612cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990612cf2565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b505050505091505090565b600061071c82611152565b5061066a8261118a565b6107318282336111b3565b5050565b6000806107406110e5565b6002015492915050565b6000610754611064565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b815260040161077f919061296a565b602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066a9190612d2c565b6000806107406111c0565b6107d4816111e4565b6107df8383836112c4565b505050565b6000806107ef611335565b60009384526020525050604090206001015490565b61080d826107e4565b61081681611359565b6108208383611363565b50505050565b6000806108316111c0565b905061083c84610ad6565b831061086857838360405163295f44f760e21b815260040161085f929190612d49565b60405180910390fd5b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b03811633146108ba5760405163334bd91960e11b815260040160405180910390fd5b6107df8282611404565b60006108cf81611359565b60006108d96110e5565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b6107df83838360405180602001604052806000815250610ea2565b61091f61147c565b61092882611523565b610731828261153b565b60008061093d6111c0565b90506109476107c0565b831061096b5760008360405163295f44f760e21b815260040161085f929190612d49565b80600201838154811061098057610980612d62565b9060005260206000200154915050919050565b6000805160206130248339815191526109ab81611359565b60006109b56110e5565b600201929092555050565b60006109ca6115ef565b5060008051602061300483398151915290565b336109e781611638565b6109f086611638565b60006109fa6110e5565b6002810154909150610a0c8142612d8e565b8611610a3557604051630999f7d760e41b8152600481018790526024810182905260440161085f565b60018201805460009182610a4883612da1565b919050559050610a583382611660565b610a62818961167a565b610a70818a338a8a8a6116d8565b60408051888152602081018890526001600160a01b0387811682840152915133928c169184917f80336fa715077c3eac32c02d3302e437dabf25774b2068d72d0d2a928643c4719181900360600190a4505050505050505050565b600061066a82611152565b600080610ae161112e565b90506001600160a01b038316610b0d5760006040516322718ad960e21b815260040161085f919061296a565b6001600160a01b039092166000908152600390920160205250604090205490565b600080610b39611335565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b60606000610b7061112e565b905080600101805461068d90612cf2565b610b89611779565b33610b9381611638565b6000610b9d6110e5565b600084815260038083016020908152604092839020835160a08101855281546001600160a01b0390811680835260018401548216948301949094526002830154958201959095529281015460608401526004015490921660808201529192503314610c20578051604051632663a9c560e11b815261085f91903390600401612dba565b8060400151421115610c565783816040015160405163293d73b760e11b815260040161085f929190918252602082015260400190565b6000610c6185610acb565b905081602001516001600160a01b0316816001600160a01b031614610ca057602082015160405163103d145960e31b815261085f9187916004016128bd565b610caf826020015133876117af565b600085815260038085016020526040822080546001600160a01b0319908116825560018201805482169055600282018490559181019290925560049091018054909116905560808201516001600160a01b031615801590610d14575060008260600151115b15610e10576080820151604051636eb1769f60e11b81526000916001600160a01b03169063dd62ed3e90610d4e9033903090600401612dba565b602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190612dd4565b90508260600151811015610dde576080830151606084015160405163246fb68960e21b81523360048201526001600160a01b03909216602483015260448201526064810182905260840161085f565b610e0a338460200151856060015186608001516001600160a01b031661184b909392919063ffffffff16565b50610e5b565b81606001513414610e43576060820151604051630145611560e21b8152346004820152602481019190915260440161085f565b6020820151610e5b906001600160a01b0316346118a5565b604051339086907fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb9504090600090a350505050610e9461193c565b50565b61073133838361194d565b610eab826111e4565b610820848484846119f2565b6000610ec1611a09565b805490915060ff600160401b82041615906001600160401b0316600081158015610ee85750825b90506000826001600160401b03166001148015610f045750303b155b905081158015610f12575080155b15610f305760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610f5957845460ff60401b1916600160401b1785555b610fa36040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b815250611a2d565b610fab611a3f565b610fb3611a3f565b610fbb611a3f565b610fc3611a3f565b610fce600088611363565b50610fe7600080516020612fe483398151915287611363565b506000610ff26110e5565b80546001600160a01b0319166001600160a01b038b16178155603c60029091015550831561105a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008061106f6110e5565b546001600160a01b031692915050565b606061066a82611a47565b611093826107e4565b61109c81611359565b6108208383611404565b6000806110b161112e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b148061066a575061066a82611b67565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b60008061115e83611b8c565b90506001600160a01b03811661066a57604051637e27328960e01b81526004810184905260240161085f565b60008061119561112e565b6000938452600401602052505060409020546001600160a01b031690565b6107df8383836001611bb5565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b60006111ee6110e5565b600083815260038083016020908152604092839020835160a08101855281546001600160a01b0390811682526001830154811693820193909352600282015494810185905292810154606084015260040154166080820152919250421161126c57805160405163d4cde2af60e01b815261085f9185916004016128bd565b80516001600160a01b0316156107df5750600091825260039081016020526040822080546001600160a01b03199081168255600182018054821690556002820184905591810192909255600490910180549091169055565b6001600160a01b0382166112ee576000604051633250574960e11b815260040161085f919061296a565b60006112fb838333611cbf565b9050836001600160a01b0316816001600160a01b031614610820578382826040516364283d7b60e01b815260040161085f93929190612ded565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b610e948133611cd6565b60008061136e611335565b905061137a8484610b2e565b6113fa576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556113b03390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061066a565b600091505061066a565b60008061140f611335565b905061141b8484610b2e565b156113fa576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061066a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f7600080516020613004833981519152546001600160a01b031690565b6001600160a01b031614155b156115215760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020612fe483398151915261073181611359565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611595575060408051601f3d908101601f1916820190925261159291810190612dd4565b60015b6115b45781604051634c9c8ce360e01b815260040161085f919061296a565b60008051602061300483398151915281146115e557604051632a87526960e21b81526004810182905260240161085f565b6107df8383611d01565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115215760405163703e46dd60e11b815260040160405180910390fd5b6116418161074a565b610e945780604051638014575360e01b815260040161085f919061296a565b610731828260405180602001604052806000815250611d57565b6000611684611d6e565b600084815260208290526040902090915061169f8382612e60565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b60006116e26110e5565b6040805160a0810182526001600160a01b0398891681529688166020808901918252888301978852606089019687529489166080890190815260009a8b5260039384019095529820955186546001600160a01b031990811691891691909117875597516001870180548a16918916919091179055935160028601555090519183019190915551600490910180549093169116179055565b6000611783611d92565b8054909150600119016117a957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b0382166117d9576000604051633250574960e11b815260040161085f919061296a565b60006117e783836000611cbf565b90506001600160a01b03811661181357604051637e27328960e01b81526004810183905260240161085f565b836001600160a01b0316816001600160a01b031614610820578382826040516364283d7b60e01b815260040161085f93929190612ded565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610820908590611db6565b804710156118c8573060405163cd78605960e01b815260040161085f919061296a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611915576040519150601f19603f3d011682016040523d82523d6000602084013e61191a565b606091505b50509050806107df57604051630a12f52160e11b815260040160405180910390fd5b6000611946611d92565b6001905550565b600061195761112e565b90506001600160a01b0383166119825782604051630b61174360e31b815260040161085f919061296a565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6119fd8484846107cb565b61082084848484611e10565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611a35611f27565b6107318282611f4c565b611521611f27565b60606000611a53611d6e565b9050611a5e83611152565b5060008381526020829052604081208054611a7890612cf2565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa490612cf2565b8015611af15780601f10611ac657610100808354040283529160200191611af1565b820191906000526020600020905b815481529060010190602001808311611ad457829003601f168201915b505050505090506000611b0f60408051602081019091526000815290565b90508051600003611b2257509392505050565b815115611b55578082604051602001611b3c929190612f1f565b6040516020818303038152906040529350505050919050565b611b5e85611f7a565b95945050505050565b60006001600160e01b03198216632483248360e11b148061066a575061066a82611fee565b600080611b9761112e565b6000938452600201602052505060409020546001600160a01b031690565b6000611bbf61112e565b90508180611bd557506001600160a01b03831615155b15611c8e576000611be585611152565b90506001600160a01b03841615801590611c115750836001600160a01b0316816001600160a01b031614155b8015611c245750611c2281856110a6565b155b15611c44578360405163a9fbf51f60e01b815260040161085f919061296a565b8215611c8c5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ccc848484612013565b90505b9392505050565b611ce08282610b2e565b61073157808260405163e2517d3f60e01b815260040161085f929190612d49565b611d0a826120a1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d4f576107df82826120fd565b61073161216a565b611d618383612189565b6107df6000848484611e10565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000611dcb6001600160a01b038416836121ee565b90508051600014158015611df0575080806020019051810190611dee9190612d2c565b155b156107df5782604051635274afe760e01b815260040161085f919061296a565b6001600160a01b0383163b1561082057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611e52903390889087908790600401612f4e565b6020604051808303816000875af1925050508015611e8d575060408051601f3d908101601f19168201909252611e8a91810190612f81565b60015b611eed573d808015611ebb576040519150601f19603f3d011682016040523d82523d6000602084013e611ec0565b606091505b508051600003611ee55783604051633250574960e11b815260040161085f919061296a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611f205783604051633250574960e11b815260040161085f919061296a565b5050505050565b611f2f6121fc565b61152157604051631afcd79f60e31b815260040160405180910390fd5b611f54611f27565b6000611f5e61112e565b905080611f6b8482612e60565b50600181016108208382612e60565b6060611f8582611152565b506000611f9d60408051602081019091526000815290565b90506000815111611fbd5760405180602001604052806000815250611ccf565b80611fc784612216565b604051602001611fd8929190612f1f565b6040516020818303038152906040529392505050565b60006001600160e01b0319821663780e9d6360e01b148061066a575061066a826122a8565b6000806120218585856122f8565b90506001600160a01b03811661203f5761203a846123ff565b612062565b846001600160a01b0316816001600160a01b031614612062576120628185612438565b6001600160a01b03851661207e57612079846124d9565b611ccc565b846001600160a01b0316816001600160a01b031614611ccc57611ccc85856125a2565b806001600160a01b03163b6000036120ce5780604051634c9c8ce360e01b815260040161085f919061296a565b60008051602061300483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161211a9190612f9e565b600060405180830381855af49150503d8060008114612155576040519150601f19603f3d011682016040523d82523d6000602084013e61215a565b606091505b5091509150611b5e8583836125fa565b34156115215760405163b398979f60e01b815260040160405180910390fd5b6001600160a01b0382166121b3576000604051633250574960e11b815260040161085f919061296a565b60006121c183836000611cbf565b90506001600160a01b038116156107df5760006040516339e3563760e11b815260040161085f919061296a565b6060611ccf8383600061264d565b6000612206611a09565b54600160401b900460ff16919050565b60606000612223836126ea565b60010190506000816001600160401b0381111561224257612242612a4d565b6040519080825280601f01601f19166020018201604052801561226c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461227657509392505050565b60006001600160e01b031982166380ac58cd60e01b14806122d957506001600160e01b03198216635b5e139f60e01b145b8061066a57506301ffc9a760e01b6001600160e01b031983161461066a565b60008061230361112e565b9050600061231085611b8c565b90506001600160a01b0384161561232c5761232c8185876127c0565b6001600160a01b0381161561236c57612349600086600080611bb5565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b0386161561239d576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b60006124096111c0565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b60006124426111c0565b9050600061244f84610ad6565b60008481526001840160205260409020549091508082146124a4576001600160a01b03851660009081526020848152604080832085845282528083205484845281842081905583526001860190915290208190555b50600092835260018201602090815260408085208590556001600160a01b039095168452918252838320908352905290812055565b60006124e36111c0565b60028101549091506000906124fa90600190612fba565b600084815260038401602052604081205460028501805493945090928490811061252657612526612d62565b906000526020600020015490508084600201838154811061254957612549612d62565b60009182526020808320909101929092558281526003860190915260408082208490558682528120556002840180548061258557612585612fcd565b600190038181906000526020600020016000905590555050505050565b60006125ac6111c0565b9050600060016125bb85610ad6565b6125c59190612fba565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b60608261260f5761260a82612816565b611ccf565b815115801561262657506001600160a01b0384163b155b156126465783604051639996b31560e01b815260040161085f919061296a565b5080611ccf565b606081471015612672573060405163cd78605960e01b815260040161085f919061296a565b600080856001600160a01b0316848660405161268e9190612f9e565b60006040518083038185875af1925050503d80600081146126cb576040519150601f19603f3d011682016040523d82523d6000602084013e6126d0565b606091505b50915091506126e08683836125fa565b9695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106127295772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612753576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061277157662386f26fc10000830492506010015b6305f5e1008310612789576305f5e100830492506008015b612710831061279d57612710830492506004015b606483106127af576064830492506002015b600a831061066a5760010192915050565b6127cb83838361283f565b6107df576001600160a01b0383166127f957604051637e27328960e01b81526004810182905260240161085f565b818160405163177e802f60e01b815260040161085f929190612d49565b8051156128265780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006001600160a01b03831615801590611ccc5750826001600160a01b0316846001600160a01b03161480612879575061287984846110a6565b80611ccc5750826001600160a01b03166128928361118a565b6001600160a01b031614949350505050565b6000602082840312156128b657600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b031981168114610e9457600080fd5b6000602082840312156128fc57600080fd5b8135611ccf816128d4565b60005b8381101561292257818101518382015260200161290a565b50506000910152565b60008151808452612943816020860160208601612907565b601f01601f19169290920160200192915050565b602081526000611ccf602083018461292b565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610e9457600080fd5b600080604083850312156129a657600080fd5b82356129b18161297e565b946020939093013593505050565b6000602082840312156129d157600080fd5b8135611ccf8161297e565b6000806000606084860312156129f157600080fd5b83356129fc8161297e565b92506020840135612a0c8161297e565b929592945050506040919091013590565b60008060408385031215612a3057600080fd5b823591506020830135612a428161297e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115612a7d57612a7d612a4d565b604051601f8501601f19908116603f01168101908282118183101715612aa557612aa5612a4d565b81604052809350858152868686011115612abe57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612ae957600080fd5b611ccf83833560208501612a63565b60008060408385031215612b0b57600080fd5b8235612b168161297e565b915060208301356001600160401b03811115612b3157600080fd5b612b3d85828601612ad8565b9150509250929050565b600080600080600060a08688031215612b5f57600080fd5b8535612b6a8161297e565b945060208601356001600160401b03811115612b8557600080fd5b8601601f81018813612b9657600080fd5b612ba588823560208401612a63565b94505060408601359250606086013591506080860135612bc48161297e565b809150509295509295909350565b8015158114610e9457600080fd5b60008060408385031215612bf357600080fd5b8235612bfe8161297e565b91506020830135612a4281612bd2565b60008060008060808587031215612c2457600080fd5b8435612c2f8161297e565b93506020850135612c3f8161297e565b92506040850135915060608501356001600160401b03811115612c6157600080fd5b612c6d87828801612ad8565b91505092959194509250565b600080600060608486031215612c8e57600080fd5b8335612c998161297e565b92506020840135612ca98161297e565b91506040840135612cb98161297e565b809150509250925092565b60008060408385031215612cd757600080fd5b8235612ce28161297e565b91506020830135612a428161297e565b600181811c90821680612d0657607f821691505b602082108103612d2657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612d3e57600080fd5b8151611ccf81612bd2565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561066a5761066a612d78565b600060018201612db357612db3612d78565b5060010190565b6001600160a01b0392831681529116602082015260400190565b600060208284031215612de657600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b601f8211156107df576000816000526020600020601f850160051c81016020861015612e395750805b601f850160051c820191505b81811015612e5857828155600101612e45565b505050505050565b81516001600160401b03811115612e7957612e79612a4d565b612e8d81612e878454612cf2565b84612e10565b602080601f831160018114612ec25760008415612eaa5750858301515b600019600386901b1c1916600185901b178555612e58565b600085815260208120601f198616915b82811015612ef157888601518255948401946001909101908401612ed2565b5085821015612f0f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351612f31818460208801612907565b835190830190612f45818360208801612907565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906126e09083018461292b565b600060208284031215612f9357600080fd5b8151611ccf816128d4565b60008251612fb0818460208701612907565b9190910192915050565b8181038181111561066a5761066a612d78565b634e487b7160e01b600052603160045260246000fdfe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4a26469706673582212204eba32bccdf4e5ab2c63c1be3831fcea7f42a3e966ea8a76ea234f99d9a02c6b64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x19E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x4FDD3C EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xE75C1A8 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0x2EDF5E2C EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x41431908 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x516A82B8 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x5D4BADB2 EQ PUSH2 0x43D JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x96591EDD EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4FA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x54B JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0x58B JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x600 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C3 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x622 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP3 SWAP2 SWAP1 PUSH2 0x28BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x28EA JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0x670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x2957 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x711 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x2993 JUMP JUMPDEST PUSH2 0x726 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x2B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x74A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x7C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x2EE CALLDATASIZE PUSH1 0x4 PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x30E CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x7E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3024 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x804 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x2993 JUMP JUMPDEST PUSH2 0x826 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x891 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0x8C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x29DC JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST PUSH2 0x279 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF8 JUMP JUMPDEST PUSH2 0x917 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x932 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x423 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x993 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x9C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x458 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x9DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x478 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0xACB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH2 0x498 CALLDATASIZE PUSH1 0x4 PUSH2 0x29BF JUMP JUMPDEST PUSH2 0xAD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0xB2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0xB64 JUMP JUMPDEST PUSH2 0x279 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0xB81 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x506 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x515 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE0 JUMP JUMPDEST PUSH2 0xE97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C0E JUMP JUMPDEST PUSH2 0xEA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x586 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C79 JUMP JUMPDEST PUSH2 0xEB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x597 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH2 0x1064 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH2 0x5BB CALLDATASIZE PUSH1 0x4 PUSH2 0x28A4 JUMP JUMPDEST PUSH2 0x107F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1D JUMP JUMPDEST PUSH2 0x108A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FA PUSH2 0x5FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x290 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x62F PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP5 KECCAK256 SWAP4 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x66A DUP3 PUSH2 0x1109 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x67C PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x68D SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6B9 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x706 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6DB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x706 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71C DUP3 PUSH2 0x1152 JUMP JUMPDEST POP PUSH2 0x66A DUP3 PUSH2 0x118A JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 CALLER PUSH2 0x11B3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x740 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x754 PUSH2 0x1064 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x77F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x66A SWAP2 SWAP1 PUSH2 0x2D2C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x740 PUSH2 0x11C0 JUMP JUMPDEST PUSH2 0x7D4 DUP2 PUSH2 0x11E4 JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH2 0x12C4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EF PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x80D DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x816 DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x820 DUP4 DUP4 PUSH2 0x1363 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x831 PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x83C DUP5 PUSH2 0xAD6 JUMP JUMPDEST DUP4 LT PUSH2 0x868 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE SWAP1 SWAP3 MSTORE KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x8BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7DF DUP3 DUP3 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8CF DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8D9 PUSH2 0x10E5 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x91F PUSH2 0x147C JUMP JUMPDEST PUSH2 0x928 DUP3 PUSH2 0x1523 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x153B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93D PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x947 PUSH2 0x7C0 JUMP JUMPDEST DUP4 LT PUSH2 0x96B JUMPI PUSH1 0x0 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x980 JUMPI PUSH2 0x980 PUSH2 0x2D62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3024 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x9AB DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B5 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CA PUSH2 0x15EF JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH2 0x9E7 DUP2 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x9F0 DUP7 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0xA0C DUP2 TIMESTAMP PUSH2 0x2D8E JUMP JUMPDEST DUP7 GT PUSH2 0xA35 JUMPI PUSH1 0x40 MLOAD PUSH4 0x999F7D7 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 PUSH2 0xA48 DUP4 PUSH2 0x2DA1 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE SWAP1 POP PUSH2 0xA58 CALLER DUP3 PUSH2 0x1660 JUMP JUMPDEST PUSH2 0xA62 DUP2 DUP10 PUSH2 0x167A JUMP JUMPDEST PUSH2 0xA70 DUP2 DUP11 CALLER DUP11 DUP11 DUP11 PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 DUP5 ADD MSTORE SWAP2 MLOAD CALLER SWAP3 DUP13 AND SWAP2 DUP5 SWAP2 PUSH32 0x80336FA715077C3EAC32C02D3302E437DABF25774B2068D72D0D2A928643C471 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x66A DUP3 PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAE1 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB0D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB39 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xB70 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x68D SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH2 0xB89 PUSH2 0x1779 JUMP JUMPDEST CALLER PUSH2 0xB93 DUP2 PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB9D PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xA0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP6 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 SWAP3 POP CALLER EQ PUSH2 0xC20 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x2663A9C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBA JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD TIMESTAMP GT ISZERO PUSH2 0xC56 JUMPI DUP4 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x293D73B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC61 DUP6 PUSH2 0xACB JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCA0 JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x103D1459 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x28BD JUMP JUMPDEST PUSH2 0xCAF DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x17AF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP1 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD DUP3 AND SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP5 SWAP1 SSTORE SWAP2 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD14 JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x60 ADD MLOAD GT JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0xD4E SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD8F SWAP2 SWAP1 PUSH2 0x2DD4 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x60 ADD MLOAD DUP2 LT ISZERO PUSH2 0xDDE JUMPI PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x246FB689 PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x85F JUMP JUMPDEST PUSH2 0xE0A CALLER DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x184B SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0xE5B JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD CALLVALUE EQ PUSH2 0xE43 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1456115 PUSH1 0xE2 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0xE5B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH2 0x18A5 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP7 SWAP1 PUSH32 0xA751FB02C318279A22135A408663AE08EA45EAFA950A4351C14AE543CBB95040 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP PUSH2 0xE94 PUSH2 0x193C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x731 CALLER DUP4 DUP4 PUSH2 0x194D JUMP JUMPDEST PUSH2 0xEAB DUP3 PUSH2 0x11E4 JUMP JUMPDEST PUSH2 0x820 DUP5 DUP5 DUP5 DUP5 PUSH2 0x19F2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC1 PUSH2 0x1A09 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xF04 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xF12 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xF59 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xFA3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x2137B7B5B4B733AA37B5B2B7 PUSH1 0xA1 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x5452495 PUSH1 0xE4 SHL DUP2 MSTORE POP PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0xFAB PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFB3 PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFBB PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFC3 PUSH2 0x1A3F JUMP JUMPDEST PUSH2 0xFCE PUSH1 0x0 DUP9 PUSH2 0x1363 JUMP JUMPDEST POP PUSH2 0xFE7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x1363 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xFF2 PUSH2 0x10E5 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR DUP2 SSTORE PUSH1 0x3C PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH2 0x105A JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x106F PUSH2 0x10E5 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x66A DUP3 PUSH2 0x1A47 JUMP JUMPDEST PUSH2 0x1093 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x109C DUP2 PUSH2 0x1359 JUMP JUMPDEST PUSH2 0x820 DUP4 DUP4 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10B1 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP7 AND DUP3 MSTORE SWAP4 SWAP1 SWAP4 MSTORE POP POP KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x9DB9D405BF15683CE835607B1F0B423DC1484D44BB9D5AF64A483FA4AFD82900 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x1B67 JUMP JUMPDEST PUSH32 0x80BB2B638CC20BC4D0A60D66940F3AB4A00C1D7B313497CA82FB0B4AB0079300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x115E DUP4 PUSH2 0x1B8C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x66A JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1195 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH32 0x645E039705490088DAAD89BAE25049A34F4A9072D398537B1AB2425F24CBED00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11EE PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xA0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP3 ADD SLOAD SWAP5 DUP2 ADD DUP6 SWAP1 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 ADD SLOAD AND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 SWAP3 POP TIMESTAMP GT PUSH2 0x126C JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x85F SWAP2 DUP6 SWAP2 PUSH1 0x4 ADD PUSH2 0x28BD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x7DF JUMPI POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP3 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD DUP3 AND SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP5 SWAP1 SSTORE SWAP2 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12EE JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12FB DUP4 DUP4 CALLER PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x820 JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH2 0xE94 DUP2 CALLER PUSH2 0x1CD6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x136E PUSH2 0x1335 JUMP JUMPDEST SWAP1 POP PUSH2 0x137A DUP5 DUP5 PUSH2 0xB2E JUMP JUMPDEST PUSH2 0x13FA JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x13B0 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140F PUSH2 0x1335 JUMP JUMPDEST SWAP1 POP PUSH2 0x141B DUP5 DUP5 PUSH2 0xB2E JUMP JUMPDEST ISZERO PUSH2 0x13FA JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x66A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1503 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14F7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2FE4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x731 DUP2 PUSH2 0x1359 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1595 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1592 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2DD4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x15B4 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST PUSH2 0x7DF DUP4 DUP4 PUSH2 0x1D01 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1641 DUP2 PUSH2 0x74A JUMP JUMPDEST PUSH2 0xE94 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x80145753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1D57 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1684 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x169F DUP4 DUP3 PUSH2 0x2E60 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E2 PUSH2 0x10E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP1 DUP10 ADD SWAP2 DUP3 MSTORE DUP9 DUP4 ADD SWAP8 DUP9 MSTORE PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE SWAP5 DUP10 AND PUSH1 0x80 DUP10 ADD SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x3 SWAP4 DUP5 ADD SWAP1 SWAP6 MSTORE SWAP9 KECCAK256 SWAP6 MLOAD DUP7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 OR DUP8 SSTORE SWAP8 MLOAD PUSH1 0x1 DUP8 ADD DUP1 SLOAD DUP11 AND SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP4 MLOAD PUSH1 0x2 DUP7 ADD SSTORE POP SWAP1 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE MLOAD PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1783 PUSH2 0x1D92 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17D9 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E7 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1813 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x820 JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x820 SWAP1 DUP6 SWAP1 PUSH2 0x1DB6 JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x18C8 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1915 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x191A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1946 PUSH2 0x1D92 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1957 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1982 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x19FD DUP5 DUP5 DUP5 PUSH2 0x7CB JUMP JUMPDEST PUSH2 0x820 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1E10 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x1A35 PUSH2 0x1F27 JUMP JUMPDEST PUSH2 0x731 DUP3 DUP3 PUSH2 0x1F4C JUMP JUMPDEST PUSH2 0x1521 PUSH2 0x1F27 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1A53 PUSH2 0x1D6E JUMP JUMPDEST SWAP1 POP PUSH2 0x1A5E DUP4 PUSH2 0x1152 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x1A78 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1AA4 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1AF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1AD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x1B0F PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1B22 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1B55 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1B3C SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B5E DUP6 PUSH2 0x1F7A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x1FEE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B97 PUSH2 0x112E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x1BD5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1C8E JUMPI PUSH1 0x0 PUSH2 0x1BE5 DUP6 PUSH2 0x1152 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C11 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1C24 JUMPI POP PUSH2 0x1C22 DUP2 DUP6 PUSH2 0x10A6 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1C44 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST DUP3 ISZERO PUSH2 0x1C8C JUMPI DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CCC DUP5 DUP5 DUP5 PUSH2 0x2013 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1CE0 DUP3 DUP3 PUSH2 0xB2E JUMP JUMPDEST PUSH2 0x731 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST PUSH2 0x1D0A DUP3 PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x1D4F JUMPI PUSH2 0x7DF DUP3 DUP3 PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x731 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x1D61 DUP4 DUP4 PUSH2 0x2189 JUMP JUMPDEST PUSH2 0x7DF PUSH1 0x0 DUP5 DUP5 DUP5 PUSH2 0x1E10 JUMP JUMPDEST PUSH32 0x542A41881EE128A365A727B282C86FA859579490B9BB45AAB8503648C8E7900 SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x21EE JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x1DF0 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1DEE SWAP2 SWAP1 PUSH2 0x2D2C JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x7DF JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x820 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1E52 SWAP1 CALLER SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1E8D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1E8A SWAP2 DUP2 ADD SWAP1 PUSH2 0x2F81 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1EED JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x1EBB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x1EE5 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1F20 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F2F PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F54 PUSH2 0x1F27 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F5E PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1F6B DUP5 DUP3 PUSH2 0x2E60 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD PUSH2 0x820 DUP4 DUP3 PUSH2 0x2E60 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F85 DUP3 PUSH2 0x1152 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1F9D PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x1FBD JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1CCF JUMP JUMPDEST DUP1 PUSH2 0x1FC7 DUP5 PUSH2 0x2216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1FD8 SWAP3 SWAP2 SWAP1 PUSH2 0x2F1F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x66A JUMPI POP PUSH2 0x66A DUP3 PUSH2 0x22A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2021 DUP6 DUP6 DUP6 PUSH2 0x22F8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x203F JUMPI PUSH2 0x203A DUP5 PUSH2 0x23FF JUMP JUMPDEST PUSH2 0x2062 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2062 JUMPI PUSH2 0x2062 DUP2 DUP6 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x207E JUMPI PUSH2 0x2079 DUP5 PUSH2 0x24D9 JUMP JUMPDEST PUSH2 0x1CCC JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CCC JUMPI PUSH2 0x1CCC DUP6 DUP6 PUSH2 0x25A2 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x20CE JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3004 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x211A SWAP2 SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2155 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x215A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1B5E DUP6 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1521 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x21B3 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21C1 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1CBF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1CCF DUP4 DUP4 PUSH1 0x0 PUSH2 0x264D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2206 PUSH2 0x1A09 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2223 DUP4 PUSH2 0x26EA JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2242 JUMPI PUSH2 0x2242 PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x226C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x2276 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x22D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x66A JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x66A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2303 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2310 DUP6 PUSH2 0x1B8C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x232C JUMPI PUSH2 0x232C DUP2 DUP6 DUP8 PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x236C JUMPI PUSH2 0x2349 PUSH1 0x0 DUP7 PUSH1 0x0 DUP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x239D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP9 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2409 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2442 PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x244F DUP5 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP1 DUP3 EQ PUSH2 0x24A4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP5 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD DUP5 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x1 DUP7 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST POP PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP5 MSTORE SWAP2 DUP3 MSTORE DUP4 DUP4 KECCAK256 SWAP1 DUP4 MSTORE SWAP1 MSTORE SWAP1 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E3 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x24FA SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2FBA JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x2526 JUMPI PUSH2 0x2526 PUSH2 0x2D62 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2549 JUMPI PUSH2 0x2549 PUSH2 0x2D62 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x3 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP7 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x2 DUP5 ADD DUP1 SLOAD DUP1 PUSH2 0x2585 JUMPI PUSH2 0x2585 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25AC PUSH2 0x11C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH2 0x25BB DUP6 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x25C5 SWAP2 SWAP1 PUSH2 0x2FBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 SWAP1 SSTORE SWAP5 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SWAP1 SWAP3 MSTORE POP KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x260F JUMPI PUSH2 0x260A DUP3 PUSH2 0x2816 JUMP JUMPDEST PUSH2 0x1CCF JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2626 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2646 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST POP DUP1 PUSH2 0x1CCF JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x2672 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x268E SWAP2 SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26D0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x26E0 DUP7 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x2729 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 LT PUSH2 0x2753 JUMPI PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x2771 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x2789 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x279D JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x27AF JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x66A JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x27CB DUP4 DUP4 DUP4 PUSH2 0x283F JUMP JUMPDEST PUSH2 0x7DF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x85F JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x85F SWAP3 SWAP2 SWAP1 PUSH2 0x2D49 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2826 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CCC JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2879 JUMPI POP PUSH2 0x2879 DUP5 DUP5 PUSH2 0x10A6 JUMP JUMPDEST DUP1 PUSH2 0x1CCC JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2892 DUP4 PUSH2 0x118A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CCF DUP2 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2922 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x290A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2943 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1CCF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x292B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x29B1 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CCF DUP2 PUSH2 0x297E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29FC DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A0C DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH2 0x2A7D JUMPI PUSH2 0x2A7D PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2AA5 JUMPI PUSH2 0x2AA5 PUSH2 0x2A4D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CCF DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2A63 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B16 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B3D DUP6 DUP3 DUP7 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2B6A DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x1F DUP2 ADD DUP9 SGT PUSH2 0x2B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BA5 DUP9 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2A63 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2BC4 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2BFE DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x2BD2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2C2F DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2C3F DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6D DUP8 DUP3 DUP9 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2C99 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CA9 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2CB9 DUP2 PUSH2 0x297E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CE2 DUP2 PUSH2 0x297E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A42 DUP2 PUSH2 0x297E JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D06 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2D26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CCF DUP2 PUSH2 0x2BD2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x66A JUMPI PUSH2 0x66A PUSH2 0x2D78 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2DB3 JUMPI PUSH2 0x2DB3 PUSH2 0x2D78 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x2E39 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E58 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2E45 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E79 JUMPI PUSH2 0x2E79 PUSH2 0x2A4D JUMP JUMPDEST PUSH2 0x2E8D DUP2 PUSH2 0x2E87 DUP5 SLOAD PUSH2 0x2CF2 JUMP JUMPDEST DUP5 PUSH2 0x2E10 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2EC2 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2EAA JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2E58 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2EF1 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x2ED2 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2F0F JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x2F31 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x2907 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x2F45 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x2907 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x26E0 SWAP1 DUP4 ADD DUP5 PUSH2 0x292B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CCF DUP2 PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2FB0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2907 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x66A JUMPI PUSH2 0x66A PUSH2 0x2D78 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC3AE8648B97D3FD425D2628 PUSH16 0xC6BB1D50724A93A6A5763921DD2B9040 GAS DUP4 0xB4 LOG4 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E 0xBA ORIGIN 0xBC 0xCD DELEGATECALL 0xE5 0xAB 0x2C PUSH4 0xC1BE3831 0xFC 0xEA PUSH32 0x42A3E966EA8A76EA234F99D9A02C6B64736F6C63430008180033000000000000 ", + "sourceMap": "1637:17381:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16546:265;;;;;;;;;;-1:-1:-1;16546:265:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;18720:296;;;;;;;;;;-1:-1:-1;18720:296:44;;;;;:::i;:::-;;:::i;:::-;;;1044:14:55;;1037:22;1019:41;;1007:2;992:18;18720:296:44;879:187:55;3546:146:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4792:154::-;;;;;;;;;;-1:-1:-1;4792:154:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4618:113::-;;;;;;;;;;-1:-1:-1;4618:113:4;;;;;:::i;:::-;;:::i;:::-;;16218:191:44;;;;;;;;;;;;;:::i;:::-;;;2637:25:55;;;2625:2;2610:18;16218:191:44;2491:177:55;14671:148:44;;;;;;;;;;-1:-1:-1;14671:148:44;;;;;:::i;:::-;;:::i;3048:179:5:-;;;;;;;;;;;;;:::i;17118:268:44:-;;;;;;;;;;-1:-1:-1;17118:268:44;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;2373:90:44:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2373:90:44;;5246:136:0;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;2645:332:5:-;;;;;;;;;;-1:-1:-1;2645:332:5;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;15240:184:44:-;;;;;;;;;;-1:-1:-1;15240:184:44;;;;;:::i;:::-;;:::i;6139:132:4:-;;;;;;;;;;-1:-1:-1;6139:132:4;;;;;:::i;:::-;;:::i;4158:214:3:-;;;;;;:::i;:::-;;:::i;3299:303:5:-;;;;;;;;;;-1:-1:-1;3299:303:5;;;;;:::i;:::-;;:::i;15847:274:44:-;;;;;;;;;;-1:-1:-1;15847:274:44;;;;;:::i;:::-;;:::i;3705:134:3:-;;;;;;;;;;;;;:::i;8814:1210:44:-;;;;;;;;;;-1:-1:-1;8814:1210:44;;;;;:::i;:::-;;:::i;3366:118:4:-;;;;;;;;;;-1:-1:-1;3366:118:4;;;;;:::i;:::-;;:::i;3044:265::-;;;;;;;;;;-1:-1:-1;3044:265:4;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;3756:150:4:-;;;;;;;;;;;;;:::i;10472:2561:44:-;;;;;;:::i;:::-;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;5013:144:4;;;;;;;;;;-1:-1:-1;5013:144:4;;;;;:::i;:::-;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;17524:339:44;;;;;;;;;;-1:-1:-1;17524:339:44;;;;;:::i;:::-;;:::i;7512:529::-;;;;;;;;;;-1:-1:-1;7512:529:44;;;;;:::i;:::-;;:::i;15494:160::-;;;;;;;;;;;;;:::i;18525:189::-;;;;;;;;;;-1:-1:-1;18525:189:44;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;5223:210:4:-;;;;;;;;;;-1:-1:-1;5223:210:4;;;;;:::i;:::-;;:::i;2198:66:44:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2198:66:44;;16546:265;16613:13;16628:19;16659:29;16691:25;:23;:25::i;:::-;16734:24;;;;:15;;;;:24;;;;;;:30;;;;16766:37;;;;;16734:30;;-1:-1:-1;;;;;16766:37:44;;;;16546:265;-1:-1:-1;;;16546:265:44:o;18720:296::-;18946:4;18973:36;18997:11;18973:23;:36::i;:::-;18966:43;18720:296;-1:-1:-1;;18720:296:44:o;3546:146:4:-;3591:13;3616:23;3642:19;:17;:19::i;:::-;3616:45;;3678:1;:7;;3671:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3546:146;:::o;4792:154::-;4859:7;4878:22;4892:7;4878:13;:22::i;:::-;;4918:21;4931:7;4918:12;:21::i;4618:113::-;4689:35;4698:2;4702:7;966:10:7;4689:8:4;:35::i;:::-;4618:113;;:::o;16218:191:44:-;16280:7;16299:29;16331:25;:23;:25::i;:::-;16373:29;;;;16218:191;-1:-1:-1;;16218:191:44:o;14671:148::-;14730:4;14771:19;:17;:19::i;:::-;-1:-1:-1;;;;;14753:50:44;;14804:7;14753:59;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3048:179:5:-;3100:7;3119:33;3155:29;:27;:29::i;17118:268:44:-;17306:26;17324:7;17306:17;:26::i;:::-;17342:37;17361:4;17367:2;17371:7;17342:18;:37::i;:::-;17118:268;;;:::o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;2645:332:5:-;2733:7;2752:33;2788:29;:27;:29::i;:::-;2752:65;;2840:16;2850:5;2840:9;:16::i;:::-;2831:5;:25;2827:99;;2902:5;2909;2879:36;;-1:-1:-1;;;2879:36:5;;;;;;;;;:::i;:::-;;;;;;;;2827:99;-1:-1:-1;;;;;2942:21:5;;:14;:21;;;;;;;;;;;:28;;;;;;;;;-1:-1:-1;2645:332:5;;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;15240:184:44:-;2362:4:0;3191:16;2362:4;3191:10;:16::i;:::-;15330:29:44::1;15362:25;:23;:25::i;:::-;15397:20:::0;;-1:-1:-1;;;;;;15397:20:44::1;-1:-1:-1::0;;;;;15397:20:44;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;15240:184:44:o;6139:132:4:-;6225:39;6242:4;6248:2;6252:7;6225:39;;;;;;;;;;;;:16;:39::i;4158:214:3:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;3299:303:5:-:0;3365:7;3384:33;3420:29;:27;:29::i;:::-;3384:65;;3472:13;:11;:13::i;:::-;3463:5;:22;3459:101;;3539:1;3543:5;3508:41;;-1:-1:-1;;;3508:41:5;;;;;;;;;:::i;3459:101::-;3576:1;:12;;3589:5;3576:19;;;;;;;;:::i;:::-;;;;;;;;;3569:26;;;3299:303;;;:::o;15847:274:44:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15989:29:44::1;16021:25;:23;:25::i;:::-;16056:29;;:58:::0;;;;-1:-1:-1;;15847:274:44:o;3705:134:3:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:3;:::o;8814:1210:44:-;9019:10;7290:25;7307:7;7290:16;:25::i;:::-;9091:29:::1;9108:11;9091:16;:29::i;:::-;9131;9163:25;:23;:25::i;:::-;9350:29;::::0;::::1;::::0;9131:57;;-1:-1:-1;9418:44:44::1;9350:29:::0;9418:15:::1;:44;:::i;:::-;9395:19;:68;9389:184;;9487:75;::::0;-1:-1:-1;;;9487:75:44;;::::1;::::0;::::1;9999:25:55::0;;;10040:18;;;10033:34;;;9972:18;;9487:75:44::1;9825:248:55::0;9389:184:44::1;9635:14;::::0;::::1;:16:::0;;9617:15:::1;::::0;;9635:16:::1;::::0;::::1;:::i;:::-;;;;;9617:34;;9718:30;9728:10;9740:7;9718:9;:30::i;:::-;9758:26;9771:7;9780:3;9758:12;:26::i;:::-;9828:84;9837:7;9846:11;9859:10;9871:19;9892:5;9899:12;9828:8;:84::i;:::-;9928:89;::::0;;10435:25:55;;;10491:2;10476:18;;10469:34;;;-1:-1:-1;;;;;10539:32:55;;;10519:18;;;10512:60;9928:89:44;;9964:10:::1;::::0;9928:89;::::1;::::0;9942:7;;9928:89:::1;::::0;;;;10423:2:55;9928:89:44;;::::1;9031:993;;;8814:1210:::0;;;;;;:::o;3366:118:4:-;3429:7;3455:22;3469:7;3455:13;:22::i;3044:265::-;3107:7;3126:23;3152:19;:17;:19::i;:::-;3126:45;-1:-1:-1;;;;;;3185:19:4;;3181:87;;3254:1;3227:30;;-1:-1:-1;;;3227:30:4;;;;;;;;:::i;3181:87::-;-1:-1:-1;;;;;3284:18:4;;;;;;;:11;;;;:18;;-1:-1:-1;3284:18:4;;;;;3044:265::o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;3756:150:4:-;3803:13;3828:23;3854:19;:17;:19::i;:::-;3828:45;;3890:1;:9;;3883:16;;;;;:::i;10472:2561:44:-;3251:21:9;:19;:21::i;:::-;10559:10:44::1;7290:25;7307:7;7290:16;:25::i;:::-;10581:29:::2;10613:25;:23;:25::i;:::-;10694:35;10732:24:::0;;;:15:::2;::::0;;::::2;:24;::::0;;;;;;;;10694:62;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;10694:62:44;;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;;;;::::2;::::0;;;;;::::2;;::::0;;;::::2;::::0;;;;10581:57;;-1:-1:-1;10855:10:44::2;10828:37;10824:131;;10908:23:::0;;10888:56:::2;::::0;-1:-1:-1;;;10888:56:44;;::::2;::::0;10908:23;10933:10:::2;::::0;10888:56:::2;;;:::i;10824:131::-;11025:11;:31;;;11007:15;:49;11003:147;;;11098:7;11107:11;:31;;;11079:60;;-1:-1:-1::0;;;11079:60:44::2;;;;;;;;9999:25:55::0;;;10055:2;10040:18;;10033:34;9987:2;9972:18;;9825:248;11003:147:44::2;11208:13;11224:16;11232:7;11224;:16::i;:::-;11208:32;;11263:11;:20;;;-1:-1:-1::0;;;;;11254:29:44::2;:5;-1:-1:-1::0;;;;;11254:29:44::2;;11250:116;;11334:20;::::0;::::2;::::0;11306:49:::2;::::0;-1:-1:-1;;;11306:49:44;;::::2;::::0;11325:7;;11306:49:::2;;;:::i;11250:116::-;11598:52;11608:11;:20;;;11630:10;11642:7;11598:9;:52::i;:::-;11702:24;::::0;;;:15:::2;::::0;;::::2;:24;::::0;;;;11695:31;;-1:-1:-1;;;;;;11695:31:44;;::::2;::::0;;;;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;;11786:24:::2;::::0;::::2;::::0;-1:-1:-1;;;;;11778:47:44::2;::::0;;::::2;::::0;:72:::2;;;11849:1;11829:11;:17;;;:21;11778:72;11774:1183;;;12176:24;::::0;::::2;::::0;:61:::2;::::0;-1:-1:-1;;;12176:61:44;;12156:17:::2;::::0;-1:-1:-1;;;;;12176:34:44::2;::::0;::::2;::::0;:61:::2;::::0;12211:10:::2;::::0;12231:4:::2;::::0;12176:61:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12156:81;;12267:11;:17;;;12255:9;:29;12251:164;;;12345:24;::::0;::::2;::::0;12371:17:::2;::::0;::::2;::::0;12311:89:::2;::::0;-1:-1:-1;;;12311:89:44;;12333:10:::2;12311:89;::::0;::::2;11644:34:55::0;-1:-1:-1;;;;;11714:15:55;;;11694:18;;;11687:43;11746:18;;;11739:34;11789:18;;;11782:34;;;11578:19;;12311:89:44::2;11360:462:55::0;12251:164:44::2;12493:94;12535:10;12547:11;:20;;;12569:11;:17;;;12493:11;:24;;;-1:-1:-1::0;;;;;12493:41:44::2;;;:94;;;;;;:::i;:::-;11852:746;11774:1183;;;12731:11;:17;;;12718:9;:30;12714:120;;12801:17;::::0;::::2;::::0;12775:44:::2;::::0;-1:-1:-1;;;12775:44:44;;12790:9:::2;12775:44;::::0;::::2;9999:25:55::0;10040:18;;;10033:34;;;;9972:18;;12775:44:44::2;9825:248:55::0;12714:120:44::2;12904:20;::::0;::::2;::::0;12896:50:::2;::::0;-1:-1:-1;;;;;12896:39:44::2;12936:9;12896:39;:50::i;:::-;12994:32;::::0;13015:10:::2;::::0;13006:7;;12994:32:::2;::::0;;;::::2;10571:2462;;;3282:1:9::1;3293:20:::0;:18;:20::i;:::-;10472:2561:44;:::o;5013:144:4:-;5098:52;966:10:7;5131:8:4;5141;5098:18;:52::i;17524:339:44:-;17773:26;17791:7;17773:17;:26::i;:::-;17809:47;17832:4;17838:2;17842:7;17851:4;17809:22;:47::i;7512:529::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;7618:37:44::1;;;;;;;;;;;;;;-1:-1:-1::0;;;7618:37:44::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;7618:37:44::1;;::::0;:13:::1;:37::i;:::-;7665:25;:23;:25::i;:::-;7700;:23;:25::i;:::-;7735:22;:20;:22::i;:::-;7767:24;:22;:24::i;:::-;7802:44;2362:4:0;7833:12:44::0;7802:10:::1;:44::i;:::-;;7856:35;-1:-1:-1::0;;;;;;;;;;;7882:8:44::1;7856:10;:35::i;:::-;;7902:29;7934:25;:23;:25::i;:::-;7970:20:::0;;-1:-1:-1;;;;;;7970:20:44::1;-1:-1:-1::0;;;;;7970:20:44;::::1;;::::0;;8032:2:::1;8000:29;::::0;;::::1;:34:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;11980:50:55;;5142:14:2;;11968:2:55;11953:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;7512:529:44;;;:::o;15494:160::-;15544:7;15563:29;15595:25;:23;:25::i;:::-;15637:10;-1:-1:-1;;;;;15637:10:44;;15494:160;-1:-1:-1;;15494:160:44:o;18525:189::-;18652:13;18684:23;18699:7;18684:14;:23::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5223:210:4:-:0;5311:4;5327:23;5353:19;:17;:19::i;:::-;-1:-1:-1;;;;;5389:27:4;;;;;;;:20;;;;;:27;;;;;;;;:37;;;;;;;;;;-1:-1:-1;;5389:37:4;;;;;5223:210::o;3851:174:44:-;3982:27;;3851:174::o;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;;3602:36;3626:11;3602:23;:36::i;1958:156:4:-;2077:21;;1958:156::o;17836:241::-;17899:7;17918:13;17934:17;17943:7;17934:8;:17::i;:::-;17918:33;-1:-1:-1;;;;;;17965:19:4;;17961:88;;18007:31;;-1:-1:-1;;;18007:31:4;;;;;2637:25:55;;;2610:18;;18007:31:4;2491:177:55;7347:184:4;7417:7;7436:23;7462:19;:17;:19::i;:::-;7498:26;;;;:17;;:26;;-1:-1:-1;;7498:26:4;;;;-1:-1:-1;;;;;7498:26:4;;7347:184::o;16002:120::-;16082:33;16091:2;16095:7;16104:4;16110;16082:8;:33::i;1581:186:5:-;1720:31;;1581:186::o;13604:891:44:-;13667:29;13699:25;:23;:25::i;:::-;13734:35;13772:24;;;:15;;;;:24;;;;;;;;;13734:62;;;;;;;;;-1:-1:-1;;;;;13734:62:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13667:57;;-1:-1:-1;14135:15:44;:50;14131:358;;14274:23;;14249:49;;-1:-1:-1;;;14249:49:44;;;;14265:7;;14249:49;;;:::i;14131:358::-;14319:23;;-1:-1:-1;;;;;14319:37:44;;14315:174;;-1:-1:-1;14454:24:44;;;;:15;;;;:24;;;;;14447:31;;-1:-1:-1;;;;;;14447:31:44;;;;;-1:-1:-1;14447:31:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13604:891::o;5495:578:4:-;-1:-1:-1;;;;;5589:16:4;;5585:87;;5658:1;5628:33;;-1:-1:-1;;;5628:33:4;;;;;;;;:::i;5585:87::-;5890:21;5914:34;5922:2;5926:7;966:10:7;5914:7:4;:34::i;:::-;5890:58;;5979:4;-1:-1:-1;;;;;5962:21:4;:13;-1:-1:-1;;;;;5962:21:4;;5958:109;;6027:4;6033:7;6042:13;6006:50;;-1:-1:-1;;;6006:50:4;;;;;;;;;;:::i;2787:177:0:-;2920:28;;2787:177::o;4148:103::-;4214:30;4225:4;966:10:7;4214::0;:30::i;7270:387::-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4599:312:3;4679:4;-1:-1:-1;;;;;4688:6:3;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:3;:32;-1:-1:-1;;;;;;;;;;;2035:53:19;-1:-1:-1;;;;;2035:53:19;;1957:138;4749:32:3;-1:-1:-1;;;;;4749:42:3;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:3;;;;;;;;;;;4654:251;4599:312::o;8128:98:44:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6052:538:3:-;6169:17;-1:-1:-1;;;;;6151:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:3;;;;;;;;-1:-1:-1;;6151:52:3;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:3;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:3;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:3;;;;;2637:25:55;;;2610:18;;6312:34:3;2491:177:55;6241:120:3;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:3;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:3;;;;;;;;;;;14964:153:44;15036:20;15048:7;15036:11;:20::i;:::-;15031:80;;15092:7;15079:21;;-1:-1:-1;;;15079:21:44;;;;;;;;:::i;12217:100:4:-;12284:26;12294:2;12298:7;12284:26;;;;;;;;;;;;:9;:26::i;2916:244:6:-;3007:33;3043:29;:27;:29::i;:::-;3082:12;:21;;;;;;;;;;3007:65;;-1:-1:-1;3082:33:6;3106:9;3082:21;:33;:::i;:::-;-1:-1:-1;3130:23:6;;2637:25:55;;;3130:23:6;;2625:2:55;2610:18;3130:23:6;;;;;;;2997:163;2916:244;;:::o;13138:394:44:-;13350:29;13382:25;:23;:25::i;:::-;13444:81;;;;;;;;-1:-1:-1;;;;;13444:81:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13417:24:44;;;:15;;;;:24;;;;;:108;;;;-1:-1:-1;;;;;;13417:108:44;;;;;;;;;;;;;;-1:-1:-1;13417:108:44;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13417:108:44;;;;;;;;;;;;;;;;;;;;;;;;13138:394::o;3326:384:9:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:9;3522:88;;3569:30;;-1:-1:-1;;;3569:30:9;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;13597:460:4:-;-1:-1:-1;;;;;13682:16:4;;13678:87;;13751:1;13721:33;;-1:-1:-1;;;13721:33:4;;;;;;;;:::i;13678:87::-;13774:21;13798:32;13806:2;13810:7;13827:1;13798:7;:32::i;:::-;13774:56;-1:-1:-1;;;;;;13844:27:4;;13840:211;;13894:31;;-1:-1:-1;;;13894:31:4;;;;;2637:25:55;;;2610:18;;13894:31:4;2491:177:55;13840:211:4;13963:4;-1:-1:-1;;;;;13946:21:4;:13;-1:-1:-1;;;;;13946:21:4;;13942:109;;14011:4;14017:7;14026:13;13990:50;;-1:-1:-1;;;13990:50:4;;;;;;;;;;:::i;1702:188:26:-;1829:53;;;-1:-1:-1;;;;;15063:15:55;;;1829:53:26;;;15045:34:55;15115:15;;15095:18;;;15088:43;15147:18;;;;15140:34;;;1829:53:26;;;;;;;;;;14980:18:55;;;;1829:53:26;;;;;;;;-1:-1:-1;;;;;1829:53:26;-1:-1:-1;;;1829:53:26;;;1802:81;;1822:5;;1802:19;:81::i;1531:331:31:-;1640:6;1616:21;:30;1612:109;;;1704:4;1669:41;;-1:-1:-1;;;1669:41:31;;;;;;;;:::i;1612:109::-;1732:12;1750:9;-1:-1:-1;;;;;1750:14:31;1772:6;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:52;;;1798:7;1793:63;;1828:17;;-1:-1:-1;;;1828:17:31;;;;;;;;;;;3716:283:9;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:9:o;17232:369:4:-;17335:23;17361:19;:17;:19::i;:::-;17335:45;-1:-1:-1;;;;;;17394:22:4;;17390:91;;17461:8;17439:31;;-1:-1:-1;;;17439:31:4;;;;;;;;:::i;17390:91::-;-1:-1:-1;;;;;17490:27:4;;;;;;;:20;;;:27;;;;;;;;:37;;;;;;;;;;;;;:48;;-1:-1:-1;;17490:48:4;;;;;;;;;;17553:41;;1019::55;;;17553::4;;992:18:55;17553:41:4;;;;;;;17325:276;17232:369;;;:::o;6337:208::-;6450:31;6463:4;6469:2;6473:7;6450:12;:31::i;:::-;6491:47;6514:4;6520:2;6524:7;6533:4;6491:22;:47::i;8737:170:2:-;8870:21;;8737:170::o;2233:149:4:-;6931:20:2;:18;:20::i;:::-;2336:39:4::1;2360:5;2367:7;2336:23;:39::i;2115:68:5:-:0;6931:20:2;:18;:20::i;2127:670:6:-;2200:13;2225:33;2261:29;:27;:29::i;:::-;2225:65;;2300:22;2314:7;2300:13;:22::i;:::-;-1:-1:-1;2333:23:6;2359:21;;;;;;;;;;2333:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:18;2411:10;4545:9:4;;;;;;;;;-1:-1:-1;4545:9:4;;;4469:92;2411:10:6;2390:31;;2500:4;2494:18;2516:1;2494:23;2490:70;;-1:-1:-1;2540:9:6;2127:670;-1:-1:-1;;;2127:670:6:o;2490:70::-;2659:23;;:27;2655:95;;2723:4;2729:9;2709:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2702:37;;;;;2127:670;;;:::o;2655:95::-;2767:23;2782:7;2767:14;:23::i;:::-;2760:30;2127:670;-1:-1:-1;;;;;2127:670:6:o;1843:218::-;1956:4;-1:-1:-1;;;;;;1979:35:6;;-1:-1:-1;;;1979:35:6;;:75;;;2018:36;2042:11;2018:23;:36::i;7059:172:4:-;7125:7;7144:23;7170:19;:17;:19::i;:::-;7206:18;;;;:9;;:18;;-1:-1:-1;;7206:18:4;;;;-1:-1:-1;;;;;7206:18:4;;7059:172::o;16304:719::-;16408:23;16434:19;:17;:19::i;:::-;16408:45;;16519:9;:31;;;-1:-1:-1;;;;;;16532:18:4;;;;16519:31;16515:460;;;16566:13;16582:22;16596:7;16582:13;:22::i;:::-;16566:38;-1:-1:-1;;;;;;16732:18:4;;;;;;:35;;;16763:4;-1:-1:-1;;;;;16754:13:4;:5;-1:-1:-1;;;;;16754:13:4;;;16732:35;:69;;;;;16772:29;16789:5;16796:4;16772:16;:29::i;:::-;16771:30;16732:69;16728:142;;;16850:4;16828:27;;-1:-1:-1;;;16828:27:4;;;;;;;;:::i;16728:142::-;16888:9;16884:81;;;16942:7;16938:2;-1:-1:-1;;;;;16922:28:4;16931:5;-1:-1:-1;;;;;16922:28:4;;;;;;;;;;;16884:81;16552:423;16515:460;16985:26;;;;:17;;:26;;-1:-1:-1;;16985:26:4;;;:31;;-1:-1:-1;;;;;;16985:31:4;-1:-1:-1;;;;;16985:31:4;;;;;;;;;;16304:719::o;18082:230:44:-;18247:7;18273:32;18287:2;18291:7;18300:4;18273:13;:32::i;:::-;18266:39;;18082:230;;;;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;2779:335:19:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:19;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;12538:182:4:-;12632:18;12638:2;12642:7;12632:5;:18::i;:::-;12660:53;12691:1;12695:2;12699:7;12708:4;12660:22;:53::i;1434:186:6:-;1573:31;;1434:186::o;2251:183:9:-;2388:30;;2251:183::o;4059:629:26:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:26;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4664:5;4631:40;;-1:-1:-1;;;4631:40:26;;;;;;;;:::i;18616:782:4:-;-1:-1:-1;;;;;18732:14:4;;;:18;18728:664;;18770:71;;-1:-1:-1;;;18770:71:4;;-1:-1:-1;;;;;18770:36:4;;;;;:71;;966:10:7;;18821:4:4;;18827:7;;18836:4;;18770:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18770:71:4;;;;;;;;-1:-1:-1;;18770:71:4;;;;;;;;;;;;:::i;:::-;;;18766:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19079:6;:13;19096:1;19079:18;19075:293;;19150:2;19128:25;;-1:-1:-1;;;19128:25:4;;;;;;;;:::i;19075:293::-;19320:6;19314:13;19305:6;19301:2;19297:15;19290:38;18766:616;-1:-1:-1;;;;;;18888:51:4;;-1:-1:-1;;;18888:51:4;18884:130;;18992:2;18970:25;;-1:-1:-1;;;18970:25:4;;;;;;;;:::i;18884:130::-;18842:186;18616:782;;;;:::o;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;2388:219:4;6931:20:2;:18;:20::i;:::-;2501:23:4::1;2527:19;:17;:19::i;:::-;2501:45:::0;-1:-1:-1;2501:45:4;2556:15:::1;2566:5:::0;2501:45;2556:15:::1;:::i;:::-;-1:-1:-1::0;2581:9:4::1;::::0;::::1;:19;2593:7:::0;2581:9;:19:::1;:::i;3972:255::-:0;4036:13;4061:22;4075:7;4061:13;:22::i;:::-;;4094:21;4118:10;4545:9;;;;;;;;;-1:-1:-1;4545:9:4;;;4469:92;4118:10;4094:34;;4169:1;4151:7;4145:21;:25;:75;;;;;;;;;;;;;;;;;4187:7;4196:18;:7;:16;:18::i;:::-;4173:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4138:82;3972:255;-1:-1:-1;;;3972:255:4:o;2333:233:5:-;2446:4;-1:-1:-1;;;;;;2469:50:5;;-1:-1:-1;;;2469:50:5;;:90;;;2523:36;2547:11;2523:23;:36::i;3658:625::-;3753:7;3772:21;3796:32;3810:2;3814:7;3823:4;3796:13;:32::i;:::-;3772:56;-1:-1:-1;;;;;;3843:27:5;;3839:210;;3886:40;3918:7;3886:31;:40::i;:::-;3839:210;;;3964:2;-1:-1:-1;;;;;3947:19:5;:13;-1:-1:-1;;;;;3947:19:5;;3943:106;;3982:56;4015:13;4030:7;3982:32;:56::i;:::-;-1:-1:-1;;;;;4062:16:5;;4058:188;;4094:45;4131:7;4094:36;:45::i;:::-;4058:188;;;4177:2;-1:-1:-1;;;;;4160:19:5;:13;-1:-1:-1;;;;;4160:19:5;;4156:90;;4195:40;4223:2;4227:7;4195:27;:40::i;2186:281:19:-;2263:17;-1:-1:-1;;;;;2263:29:19;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:19;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:19;;-1:-1:-1;;;;;;2387:73:19;-1:-1:-1;;;;;2387:73:19;;;;;;;;;;2186:281::o;4106:253:31:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:31;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;6598:122:19:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:19;;;;;;;;;;;11539:327:4;-1:-1:-1;;;;;11606:16:4;;11602:87;;11675:1;11645:33;;-1:-1:-1;;;11645:33:4;;;;;;;;:::i;11602:87::-;11698:21;11722:32;11730:2;11734:7;11751:1;11722:7;:32::i;:::-;11698:56;-1:-1:-1;;;;;;11768:27:4;;;11764:96;;11846:1;11818:31;;-1:-1:-1;;;11818:31:4;;;;;;;;:::i;2705:151:31:-;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;8487:120:2:-;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;637:698:34:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;-1:-1:-1;;;;;817:18:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:34;-1:-1:-1;794:41:34;-1:-1:-1;955:28:34;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:34;-1:-1:-1;;;1175:2:34;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:34;1010:282;1256:21;-1:-1:-1;1312:6:34;637:698;-1:-1:-1;;;637:698:34:o;2674:311:4:-;2787:4;-1:-1:-1;;;;;;2822:40:4;;-1:-1:-1;;;2822:40:4;;:104;;-1:-1:-1;;;;;;;2878:48:4;;-1:-1:-1;;;2878:48:4;2822:104;:156;;;-1:-1:-1;;;;;;;;;;1133:40:10;;;2942:36:4;1034:146:10;10361:856:4;10447:7;10466:23;10492:19;:17;:19::i;:::-;10466:45;;10521:12;10536:17;10545:7;10536:8;:17::i;:::-;10521:32;-1:-1:-1;;;;;;10613:18:4;;;10609:86;;10647:37;10664:4;10670;10676:7;10647:16;:37::i;:::-;-1:-1:-1;;;;;10739:18:4;;;10735:258;;10855:48;10872:1;10876:7;10893:1;10897:5;10855:8;:48::i;:::-;-1:-1:-1;;;;;10946:17:4;;;;;;:11;;;:17;;;;;:22;;-1:-1:-1;;10946:22:4;;;10735:258;-1:-1:-1;;;;;11007:16:4;;;11003:109;;-1:-1:-1;;;;;11067:15:4;;;;;;:11;;;:15;;;;;:20;;11086:1;11067:20;;;11003:109;11122:18;;;;:9;;;:18;;;;;;:23;;-1:-1:-1;;;;;;11122:23:4;-1:-1:-1;;;;;11122:23:4;;;;;;;;;11161:27;;11122:18;;11161:27;;;;;;;11206:4;10361:856;-1:-1:-1;;;;;10361:856:4:o;5065:242:5:-;5141:33;5177:29;:27;:29::i;:::-;5245:12;;;:19;;5216:26;;;;:17;;;;:26;;;;;;;:48;;;5274:26;;;;;;;;;;;;;;;-1:-1:-1;5065:242:5:o;5924:1046::-;6015:33;6051:29;:27;:29::i;:::-;6015:65;;6261:22;6286:15;6296:4;6286:9;:15::i;:::-;6311:18;6332:28;;;:19;;;:28;;;;;;6261:40;;-1:-1:-1;6464:28:5;;;6460:329;;-1:-1:-1;;;;;6530:20:5;;6508:19;6530:20;;;;;;;;;;;:36;;;;;;;;;6581:32;;;;;;:46;;;6699:32;;:19;;;:32;;;;;:45;;;6460:329;-1:-1:-1;6882:28:5;;;;:19;;;:28;;;;;;;;6875:35;;;-1:-1:-1;;;;;6927:20:5;;;;;;;;;;;:36;;;;;;;;6920:43;5924:1046::o;7258:1150::-;7339:33;7375:29;:27;:29::i;:::-;7607:12;;;:19;7339:65;;-1:-1:-1;7582:22:5;;7607:23;;7629:1;;7607:23;:::i;:::-;7640:18;7661:26;;;:17;;;:26;;;;;;8031:12;;;:28;;7582:48;;-1:-1:-1;7661:26:5;;7582:48;;8031:28;;;;;;:::i;:::-;;;;;;;;;8009:50;;8097:11;8070:1;:12;;8083:10;8070:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;8176:30;;;:17;;;:30;;;;;;;:43;;;8347:26;;;;;8340:33;8383:12;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7329:1079;;;;7258:1150;:::o;4577:293::-;4661:33;4697:29;:27;:29::i;:::-;4661:65;;4736:14;4769:1;4753:13;4763:2;4753:9;:13::i;:::-;:17;;;;:::i;:::-;-1:-1:-1;;;;;4780:18:5;;;:14;:18;;;;;;;;;;;:26;;;;;;;;:36;;;4826:28;;;:19;;;;:28;;;-1:-1:-1;4826:28:5;:37;4577:293::o;4625:582:31:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:31;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:31;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:31;5173:17;;3180:392;3279:12;3331:5;3307:21;:29;3303:108;;;3394:4;3359:41;;-1:-1:-1;;;3359:41:31;;;;;;;;:::i;3303:108::-;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:31;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:31:o;12214:916:37:-;12267:7;;-1:-1:-1;;;12342:17:37;;12338:103;;-1:-1:-1;;;12379:17:37;;;-1:-1:-1;12424:2:37;12414:12;12338:103;-1:-1:-1;;;12458:5:37;:17;12454:103;;-1:-1:-1;;;12495:17:37;;;-1:-1:-1;12540:2:37;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:37;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:37;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:37;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:37;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:37:o;8548:368:4:-;8660:38;8674:5;8681:7;8690;8660:13;:38::i;:::-;8655:255;;-1:-1:-1;;;;;8718:19:4;;8714:186;;8764:31;;-1:-1:-1;;;8764:31:4;;;;;2637:25:55;;;2610:18;;8764:31:4;2491:177:55;8714:186:4;8868:7;8877;8841:44;;-1:-1:-1;;;8841:44:4;;;;;;;;;:::i;5743:516:31:-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:31;;;;;;;;;;;7842:272:4;7945:4;-1:-1:-1;;;;;7980:21:4;;;;;;:127;;;8027:7;-1:-1:-1;;;;;8018:16:4;:5;-1:-1:-1;;;;;8018:16:4;;:52;;;;8038:32;8055:5;8062:7;8038:16;:32::i;:::-;8018:88;;;;8099:7;-1:-1:-1;;;;;8074:32:4;:21;8087:7;8074:12;:21::i;:::-;-1:-1:-1;;;;;8074:32:4;;;7842:272;-1:-1:-1;;;;7842:272:4:o;14:180:55:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:55;;14:180;-1:-1:-1;14:180:55:o;199:289::-;388:25;;;-1:-1:-1;;;;;449:32:55;444:2;429:18;;422:60;376:2;361:18;;199:289::o;493:131::-;-1:-1:-1;;;;;;567:32:55;;557:43;;547:71;;614:1;611;604:12;629:245;687:6;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;795:9;782:23;814:30;838:5;814:30;:::i;1071:250::-;1156:1;1166:113;1180:6;1177:1;1174:13;1166:113;;;1256:11;;;1250:18;1237:11;;;1230:39;1202:2;1195:10;1166:113;;;-1:-1:-1;;1313:1:55;1295:16;;1288:27;1071:250::o;1326:271::-;1368:3;1406:5;1400:12;1433:6;1428:3;1421:19;1449:76;1518:6;1511:4;1506:3;1502:14;1495:4;1488:5;1484:16;1449:76;:::i;:::-;1579:2;1558:15;-1:-1:-1;;1554:29:55;1545:39;;;;1586:4;1541:50;;1326:271;-1:-1:-1;;1326:271:55:o;1602:220::-;1751:2;1740:9;1733:21;1714:4;1771:45;1812:2;1801:9;1797:18;1789:6;1771:45;:::i;1827:203::-;-1:-1:-1;;;;;1991:32:55;;;;1973:51;;1961:2;1946:18;;1827:203::o;2035:131::-;-1:-1:-1;;;;;2110:31:55;;2100:42;;2090:70;;2156:1;2153;2146:12;2171:315;2239:6;2247;2300:2;2288:9;2279:7;2275:23;2271:32;2268:52;;;2316:1;2313;2306:12;2268:52;2355:9;2342:23;2374:31;2399:5;2374:31;:::i;:::-;2424:5;2476:2;2461:18;;;;2448:32;;-1:-1:-1;;;2171:315:55:o;2673:247::-;2732:6;2785:2;2773:9;2764:7;2760:23;2756:32;2753:52;;;2801:1;2798;2791:12;2753:52;2840:9;2827:23;2859:31;2884:5;2859:31;:::i;2925:456::-;3002:6;3010;3018;3071:2;3059:9;3050:7;3046:23;3042:32;3039:52;;;3087:1;3084;3077:12;3039:52;3126:9;3113:23;3145:31;3170:5;3145:31;:::i;:::-;3195:5;-1:-1:-1;3252:2:55;3237:18;;3224:32;3265:33;3224:32;3265:33;:::i;:::-;2925:456;;3317:7;;-1:-1:-1;;;3371:2:55;3356:18;;;;3343:32;;2925:456::o;3753:315::-;3821:6;3829;3882:2;3870:9;3861:7;3857:23;3853:32;3850:52;;;3898:1;3895;3888:12;3850:52;3934:9;3921:23;3911:33;;3994:2;3983:9;3979:18;3966:32;4007:31;4032:5;4007:31;:::i;:::-;4057:5;4047:15;;;3753:315;;;;;:::o;4073:127::-;4134:10;4129:3;4125:20;4122:1;4115:31;4165:4;4162:1;4155:15;4189:4;4186:1;4179:15;4205:631;4269:5;-1:-1:-1;;;;;4329:14:55;;;4326:40;;;4346:18;;:::i;:::-;4421:2;4415:9;4389:2;4475:15;;-1:-1:-1;;4471:24:55;;;4497:2;4467:33;4463:42;4451:55;;;4521:18;;;4541:22;;;4518:46;4515:72;;;4567:18;;:::i;:::-;4607:10;4603:2;4596:22;4636:6;4627:15;;4666:6;4658;4651:22;4706:3;4697:6;4692:3;4688:16;4685:25;4682:45;;;4723:1;4720;4713:12;4682:45;4773:6;4768:3;4761:4;4753:6;4749:17;4736:44;4828:1;4821:4;4812:6;4804;4800:19;4796:30;4789:41;;;;4205:631;;;;;:::o;4841:220::-;4883:5;4936:3;4929:4;4921:6;4917:17;4913:27;4903:55;;4954:1;4951;4944:12;4903:55;4976:79;5051:3;5042:6;5029:20;5022:4;5014:6;5010:17;4976:79;:::i;5066:455::-;5143:6;5151;5204:2;5192:9;5183:7;5179:23;5175:32;5172:52;;;5220:1;5217;5210:12;5172:52;5259:9;5246:23;5278:31;5303:5;5278:31;:::i;:::-;5328:5;-1:-1:-1;5384:2:55;5369:18;;5356:32;-1:-1:-1;;;;;5400:30:55;;5397:50;;;5443:1;5440;5433:12;5397:50;5466:49;5507:7;5498:6;5487:9;5483:22;5466:49;:::i;:::-;5456:59;;;5066:455;;;;;:::o;5526:879::-;5646:6;5654;5662;5670;5678;5731:3;5719:9;5710:7;5706:23;5702:33;5699:53;;;5748:1;5745;5738:12;5699:53;5787:9;5774:23;5806:31;5831:5;5806:31;:::i;:::-;5856:5;-1:-1:-1;5912:2:55;5897:18;;5884:32;-1:-1:-1;;;;;5928:30:55;;5925:50;;;5971:1;5968;5961:12;5925:50;5994:22;;6047:4;6039:13;;6035:27;-1:-1:-1;6025:55:55;;6076:1;6073;6066:12;6025:55;6099:73;6164:7;6159:2;6146:16;6141:2;6137;6133:11;6099:73;:::i;:::-;6089:83;;;6219:2;6208:9;6204:18;6191:32;6181:42;;6270:2;6259:9;6255:18;6242:32;6232:42;;6326:3;6315:9;6311:19;6298:33;6340;6365:7;6340:33;:::i;:::-;6392:7;6382:17;;;5526:879;;;;;;;;:::o;6410:118::-;6496:5;6489:13;6482:21;6475:5;6472:32;6462:60;;6518:1;6515;6508:12;6533:382;6598:6;6606;6659:2;6647:9;6638:7;6634:23;6630:32;6627:52;;;6675:1;6672;6665:12;6627:52;6714:9;6701:23;6733:31;6758:5;6733:31;:::i;:::-;6783:5;-1:-1:-1;6840:2:55;6825:18;;6812:32;6853:30;6812:32;6853:30;:::i;6920:665::-;7015:6;7023;7031;7039;7092:3;7080:9;7071:7;7067:23;7063:33;7060:53;;;7109:1;7106;7099:12;7060:53;7148:9;7135:23;7167:31;7192:5;7167:31;:::i;:::-;7217:5;-1:-1:-1;7274:2:55;7259:18;;7246:32;7287:33;7246:32;7287:33;:::i;:::-;7339:7;-1:-1:-1;7393:2:55;7378:18;;7365:32;;-1:-1:-1;7448:2:55;7433:18;;7420:32;-1:-1:-1;;;;;7464:30:55;;7461:50;;;7507:1;7504;7497:12;7461:50;7530:49;7571:7;7562:6;7551:9;7547:22;7530:49;:::i;:::-;7520:59;;;6920:665;;;;;;;:::o;7590:529::-;7667:6;7675;7683;7736:2;7724:9;7715:7;7711:23;7707:32;7704:52;;;7752:1;7749;7742:12;7704:52;7791:9;7778:23;7810:31;7835:5;7810:31;:::i;:::-;7860:5;-1:-1:-1;7917:2:55;7902:18;;7889:32;7930:33;7889:32;7930:33;:::i;:::-;7982:7;-1:-1:-1;8041:2:55;8026:18;;8013:32;8054:33;8013:32;8054:33;:::i;:::-;8106:7;8096:17;;;7590:529;;;;;:::o;8124:388::-;8192:6;8200;8253:2;8241:9;8232:7;8228:23;8224:32;8221:52;;;8269:1;8266;8259:12;8221:52;8308:9;8295:23;8327:31;8352:5;8327:31;:::i;:::-;8377:5;-1:-1:-1;8434:2:55;8419:18;;8406:32;8447:33;8406:32;8447:33;:::i;8517:380::-;8596:1;8592:12;;;;8639;;;8660:61;;8714:4;8706:6;8702:17;8692:27;;8660:61;8767:2;8759:6;8756:14;8736:18;8733:38;8730:161;;8813:10;8808:3;8804:20;8801:1;8794:31;8848:4;8845:1;8838:15;8876:4;8873:1;8866:15;8730:161;;8517:380;;;:::o;8902:245::-;8969:6;9022:2;9010:9;9001:7;8997:23;8993:32;8990:52;;;9038:1;9035;9028:12;8990:52;9070:9;9064:16;9089:28;9111:5;9089:28;:::i;9152:274::-;-1:-1:-1;;;;;9344:32:55;;;;9326:51;;9408:2;9393:18;;9386:34;9314:2;9299:18;;9152:274::o;9431:127::-;9492:10;9487:3;9483:20;9480:1;9473:31;9523:4;9520:1;9513:15;9547:4;9544:1;9537:15;9563:127;9624:10;9619:3;9615:20;9612:1;9605:31;9655:4;9652:1;9645:15;9679:4;9676:1;9669:15;9695:125;9760:9;;;9781:10;;;9778:36;;;9794:18;;:::i;10078:135::-;10117:3;10138:17;;;10135:43;;10158:18;;:::i;:::-;-1:-1:-1;10205:1:55;10194:13;;10078:135::o;10583:304::-;-1:-1:-1;;;;;10813:15:55;;;10795:34;;10865:15;;10860:2;10845:18;;10838:43;10745:2;10730:18;;10583:304::o;11171:184::-;11241:6;11294:2;11282:9;11273:7;11269:23;11265:32;11262:52;;;11310:1;11307;11300:12;11262:52;-1:-1:-1;11333:16:55;;11171:184;-1:-1:-1;11171:184:55:o;12041:375::-;-1:-1:-1;;;;;12299:15:55;;;12281:34;;12346:2;12331:18;;12324:34;;;;12394:15;;;12389:2;12374:18;;12367:43;12231:2;12216:18;;12041:375::o;12736:543::-;12838:2;12833:3;12830:11;12827:446;;;12874:1;12898:5;12895:1;12888:16;12942:4;12939:1;12929:18;13012:2;13000:10;12996:19;12993:1;12989:27;12983:4;12979:38;13048:4;13036:10;13033:20;13030:47;;;-1:-1:-1;13071:4:55;13030:47;13126:2;13121:3;13117:12;13114:1;13110:20;13104:4;13100:31;13090:41;;13181:82;13199:2;13192:5;13189:13;13181:82;;;13244:17;;;13225:1;13214:13;13181:82;;;13185:3;;;12736:543;;;:::o;13455:1345::-;13575:10;;-1:-1:-1;;;;;13597:30:55;;13594:56;;;13630:18;;:::i;:::-;13659:97;13749:6;13709:38;13741:4;13735:11;13709:38;:::i;:::-;13703:4;13659:97;:::i;:::-;13811:4;;13868:2;13857:14;;13885:1;13880:663;;;;14587:1;14604:6;14601:89;;;-1:-1:-1;14656:19:55;;;14650:26;14601:89;-1:-1:-1;;13412:1:55;13408:11;;;13404:24;13400:29;13390:40;13436:1;13432:11;;;13387:57;14703:81;;13850:944;;13880:663;12683:1;12676:14;;;12720:4;12707:18;;-1:-1:-1;;13916:20:55;;;14034:236;14048:7;14045:1;14042:14;14034:236;;;14137:19;;;14131:26;14116:42;;14229:27;;;;14197:1;14185:14;;;;14064:19;;14034:236;;;14038:3;14298:6;14289:7;14286:19;14283:201;;;14359:19;;;14353:26;-1:-1:-1;;14442:1:55;14438:14;;;14454:3;14434:24;14430:37;14426:42;14411:58;14396:74;;14283:201;-1:-1:-1;;;;;14530:1:55;14514:14;;;14510:22;14497:36;;-1:-1:-1;13455:1345:55:o;15395:496::-;15574:3;15612:6;15606:13;15628:66;15687:6;15682:3;15675:4;15667:6;15663:17;15628:66;:::i;:::-;15757:13;;15716:16;;;;15779:70;15757:13;15716:16;15826:4;15814:17;;15779:70;:::i;:::-;15865:20;;15395:496;-1:-1:-1;;;;15395:496:55:o;16175:489::-;-1:-1:-1;;;;;16444:15:55;;;16426:34;;16496:15;;16491:2;16476:18;;16469:43;16543:2;16528:18;;16521:34;;;16591:3;16586:2;16571:18;;16564:31;;;16369:4;;16612:46;;16638:19;;16630:6;16612:46;:::i;16669:249::-;16738:6;16791:2;16779:9;16770:7;16766:23;16762:32;16759:52;;;16807:1;16804;16797:12;16759:52;16839:9;16833:16;16858:30;16882:5;16858:30;:::i;16923:287::-;17052:3;17090:6;17084:13;17106:66;17165:6;17160:3;17153:4;17145:6;17141:17;17106:66;:::i;:::-;17188:16;;;;;16923:287;-1:-1:-1;;16923:287:55:o;17347:128::-;17414:9;;;17435:11;;;17432:37;;;17449:18;;:::i;17480:127::-;17541:10;17536:3;17532:20;17529:1;17522:31;17572:4;17569:1;17562:15;17596:4;17593:1;17586:15" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "MIN_EXPIRATION_ADMIN_ROLE()": "2edf5e2c", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "buyReservedToken(uint256)": "96591edd", + "getApproved(uint256)": "081812fc", + "getManagerAddress()": "c162d7da", + "getMinExpirationTimestampDiff()": "0e75c1a8", + "getReservationPrice(uint256)": "004fdd3c", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address)": "c0c53b8b", + "isApprovedForAll(address,address)": "e985e9c5", + "isCMAccount(address)": "12b357b5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "proxiableUUID()": "52d1902d", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "safeMintWithReservation(address,string,uint256,uint256,address)": "5d4badb2", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "setManagerAddress(address)": "41431908", + "setMinExpirationTimestampDiff(uint256)": "516a82b8", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minExpirationTimestampDiff\",\"type\":\"uint256\"}],\"name\":\"ExpirationTimestampTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reservationPrice\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"}],\"name\":\"ReservationExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"ReservationMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"}],\"name\":\"SupplierIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"}],\"name\":\"TokenIsReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"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\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"TokenBought\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"TokenReserved\",\"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\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_EXPIRATION_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"buyReservedToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinExpirationTimestampDiff\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"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\":\"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\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"safeMintWithReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setManagerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minExpirationTimestampDiff\",\"type\":\"uint256\"}],\"name\":\"setMinExpirationTimestampDiff\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrice(uint256,uint256)\":[{\"params\":{\"price\":\"price of the token\",\"reservationPrice\":\"reservation price\"}}],\"InsufficientAllowance(address,address,uint256,uint256)\":[{\"params\":{\"allowance\":\"allowance amount\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"sender\":\"msg.sender\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotCMAccount(address)\":[{\"params\":{\"account\":\"account address\"}}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ReservationExpired(uint256,uint256)\":[{\"params\":{\"expirationTimestamp\":\"expiration timestamp\",\"tokenId\":\"token id\"}}],\"ReservationMismatch(address,address)\":[{\"params\":{\"buyer\":\"buyer address\",\"reservedFor\":\"reserved for address\"}}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SupplierIsNotOwner(uint256,address)\":[{\"params\":{\"supplier\":\"supplier address\",\"tokenId\":\"token id\"}}],\"TokenIsReserved(uint256,address)\":[{\"params\":{\"reservedFor\":\"reserved for address\",\"tokenId\":\"token id\"}}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TokenBought(uint256,address)\":{\"params\":{\"buyer\":\"buyer address\",\"tokenId\":\"token id\"}},\"TokenReserved(uint256,address,address,uint256,uint256,address)\":{\"params\":{\"expirationTimestamp\":\"expiration timestamp\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"reservedFor\":\"reserved for address\",\"supplier\":\"supplier address\",\"tokenId\":\"token id\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyReservedToken(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getReservationPrice(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The address to check\"},\"returns\":{\"_0\":\"true if the address is a CM Account\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeMintWithReservation(address,string,uint256,uint256,address)\":{\"params\":{\"expirationTimestamp\":\"The expiration timestamp\",\"paymentToken\":\"The token used to pay for the reservation. If address(0) then native.\",\"price\":\"The price of the token\",\"reservedFor\":\"The CM Account address that can buy the token\",\"uri\":\"The URI of the token\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setManagerAddress(address)\":{\"params\":{\"manager\":\"The address of the manager\"}},\"setMinExpirationTimestampDiff(uint256)\":{\"params\":{\"minExpirationTimestampDiff\":\"Minimum expiration timestamp difference in seconds\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"BookingToken\",\"version\":1},\"userdoc\":{\"errors\":{\"ExpirationTimestampTooSoon(uint256,uint256)\":[{\"notice\":\"Error for expiration timestamp too soon. It must be at least `_minExpirationTimestampDiff` seconds in the future.\"}],\"IncorrectPrice(uint256,uint256)\":[{\"notice\":\"Incorrect price.\"}],\"InsufficientAllowance(address,address,uint256,uint256)\":[{\"notice\":\"Insufficient allowance to transfer the ERC20 token to the supplier.\"}],\"NotCMAccount(address)\":[{\"notice\":\"Address is not a CM Account.\"}],\"ReservationExpired(uint256,uint256)\":[{\"notice\":\"Reservation expired.\"}],\"ReservationMismatch(address,address)\":[{\"notice\":\"ReservedFor and buyer mismatch.\"}],\"SupplierIsNotOwner(uint256,address)\":[{\"notice\":\"Supplier is not the owner.\"}],\"TokenIsReserved(uint256,address)\":[{\"notice\":\"Token is reserved and can not be transferred.\"}]},\"events\":{\"TokenBought(uint256,address)\":{\"notice\":\"Event emitted when a token is bought.\"},\"TokenReserved(uint256,address,address,uint256,uint256,address)\":{\"notice\":\"Event emitted when a token is reserved.\"}},\"kind\":\"user\",\"methods\":{\"MIN_EXPIRATION_ADMIN_ROLE()\":{\"notice\":\"This role can set the mininum allowed expiration timestamp difference.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"buyReservedToken(uint256)\":{\"notice\":\"Buys a reserved token. The reservation must be for the message sender. Also the message sender should set allowance for the payment token to this contract to at least the reservation price. (only for ERC20 tokens) For native coin, the message sender should send the exact amount. Only CM Accounts can call this function\"},\"getManagerAddress()\":{\"notice\":\"Returns for the manager address.\"},\"getMinExpirationTimestampDiff()\":{\"notice\":\"Returns minimum expiration timestamp difference in seconds.\"},\"getReservationPrice(uint256)\":{\"notice\":\"Returns the token reservation price for a specific token.\"},\"isCMAccount(address)\":{\"notice\":\"Checks if an address is a CM Account.\"},\"safeMintWithReservation(address,string,uint256,uint256,address)\":{\"notice\":\"Mints a new token with a reservation for a specific address.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Override safeTransferFrom to check if token is reserved. It reverts if the token is reserved.\"},\"setManagerAddress(address)\":{\"notice\":\"Sets for the manager address.\"},\"setMinExpirationTimestampDiff(uint256)\":{\"notice\":\"Sets minimum expiration timestamp difference in seconds.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Override transferFrom to check if token is reserved. It reverts if the token is reserved.\"}},\"notice\":\"Booking Token contract represents a booking done on the Camino Messenger. Suppliers can mint Booking Tokens and reserve them for a distributor address to buy. Booking Tokens can have zero price, meaning that the payment will be done off-chain. When a token is minted with a reservation, it can not transferred until the expiration timestamp is reached or the token is bought.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingToken.sol\":\"BookingToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f\",\"dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":{\"keccak256\":\"0xe3c0b8baf1c6c26bd7944f5c7e71d0e902cbd1a90509f093524c289b89ad5344\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9b136fb95c70aa8bce31e2fbaea664bd44afc305b8b75547d90944c89f2acc4\",\"dweb:/ipfs/QmRZbDHHu8obmna5Aj8iP2xNC4xC3p2RtdhpsYiJ8Bbm3M\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0x7e68925d3373bd2baa7ac36839c464b2e77b67764201c4e0196d62699ee220b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0896e7ff605a131ca982da1175d798c19588852dc74329f5c3675ac76cb80ff\",\"dweb:/ipfs/QmdePp3XmXaKz4A9qqj6enFuqERWvJoN4uRmFzu2cwLPX8\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd\",\"dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/booking-token/BookingToken.sol\":{\"keccak256\":\"0x3f9fcec09cf703a557d2d34ba5bd4bd38359508578402c7344dd51cca608d5b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e8824ed4507d14d2cc7453e46c1512fc54c8556335b9a7b1c49a88bb6d6c85a\",\"dweb:/ipfs/QmY7qZiP83iX37BzVqnsn9PcDio8qMUhTSoH5QaUeMbkh8\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenApprovalFailed", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "61056e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "opcodes": "PUSH2 0x56E PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B29E1BA EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0x53EA54C5 EQ PUSH2 0x67 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0x312 JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x82 CALLDATASIZE PUSH1 0x4 PUSH2 0x364 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x45C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3337E731 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2EA5D6D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x5D4BADB2 SWAP1 PUSH2 0x2C0 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x330 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x35F DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x388 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x398 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3DA JUMPI PUSH2 0x3DA PUSH2 0x33E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x402 JUMPI PUSH2 0x402 PUSH2 0x33E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP9 POP POP POP POP POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x450 PUSH1 0xA0 DUP9 ADD PUSH2 0x354 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x481 DUP2 PUSH2 0x2FA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xA0 PUSH1 0x20 DUP5 ADD MSTORE DUP7 MLOAD DUP1 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI DUP9 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP3 ADD PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xC0 DUP3 DUP7 ADD ADD MSTORE PUSH1 0xC0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x52E PUSH1 0x80 DUP4 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xE8 SGT 0xCB SWAP3 0xEB 0xB6 0xF6 BASEFEE 0xBE 0xDA ADDMOD LOG2 PUSH5 0x7D33ACCDA4 CODESIZE 0xF6 CALLDATACOPY SWAP2 JUMP 0x2C 0xAB PUSH24 0xD87C6F603764736F6C634300081800330000000000000000 ", + "sourceMap": "471:2489:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;471:2489:45;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@buyBookingToken_10944": { + "entryPoint": 135, + "id": 10944, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@mintBookingToken_10870": { + "entryPoint": 652, + "id": 10870, + "parameterSlots": 6, + "returnSlots": 0 + }, + "abi_decode_contract_IERC20": { + "entryPoint": 852, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445": { + "entryPoint": 868, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 786, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 1164, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_contract$_IERC20_$4445_fromMemory": { + "entryPoint": 1116, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_contract_IERC20": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 1205, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 830, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 762, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:4661:55", + "nodeType": "YulBlock", + "src": "0:4661:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "59:86:55", + "nodeType": "YulBlock", + "src": "59:86:55", + "statements": [ + { + "body": { + "nativeSrc": "123:16:55", + "nodeType": "YulBlock", + "src": "123:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "132:1:55", + "nodeType": "YulLiteral", + "src": "132:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "135:1:55", + "nodeType": "YulLiteral", + "src": "135:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "125:6:55", + "nodeType": "YulIdentifier", + "src": "125:6:55" + }, + "nativeSrc": "125:12:55", + "nodeType": "YulFunctionCall", + "src": "125:12:55" + }, + "nativeSrc": "125:12:55", + "nodeType": "YulExpressionStatement", + "src": "125:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "82:5:55", + "nodeType": "YulIdentifier", + "src": "82:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:55", + "nodeType": "YulIdentifier", + "src": "93:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "108:3:55", + "nodeType": "YulLiteral", + "src": "108:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "113:1:55", + "nodeType": "YulLiteral", + "src": "113:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "104:3:55", + "nodeType": "YulIdentifier", + "src": "104:3:55" + }, + "nativeSrc": "104:11:55", + "nodeType": "YulFunctionCall", + "src": "104:11:55" + }, + { + "kind": "number", + "nativeSrc": "117:1:55", + "nodeType": "YulLiteral", + "src": "117:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:55", + "nodeType": "YulIdentifier", + "src": "100:3:55" + }, + "nativeSrc": "100:19:55", + "nodeType": "YulFunctionCall", + "src": "100:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "89:3:55", + "nodeType": "YulIdentifier", + "src": "89:3:55" + }, + "nativeSrc": "89:31:55", + "nodeType": "YulFunctionCall", + "src": "89:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "79:2:55", + "nodeType": "YulIdentifier", + "src": "79:2:55" + }, + "nativeSrc": "79:42:55", + "nodeType": "YulFunctionCall", + "src": "79:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "72:6:55", + "nodeType": "YulIdentifier", + "src": "72:6:55" + }, + "nativeSrc": "72:50:55", + "nodeType": "YulFunctionCall", + "src": "72:50:55" + }, + "nativeSrc": "69:70:55", + "nodeType": "YulIf", + "src": "69:70:55" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "14:131:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "48:5:55", + "nodeType": "YulTypedName", + "src": "48:5:55", + "type": "" + } + ], + "src": "14:131:55" + }, + { + "body": { + "nativeSrc": "237:228:55", + "nodeType": "YulBlock", + "src": "237:228:55", + "statements": [ + { + "body": { + "nativeSrc": "283:16:55", + "nodeType": "YulBlock", + "src": "283:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "292:1:55", + "nodeType": "YulLiteral", + "src": "292:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "295:1:55", + "nodeType": "YulLiteral", + "src": "295:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "285:6:55", + "nodeType": "YulIdentifier", + "src": "285:6:55" + }, + "nativeSrc": "285:12:55", + "nodeType": "YulFunctionCall", + "src": "285:12:55" + }, + "nativeSrc": "285:12:55", + "nodeType": "YulExpressionStatement", + "src": "285:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "258:7:55", + "nodeType": "YulIdentifier", + "src": "258:7:55" + }, + { + "name": "headStart", + "nativeSrc": "267:9:55", + "nodeType": "YulIdentifier", + "src": "267:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "254:3:55", + "nodeType": "YulIdentifier", + "src": "254:3:55" + }, + "nativeSrc": "254:23:55", + "nodeType": "YulFunctionCall", + "src": "254:23:55" + }, + { + "kind": "number", + "nativeSrc": "279:2:55", + "nodeType": "YulLiteral", + "src": "279:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "250:3:55", + "nodeType": "YulIdentifier", + "src": "250:3:55" + }, + "nativeSrc": "250:32:55", + "nodeType": "YulFunctionCall", + "src": "250:32:55" + }, + "nativeSrc": "247:52:55", + "nodeType": "YulIf", + "src": "247:52:55" + }, + { + "nativeSrc": "308:36:55", + "nodeType": "YulVariableDeclaration", + "src": "308:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "334:9:55", + "nodeType": "YulIdentifier", + "src": "334:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "321:12:55", + "nodeType": "YulIdentifier", + "src": "321:12:55" + }, + "nativeSrc": "321:23:55", + "nodeType": "YulFunctionCall", + "src": "321:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "312:5:55", + "nodeType": "YulTypedName", + "src": "312:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "378:5:55", + "nodeType": "YulIdentifier", + "src": "378:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "353:24:55", + "nodeType": "YulIdentifier", + "src": "353:24:55" + }, + "nativeSrc": "353:31:55", + "nodeType": "YulFunctionCall", + "src": "353:31:55" + }, + "nativeSrc": "353:31:55", + "nodeType": "YulExpressionStatement", + "src": "353:31:55" + }, + { + "nativeSrc": "393:15:55", + "nodeType": "YulAssignment", + "src": "393:15:55", + "value": { + "name": "value", + "nativeSrc": "403:5:55", + "nodeType": "YulIdentifier", + "src": "403:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "393:6:55", + "nodeType": "YulIdentifier", + "src": "393:6:55" + } + ] + }, + { + "nativeSrc": "417:42:55", + "nodeType": "YulAssignment", + "src": "417:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "444:9:55", + "nodeType": "YulIdentifier", + "src": "444:9:55" + }, + { + "kind": "number", + "nativeSrc": "455:2:55", + "nodeType": "YulLiteral", + "src": "455:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "440:3:55", + "nodeType": "YulIdentifier", + "src": "440:3:55" + }, + "nativeSrc": "440:18:55", + "nodeType": "YulFunctionCall", + "src": "440:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "427:12:55", + "nodeType": "YulIdentifier", + "src": "427:12:55" + }, + "nativeSrc": "427:32:55", + "nodeType": "YulFunctionCall", + "src": "427:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "417:6:55", + "nodeType": "YulIdentifier", + "src": "417:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "150:315:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "195:9:55", + "nodeType": "YulTypedName", + "src": "195:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "206:7:55", + "nodeType": "YulTypedName", + "src": "206:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "218:6:55", + "nodeType": "YulTypedName", + "src": "218:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "226:6:55", + "nodeType": "YulTypedName", + "src": "226:6:55", + "type": "" + } + ], + "src": "150:315:55" + }, + { + "body": { + "nativeSrc": "502:95:55", + "nodeType": "YulBlock", + "src": "502:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "519:1:55", + "nodeType": "YulLiteral", + "src": "519:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "526:3:55", + "nodeType": "YulLiteral", + "src": "526:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "531:10:55", + "nodeType": "YulLiteral", + "src": "531:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "522:3:55", + "nodeType": "YulIdentifier", + "src": "522:3:55" + }, + "nativeSrc": "522:20:55", + "nodeType": "YulFunctionCall", + "src": "522:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "512:6:55", + "nodeType": "YulIdentifier", + "src": "512:6:55" + }, + "nativeSrc": "512:31:55", + "nodeType": "YulFunctionCall", + "src": "512:31:55" + }, + "nativeSrc": "512:31:55", + "nodeType": "YulExpressionStatement", + "src": "512:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "559:1:55", + "nodeType": "YulLiteral", + "src": "559:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "562:4:55", + "nodeType": "YulLiteral", + "src": "562:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "552:6:55", + "nodeType": "YulIdentifier", + "src": "552:6:55" + }, + "nativeSrc": "552:15:55", + "nodeType": "YulFunctionCall", + "src": "552:15:55" + }, + "nativeSrc": "552:15:55", + "nodeType": "YulExpressionStatement", + "src": "552:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "583:1:55", + "nodeType": "YulLiteral", + "src": "583:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "586:4:55", + "nodeType": "YulLiteral", + "src": "586:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "576:6:55", + "nodeType": "YulIdentifier", + "src": "576:6:55" + }, + "nativeSrc": "576:15:55", + "nodeType": "YulFunctionCall", + "src": "576:15:55" + }, + "nativeSrc": "576:15:55", + "nodeType": "YulExpressionStatement", + "src": "576:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "470:127:55", + "nodeType": "YulFunctionDefinition", + "src": "470:127:55" + }, + { + "body": { + "nativeSrc": "659:85:55", + "nodeType": "YulBlock", + "src": "659:85:55", + "statements": [ + { + "nativeSrc": "669:29:55", + "nodeType": "YulAssignment", + "src": "669:29:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "691:6:55", + "nodeType": "YulIdentifier", + "src": "691:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "678:12:55", + "nodeType": "YulIdentifier", + "src": "678:12:55" + }, + "nativeSrc": "678:20:55", + "nodeType": "YulFunctionCall", + "src": "678:20:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "669:5:55", + "nodeType": "YulIdentifier", + "src": "669:5:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "732:5:55", + "nodeType": "YulIdentifier", + "src": "732:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "707:24:55", + "nodeType": "YulIdentifier", + "src": "707:24:55" + }, + "nativeSrc": "707:31:55", + "nodeType": "YulFunctionCall", + "src": "707:31:55" + }, + "nativeSrc": "707:31:55", + "nodeType": "YulExpressionStatement", + "src": "707:31:55" + } + ] + }, + "name": "abi_decode_contract_IERC20", + "nativeSrc": "602:142:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "638:6:55", + "nodeType": "YulTypedName", + "src": "638:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "649:5:55", + "nodeType": "YulTypedName", + "src": "649:5:55", + "type": "" + } + ], + "src": "602:142:55" + }, + { + "body": { + "nativeSrc": "929:1254:55", + "nodeType": "YulBlock", + "src": "929:1254:55", + "statements": [ + { + "body": { + "nativeSrc": "976:16:55", + "nodeType": "YulBlock", + "src": "976:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "985:1:55", + "nodeType": "YulLiteral", + "src": "985:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "988:1:55", + "nodeType": "YulLiteral", + "src": "988:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "978:6:55", + "nodeType": "YulIdentifier", + "src": "978:6:55" + }, + "nativeSrc": "978:12:55", + "nodeType": "YulFunctionCall", + "src": "978:12:55" + }, + "nativeSrc": "978:12:55", + "nodeType": "YulExpressionStatement", + "src": "978:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "950:7:55", + "nodeType": "YulIdentifier", + "src": "950:7:55" + }, + { + "name": "headStart", + "nativeSrc": "959:9:55", + "nodeType": "YulIdentifier", + "src": "959:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "946:3:55", + "nodeType": "YulIdentifier", + "src": "946:3:55" + }, + "nativeSrc": "946:23:55", + "nodeType": "YulFunctionCall", + "src": "946:23:55" + }, + { + "kind": "number", + "nativeSrc": "971:3:55", + "nodeType": "YulLiteral", + "src": "971:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "942:3:55", + "nodeType": "YulIdentifier", + "src": "942:3:55" + }, + "nativeSrc": "942:33:55", + "nodeType": "YulFunctionCall", + "src": "942:33:55" + }, + "nativeSrc": "939:53:55", + "nodeType": "YulIf", + "src": "939:53:55" + }, + { + "nativeSrc": "1001:36:55", + "nodeType": "YulVariableDeclaration", + "src": "1001:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1027:9:55", + "nodeType": "YulIdentifier", + "src": "1027:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1014:12:55", + "nodeType": "YulIdentifier", + "src": "1014:12:55" + }, + "nativeSrc": "1014:23:55", + "nodeType": "YulFunctionCall", + "src": "1014:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "1005:5:55", + "nodeType": "YulTypedName", + "src": "1005:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1071:5:55", + "nodeType": "YulIdentifier", + "src": "1071:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1046:24:55", + "nodeType": "YulIdentifier", + "src": "1046:24:55" + }, + "nativeSrc": "1046:31:55", + "nodeType": "YulFunctionCall", + "src": "1046:31:55" + }, + "nativeSrc": "1046:31:55", + "nodeType": "YulExpressionStatement", + "src": "1046:31:55" + }, + { + "nativeSrc": "1086:15:55", + "nodeType": "YulAssignment", + "src": "1086:15:55", + "value": { + "name": "value", + "nativeSrc": "1096:5:55", + "nodeType": "YulIdentifier", + "src": "1096:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1086:6:55", + "nodeType": "YulIdentifier", + "src": "1086:6:55" + } + ] + }, + { + "nativeSrc": "1110:47:55", + "nodeType": "YulVariableDeclaration", + "src": "1110:47:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1142:9:55", + "nodeType": "YulIdentifier", + "src": "1142:9:55" + }, + { + "kind": "number", + "nativeSrc": "1153:2:55", + "nodeType": "YulLiteral", + "src": "1153:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1138:3:55", + "nodeType": "YulIdentifier", + "src": "1138:3:55" + }, + "nativeSrc": "1138:18:55", + "nodeType": "YulFunctionCall", + "src": "1138:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1125:12:55", + "nodeType": "YulIdentifier", + "src": "1125:12:55" + }, + "nativeSrc": "1125:32:55", + "nodeType": "YulFunctionCall", + "src": "1125:32:55" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "1114:7:55", + "nodeType": "YulTypedName", + "src": "1114:7:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "1191:7:55", + "nodeType": "YulIdentifier", + "src": "1191:7:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1166:24:55", + "nodeType": "YulIdentifier", + "src": "1166:24:55" + }, + "nativeSrc": "1166:33:55", + "nodeType": "YulFunctionCall", + "src": "1166:33:55" + }, + "nativeSrc": "1166:33:55", + "nodeType": "YulExpressionStatement", + "src": "1166:33:55" + }, + { + "nativeSrc": "1208:17:55", + "nodeType": "YulAssignment", + "src": "1208:17:55", + "value": { + "name": "value_1", + "nativeSrc": "1218:7:55", + "nodeType": "YulIdentifier", + "src": "1218:7:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1208:6:55", + "nodeType": "YulIdentifier", + "src": "1208:6:55" + } + ] + }, + { + "nativeSrc": "1234:46:55", + "nodeType": "YulVariableDeclaration", + "src": "1234:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1265:9:55", + "nodeType": "YulIdentifier", + "src": "1265:9:55" + }, + { + "kind": "number", + "nativeSrc": "1276:2:55", + "nodeType": "YulLiteral", + "src": "1276:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1261:3:55", + "nodeType": "YulIdentifier", + "src": "1261:3:55" + }, + "nativeSrc": "1261:18:55", + "nodeType": "YulFunctionCall", + "src": "1261:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1248:12:55", + "nodeType": "YulIdentifier", + "src": "1248:12:55" + }, + "nativeSrc": "1248:32:55", + "nodeType": "YulFunctionCall", + "src": "1248:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1238:6:55", + "nodeType": "YulTypedName", + "src": "1238:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1289:28:55", + "nodeType": "YulVariableDeclaration", + "src": "1289:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1307:2:55", + "nodeType": "YulLiteral", + "src": "1307:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1311:1:55", + "nodeType": "YulLiteral", + "src": "1311:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1303:3:55", + "nodeType": "YulIdentifier", + "src": "1303:3:55" + }, + "nativeSrc": "1303:10:55", + "nodeType": "YulFunctionCall", + "src": "1303:10:55" + }, + { + "kind": "number", + "nativeSrc": "1315:1:55", + "nodeType": "YulLiteral", + "src": "1315:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1299:3:55", + "nodeType": "YulIdentifier", + "src": "1299:3:55" + }, + "nativeSrc": "1299:18:55", + "nodeType": "YulFunctionCall", + "src": "1299:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1293:2:55", + "nodeType": "YulTypedName", + "src": "1293:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1344:16:55", + "nodeType": "YulBlock", + "src": "1344:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1353:1:55", + "nodeType": "YulLiteral", + "src": "1353:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1356:1:55", + "nodeType": "YulLiteral", + "src": "1356:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1346:6:55", + "nodeType": "YulIdentifier", + "src": "1346:6:55" + }, + "nativeSrc": "1346:12:55", + "nodeType": "YulFunctionCall", + "src": "1346:12:55" + }, + "nativeSrc": "1346:12:55", + "nodeType": "YulExpressionStatement", + "src": "1346:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1332:6:55", + "nodeType": "YulIdentifier", + "src": "1332:6:55" + }, + { + "name": "_1", + "nativeSrc": "1340:2:55", + "nodeType": "YulIdentifier", + "src": "1340:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1329:2:55", + "nodeType": "YulIdentifier", + "src": "1329:2:55" + }, + "nativeSrc": "1329:14:55", + "nodeType": "YulFunctionCall", + "src": "1329:14:55" + }, + "nativeSrc": "1326:34:55", + "nodeType": "YulIf", + "src": "1326:34:55" + }, + { + "nativeSrc": "1369:32:55", + "nodeType": "YulVariableDeclaration", + "src": "1369:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1383:9:55", + "nodeType": "YulIdentifier", + "src": "1383:9:55" + }, + { + "name": "offset", + "nativeSrc": "1394:6:55", + "nodeType": "YulIdentifier", + "src": "1394:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1379:3:55", + "nodeType": "YulIdentifier", + "src": "1379:3:55" + }, + "nativeSrc": "1379:22:55", + "nodeType": "YulFunctionCall", + "src": "1379:22:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1373:2:55", + "nodeType": "YulTypedName", + "src": "1373:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1449:16:55", + "nodeType": "YulBlock", + "src": "1449:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1458:1:55", + "nodeType": "YulLiteral", + "src": "1458:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1461:1:55", + "nodeType": "YulLiteral", + "src": "1461:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1451:6:55", + "nodeType": "YulIdentifier", + "src": "1451:6:55" + }, + "nativeSrc": "1451:12:55", + "nodeType": "YulFunctionCall", + "src": "1451:12:55" + }, + "nativeSrc": "1451:12:55", + "nodeType": "YulExpressionStatement", + "src": "1451:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1428:2:55", + "nodeType": "YulIdentifier", + "src": "1428:2:55" + }, + { + "kind": "number", + "nativeSrc": "1432:4:55", + "nodeType": "YulLiteral", + "src": "1432:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1424:3:55", + "nodeType": "YulIdentifier", + "src": "1424:3:55" + }, + "nativeSrc": "1424:13:55", + "nodeType": "YulFunctionCall", + "src": "1424:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "1439:7:55", + "nodeType": "YulIdentifier", + "src": "1439:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1420:3:55", + "nodeType": "YulIdentifier", + "src": "1420:3:55" + }, + "nativeSrc": "1420:27:55", + "nodeType": "YulFunctionCall", + "src": "1420:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1413:6:55", + "nodeType": "YulIdentifier", + "src": "1413:6:55" + }, + "nativeSrc": "1413:35:55", + "nodeType": "YulFunctionCall", + "src": "1413:35:55" + }, + "nativeSrc": "1410:55:55", + "nodeType": "YulIf", + "src": "1410:55:55" + }, + { + "nativeSrc": "1474:26:55", + "nodeType": "YulVariableDeclaration", + "src": "1474:26:55", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1497:2:55", + "nodeType": "YulIdentifier", + "src": "1497:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1484:12:55", + "nodeType": "YulIdentifier", + "src": "1484:12:55" + }, + "nativeSrc": "1484:16:55", + "nodeType": "YulFunctionCall", + "src": "1484:16:55" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "1478:2:55", + "nodeType": "YulTypedName", + "src": "1478:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1523:22:55", + "nodeType": "YulBlock", + "src": "1523:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1525:16:55", + "nodeType": "YulIdentifier", + "src": "1525:16:55" + }, + "nativeSrc": "1525:18:55", + "nodeType": "YulFunctionCall", + "src": "1525:18:55" + }, + "nativeSrc": "1525:18:55", + "nodeType": "YulExpressionStatement", + "src": "1525:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1515:2:55", + "nodeType": "YulIdentifier", + "src": "1515:2:55" + }, + { + "name": "_1", + "nativeSrc": "1519:2:55", + "nodeType": "YulIdentifier", + "src": "1519:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1512:2:55", + "nodeType": "YulIdentifier", + "src": "1512:2:55" + }, + "nativeSrc": "1512:10:55", + "nodeType": "YulFunctionCall", + "src": "1512:10:55" + }, + "nativeSrc": "1509:36:55", + "nodeType": "YulIf", + "src": "1509:36:55" + }, + { + "nativeSrc": "1554:17:55", + "nodeType": "YulVariableDeclaration", + "src": "1554:17:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1568:2:55", + "nodeType": "YulLiteral", + "src": "1568:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1564:3:55", + "nodeType": "YulIdentifier", + "src": "1564:3:55" + }, + "nativeSrc": "1564:7:55", + "nodeType": "YulFunctionCall", + "src": "1564:7:55" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "1558:2:55", + "nodeType": "YulTypedName", + "src": "1558:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1580:23:55", + "nodeType": "YulVariableDeclaration", + "src": "1580:23:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1600:2:55", + "nodeType": "YulLiteral", + "src": "1600:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1594:5:55", + "nodeType": "YulIdentifier", + "src": "1594:5:55" + }, + "nativeSrc": "1594:9:55", + "nodeType": "YulFunctionCall", + "src": "1594:9:55" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1584:6:55", + "nodeType": "YulTypedName", + "src": "1584:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1612:71:55", + "nodeType": "YulVariableDeclaration", + "src": "1612:71:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1634:6:55", + "nodeType": "YulIdentifier", + "src": "1634:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1658:2:55", + "nodeType": "YulIdentifier", + "src": "1658:2:55" + }, + { + "kind": "number", + "nativeSrc": "1662:4:55", + "nodeType": "YulLiteral", + "src": "1662:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1654:3:55", + "nodeType": "YulIdentifier", + "src": "1654:3:55" + }, + "nativeSrc": "1654:13:55", + "nodeType": "YulFunctionCall", + "src": "1654:13:55" + }, + { + "name": "_4", + "nativeSrc": "1669:2:55", + "nodeType": "YulIdentifier", + "src": "1669:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1650:3:55", + "nodeType": "YulIdentifier", + "src": "1650:3:55" + }, + "nativeSrc": "1650:22:55", + "nodeType": "YulFunctionCall", + "src": "1650:22:55" + }, + { + "kind": "number", + "nativeSrc": "1674:2:55", + "nodeType": "YulLiteral", + "src": "1674:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1646:3:55", + "nodeType": "YulIdentifier", + "src": "1646:3:55" + }, + "nativeSrc": "1646:31:55", + "nodeType": "YulFunctionCall", + "src": "1646:31:55" + }, + { + "name": "_4", + "nativeSrc": "1679:2:55", + "nodeType": "YulIdentifier", + "src": "1679:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1642:3:55", + "nodeType": "YulIdentifier", + "src": "1642:3:55" + }, + "nativeSrc": "1642:40:55", + "nodeType": "YulFunctionCall", + "src": "1642:40:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1630:3:55", + "nodeType": "YulIdentifier", + "src": "1630:3:55" + }, + "nativeSrc": "1630:53:55", + "nodeType": "YulFunctionCall", + "src": "1630:53:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1616:10:55", + "nodeType": "YulTypedName", + "src": "1616:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1742:22:55", + "nodeType": "YulBlock", + "src": "1742:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1744:16:55", + "nodeType": "YulIdentifier", + "src": "1744:16:55" + }, + "nativeSrc": "1744:18:55", + "nodeType": "YulFunctionCall", + "src": "1744:18:55" + }, + "nativeSrc": "1744:18:55", + "nodeType": "YulExpressionStatement", + "src": "1744:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1701:10:55", + "nodeType": "YulIdentifier", + "src": "1701:10:55" + }, + { + "name": "_1", + "nativeSrc": "1713:2:55", + "nodeType": "YulIdentifier", + "src": "1713:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1698:2:55", + "nodeType": "YulIdentifier", + "src": "1698:2:55" + }, + "nativeSrc": "1698:18:55", + "nodeType": "YulFunctionCall", + "src": "1698:18:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1721:10:55", + "nodeType": "YulIdentifier", + "src": "1721:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "1733:6:55", + "nodeType": "YulIdentifier", + "src": "1733:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1718:2:55", + "nodeType": "YulIdentifier", + "src": "1718:2:55" + }, + "nativeSrc": "1718:22:55", + "nodeType": "YulFunctionCall", + "src": "1718:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1695:2:55", + "nodeType": "YulIdentifier", + "src": "1695:2:55" + }, + "nativeSrc": "1695:46:55", + "nodeType": "YulFunctionCall", + "src": "1695:46:55" + }, + "nativeSrc": "1692:72:55", + "nodeType": "YulIf", + "src": "1692:72:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1780:2:55", + "nodeType": "YulLiteral", + "src": "1780:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1784:10:55", + "nodeType": "YulIdentifier", + "src": "1784:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1773:6:55", + "nodeType": "YulIdentifier", + "src": "1773:6:55" + }, + "nativeSrc": "1773:22:55", + "nodeType": "YulFunctionCall", + "src": "1773:22:55" + }, + "nativeSrc": "1773:22:55", + "nodeType": "YulExpressionStatement", + "src": "1773:22:55" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1811:6:55", + "nodeType": "YulIdentifier", + "src": "1811:6:55" + }, + { + "name": "_3", + "nativeSrc": "1819:2:55", + "nodeType": "YulIdentifier", + "src": "1819:2:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1804:6:55", + "nodeType": "YulIdentifier", + "src": "1804:6:55" + }, + "nativeSrc": "1804:18:55", + "nodeType": "YulFunctionCall", + "src": "1804:18:55" + }, + "nativeSrc": "1804:18:55", + "nodeType": "YulExpressionStatement", + "src": "1804:18:55" + }, + { + "body": { + "nativeSrc": "1868:16:55", + "nodeType": "YulBlock", + "src": "1868:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1877:1:55", + "nodeType": "YulLiteral", + "src": "1877:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1880:1:55", + "nodeType": "YulLiteral", + "src": "1880:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1870:6:55", + "nodeType": "YulIdentifier", + "src": "1870:6:55" + }, + "nativeSrc": "1870:12:55", + "nodeType": "YulFunctionCall", + "src": "1870:12:55" + }, + "nativeSrc": "1870:12:55", + "nodeType": "YulExpressionStatement", + "src": "1870:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1845:2:55", + "nodeType": "YulIdentifier", + "src": "1845:2:55" + }, + { + "name": "_3", + "nativeSrc": "1849:2:55", + "nodeType": "YulIdentifier", + "src": "1849:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1841:3:55", + "nodeType": "YulIdentifier", + "src": "1841:3:55" + }, + "nativeSrc": "1841:11:55", + "nodeType": "YulFunctionCall", + "src": "1841:11:55" + }, + { + "kind": "number", + "nativeSrc": "1854:2:55", + "nodeType": "YulLiteral", + "src": "1854:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1837:3:55", + "nodeType": "YulIdentifier", + "src": "1837:3:55" + }, + "nativeSrc": "1837:20:55", + "nodeType": "YulFunctionCall", + "src": "1837:20:55" + }, + { + "name": "dataEnd", + "nativeSrc": "1859:7:55", + "nodeType": "YulIdentifier", + "src": "1859:7:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1834:2:55", + "nodeType": "YulIdentifier", + "src": "1834:2:55" + }, + "nativeSrc": "1834:33:55", + "nodeType": "YulFunctionCall", + "src": "1834:33:55" + }, + "nativeSrc": "1831:53:55", + "nodeType": "YulIf", + "src": "1831:53:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1910:6:55", + "nodeType": "YulIdentifier", + "src": "1910:6:55" + }, + { + "kind": "number", + "nativeSrc": "1918:2:55", + "nodeType": "YulLiteral", + "src": "1918:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1906:3:55", + "nodeType": "YulIdentifier", + "src": "1906:3:55" + }, + "nativeSrc": "1906:15:55", + "nodeType": "YulFunctionCall", + "src": "1906:15:55" + }, + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1927:2:55", + "nodeType": "YulIdentifier", + "src": "1927:2:55" + }, + { + "kind": "number", + "nativeSrc": "1931:2:55", + "nodeType": "YulLiteral", + "src": "1931:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1923:3:55", + "nodeType": "YulIdentifier", + "src": "1923:3:55" + }, + "nativeSrc": "1923:11:55", + "nodeType": "YulFunctionCall", + "src": "1923:11:55" + }, + { + "name": "_3", + "nativeSrc": "1936:2:55", + "nodeType": "YulIdentifier", + "src": "1936:2:55" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1893:12:55", + "nodeType": "YulIdentifier", + "src": "1893:12:55" + }, + "nativeSrc": "1893:46:55", + "nodeType": "YulFunctionCall", + "src": "1893:46:55" + }, + "nativeSrc": "1893:46:55", + "nodeType": "YulExpressionStatement", + "src": "1893:46:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1963:6:55", + "nodeType": "YulIdentifier", + "src": "1963:6:55" + }, + { + "name": "_3", + "nativeSrc": "1971:2:55", + "nodeType": "YulIdentifier", + "src": "1971:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1959:3:55", + "nodeType": "YulIdentifier", + "src": "1959:3:55" + }, + "nativeSrc": "1959:15:55", + "nodeType": "YulFunctionCall", + "src": "1959:15:55" + }, + { + "kind": "number", + "nativeSrc": "1976:2:55", + "nodeType": "YulLiteral", + "src": "1976:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1955:3:55", + "nodeType": "YulIdentifier", + "src": "1955:3:55" + }, + "nativeSrc": "1955:24:55", + "nodeType": "YulFunctionCall", + "src": "1955:24:55" + }, + { + "kind": "number", + "nativeSrc": "1981:1:55", + "nodeType": "YulLiteral", + "src": "1981:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1948:6:55", + "nodeType": "YulIdentifier", + "src": "1948:6:55" + }, + "nativeSrc": "1948:35:55", + "nodeType": "YulFunctionCall", + "src": "1948:35:55" + }, + "nativeSrc": "1948:35:55", + "nodeType": "YulExpressionStatement", + "src": "1948:35:55" + }, + { + "nativeSrc": "1992:16:55", + "nodeType": "YulAssignment", + "src": "1992:16:55", + "value": { + "name": "memPtr", + "nativeSrc": "2002:6:55", + "nodeType": "YulIdentifier", + "src": "2002:6:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1992:6:55", + "nodeType": "YulIdentifier", + "src": "1992:6:55" + } + ] + }, + { + "nativeSrc": "2017:42:55", + "nodeType": "YulAssignment", + "src": "2017:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2044:9:55", + "nodeType": "YulIdentifier", + "src": "2044:9:55" + }, + { + "kind": "number", + "nativeSrc": "2055:2:55", + "nodeType": "YulLiteral", + "src": "2055:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2040:3:55", + "nodeType": "YulIdentifier", + "src": "2040:3:55" + }, + "nativeSrc": "2040:18:55", + "nodeType": "YulFunctionCall", + "src": "2040:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2027:12:55", + "nodeType": "YulIdentifier", + "src": "2027:12:55" + }, + "nativeSrc": "2027:32:55", + "nodeType": "YulFunctionCall", + "src": "2027:32:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "2017:6:55", + "nodeType": "YulIdentifier", + "src": "2017:6:55" + } + ] + }, + { + "nativeSrc": "2068:43:55", + "nodeType": "YulAssignment", + "src": "2068:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2095:9:55", + "nodeType": "YulIdentifier", + "src": "2095:9:55" + }, + { + "kind": "number", + "nativeSrc": "2106:3:55", + "nodeType": "YulLiteral", + "src": "2106:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2091:3:55", + "nodeType": "YulIdentifier", + "src": "2091:3:55" + }, + "nativeSrc": "2091:19:55", + "nodeType": "YulFunctionCall", + "src": "2091:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2078:12:55", + "nodeType": "YulIdentifier", + "src": "2078:12:55" + }, + "nativeSrc": "2078:33:55", + "nodeType": "YulFunctionCall", + "src": "2078:33:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "2068:6:55", + "nodeType": "YulIdentifier", + "src": "2068:6:55" + } + ] + }, + { + "nativeSrc": "2120:57:55", + "nodeType": "YulAssignment", + "src": "2120:57:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2161:9:55", + "nodeType": "YulIdentifier", + "src": "2161:9:55" + }, + { + "kind": "number", + "nativeSrc": "2172:3:55", + "nodeType": "YulLiteral", + "src": "2172:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2157:3:55", + "nodeType": "YulIdentifier", + "src": "2157:3:55" + }, + "nativeSrc": "2157:19:55", + "nodeType": "YulFunctionCall", + "src": "2157:19:55" + } + ], + "functionName": { + "name": "abi_decode_contract_IERC20", + "nativeSrc": "2130:26:55", + "nodeType": "YulIdentifier", + "src": "2130:26:55" + }, + "nativeSrc": "2130:47:55", + "nodeType": "YulFunctionCall", + "src": "2130:47:55" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "2120:6:55", + "nodeType": "YulIdentifier", + "src": "2120:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445", + "nativeSrc": "749:1434:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "855:9:55", + "nodeType": "YulTypedName", + "src": "855:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "866:7:55", + "nodeType": "YulTypedName", + "src": "866:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "878:6:55", + "nodeType": "YulTypedName", + "src": "878:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "886:6:55", + "nodeType": "YulTypedName", + "src": "886:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "894:6:55", + "nodeType": "YulTypedName", + "src": "894:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "902:6:55", + "nodeType": "YulTypedName", + "src": "902:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "910:6:55", + "nodeType": "YulTypedName", + "src": "910:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "918:6:55", + "nodeType": "YulTypedName", + "src": "918:6:55", + "type": "" + } + ], + "src": "749:1434:55" + }, + { + "body": { + "nativeSrc": "2289:76:55", + "nodeType": "YulBlock", + "src": "2289:76:55", + "statements": [ + { + "nativeSrc": "2299:26:55", + "nodeType": "YulAssignment", + "src": "2299:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2311:9:55", + "nodeType": "YulIdentifier", + "src": "2311:9:55" + }, + { + "kind": "number", + "nativeSrc": "2322:2:55", + "nodeType": "YulLiteral", + "src": "2322:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2307:3:55", + "nodeType": "YulIdentifier", + "src": "2307:3:55" + }, + "nativeSrc": "2307:18:55", + "nodeType": "YulFunctionCall", + "src": "2307:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2299:4:55", + "nodeType": "YulIdentifier", + "src": "2299:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2341:9:55", + "nodeType": "YulIdentifier", + "src": "2341:9:55" + }, + { + "name": "value0", + "nativeSrc": "2352:6:55", + "nodeType": "YulIdentifier", + "src": "2352:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2334:6:55", + "nodeType": "YulIdentifier", + "src": "2334:6:55" + }, + "nativeSrc": "2334:25:55", + "nodeType": "YulFunctionCall", + "src": "2334:25:55" + }, + "nativeSrc": "2334:25:55", + "nodeType": "YulExpressionStatement", + "src": "2334:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "2188:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2258:9:55", + "nodeType": "YulTypedName", + "src": "2258:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2269:6:55", + "nodeType": "YulTypedName", + "src": "2269:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2280:4:55", + "nodeType": "YulTypedName", + "src": "2280:4:55", + "type": "" + } + ], + "src": "2188:177:55" + }, + { + "body": { + "nativeSrc": "2483:214:55", + "nodeType": "YulBlock", + "src": "2483:214:55", + "statements": [ + { + "body": { + "nativeSrc": "2529:16:55", + "nodeType": "YulBlock", + "src": "2529:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2538:1:55", + "nodeType": "YulLiteral", + "src": "2538:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2541:1:55", + "nodeType": "YulLiteral", + "src": "2541:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2531:6:55", + "nodeType": "YulIdentifier", + "src": "2531:6:55" + }, + "nativeSrc": "2531:12:55", + "nodeType": "YulFunctionCall", + "src": "2531:12:55" + }, + "nativeSrc": "2531:12:55", + "nodeType": "YulExpressionStatement", + "src": "2531:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2504:7:55", + "nodeType": "YulIdentifier", + "src": "2504:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2513:9:55", + "nodeType": "YulIdentifier", + "src": "2513:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2500:3:55", + "nodeType": "YulIdentifier", + "src": "2500:3:55" + }, + "nativeSrc": "2500:23:55", + "nodeType": "YulFunctionCall", + "src": "2500:23:55" + }, + { + "kind": "number", + "nativeSrc": "2525:2:55", + "nodeType": "YulLiteral", + "src": "2525:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2496:3:55", + "nodeType": "YulIdentifier", + "src": "2496:3:55" + }, + "nativeSrc": "2496:32:55", + "nodeType": "YulFunctionCall", + "src": "2496:32:55" + }, + "nativeSrc": "2493:52:55", + "nodeType": "YulIf", + "src": "2493:52:55" + }, + { + "nativeSrc": "2554:26:55", + "nodeType": "YulAssignment", + "src": "2554:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2570:9:55", + "nodeType": "YulIdentifier", + "src": "2570:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2564:5:55", + "nodeType": "YulIdentifier", + "src": "2564:5:55" + }, + "nativeSrc": "2564:16:55", + "nodeType": "YulFunctionCall", + "src": "2564:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2554:6:55", + "nodeType": "YulIdentifier", + "src": "2554:6:55" + } + ] + }, + { + "nativeSrc": "2589:38:55", + "nodeType": "YulVariableDeclaration", + "src": "2589:38:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2612:9:55", + "nodeType": "YulIdentifier", + "src": "2612:9:55" + }, + { + "kind": "number", + "nativeSrc": "2623:2:55", + "nodeType": "YulLiteral", + "src": "2623:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2608:3:55", + "nodeType": "YulIdentifier", + "src": "2608:3:55" + }, + "nativeSrc": "2608:18:55", + "nodeType": "YulFunctionCall", + "src": "2608:18:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2602:5:55", + "nodeType": "YulIdentifier", + "src": "2602:5:55" + }, + "nativeSrc": "2602:25:55", + "nodeType": "YulFunctionCall", + "src": "2602:25:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2593:5:55", + "nodeType": "YulTypedName", + "src": "2593:5:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2661:5:55", + "nodeType": "YulIdentifier", + "src": "2661:5:55" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2636:24:55", + "nodeType": "YulIdentifier", + "src": "2636:24:55" + }, + "nativeSrc": "2636:31:55", + "nodeType": "YulFunctionCall", + "src": "2636:31:55" + }, + "nativeSrc": "2636:31:55", + "nodeType": "YulExpressionStatement", + "src": "2636:31:55" + }, + { + "nativeSrc": "2676:15:55", + "nodeType": "YulAssignment", + "src": "2676:15:55", + "value": { + "name": "value", + "nativeSrc": "2686:5:55", + "nodeType": "YulIdentifier", + "src": "2686:5:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2676:6:55", + "nodeType": "YulIdentifier", + "src": "2676:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_contract$_IERC20_$4445_fromMemory", + "nativeSrc": "2370:327:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2441:9:55", + "nodeType": "YulTypedName", + "src": "2441:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2452:7:55", + "nodeType": "YulTypedName", + "src": "2452:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2464:6:55", + "nodeType": "YulTypedName", + "src": "2464:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2472:6:55", + "nodeType": "YulTypedName", + "src": "2472:6:55", + "type": "" + } + ], + "src": "2370:327:55" + }, + { + "body": { + "nativeSrc": "2831:145:55", + "nodeType": "YulBlock", + "src": "2831:145:55", + "statements": [ + { + "nativeSrc": "2841:26:55", + "nodeType": "YulAssignment", + "src": "2841:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2853:9:55", + "nodeType": "YulIdentifier", + "src": "2853:9:55" + }, + { + "kind": "number", + "nativeSrc": "2864:2:55", + "nodeType": "YulLiteral", + "src": "2864:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2849:3:55", + "nodeType": "YulIdentifier", + "src": "2849:3:55" + }, + "nativeSrc": "2849:18:55", + "nodeType": "YulFunctionCall", + "src": "2849:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2841:4:55", + "nodeType": "YulIdentifier", + "src": "2841:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2883:9:55", + "nodeType": "YulIdentifier", + "src": "2883:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2898:6:55", + "nodeType": "YulIdentifier", + "src": "2898:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2914:3:55", + "nodeType": "YulLiteral", + "src": "2914:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2919:1:55", + "nodeType": "YulLiteral", + "src": "2919:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2910:3:55", + "nodeType": "YulIdentifier", + "src": "2910:3:55" + }, + "nativeSrc": "2910:11:55", + "nodeType": "YulFunctionCall", + "src": "2910:11:55" + }, + { + "kind": "number", + "nativeSrc": "2923:1:55", + "nodeType": "YulLiteral", + "src": "2923:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2906:3:55", + "nodeType": "YulIdentifier", + "src": "2906:3:55" + }, + "nativeSrc": "2906:19:55", + "nodeType": "YulFunctionCall", + "src": "2906:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2894:3:55", + "nodeType": "YulIdentifier", + "src": "2894:3:55" + }, + "nativeSrc": "2894:32:55", + "nodeType": "YulFunctionCall", + "src": "2894:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2876:6:55", + "nodeType": "YulIdentifier", + "src": "2876:6:55" + }, + "nativeSrc": "2876:51:55", + "nodeType": "YulFunctionCall", + "src": "2876:51:55" + }, + "nativeSrc": "2876:51:55", + "nodeType": "YulExpressionStatement", + "src": "2876:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2947:9:55", + "nodeType": "YulIdentifier", + "src": "2947:9:55" + }, + { + "kind": "number", + "nativeSrc": "2958:2:55", + "nodeType": "YulLiteral", + "src": "2958:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2943:3:55", + "nodeType": "YulIdentifier", + "src": "2943:3:55" + }, + "nativeSrc": "2943:18:55", + "nodeType": "YulFunctionCall", + "src": "2943:18:55" + }, + { + "name": "value1", + "nativeSrc": "2963:6:55", + "nodeType": "YulIdentifier", + "src": "2963:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2936:6:55", + "nodeType": "YulIdentifier", + "src": "2936:6:55" + }, + "nativeSrc": "2936:34:55", + "nodeType": "YulFunctionCall", + "src": "2936:34:55" + }, + "nativeSrc": "2936:34:55", + "nodeType": "YulExpressionStatement", + "src": "2936:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "2702:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2792:9:55", + "nodeType": "YulTypedName", + "src": "2792:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2803:6:55", + "nodeType": "YulTypedName", + "src": "2803:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2811:6:55", + "nodeType": "YulTypedName", + "src": "2811:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2822:4:55", + "nodeType": "YulTypedName", + "src": "2822:4:55", + "type": "" + } + ], + "src": "2702:274:55" + }, + { + "body": { + "nativeSrc": "3059:199:55", + "nodeType": "YulBlock", + "src": "3059:199:55", + "statements": [ + { + "body": { + "nativeSrc": "3105:16:55", + "nodeType": "YulBlock", + "src": "3105:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3114:1:55", + "nodeType": "YulLiteral", + "src": "3114:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3117:1:55", + "nodeType": "YulLiteral", + "src": "3117:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3107:6:55", + "nodeType": "YulIdentifier", + "src": "3107:6:55" + }, + "nativeSrc": "3107:12:55", + "nodeType": "YulFunctionCall", + "src": "3107:12:55" + }, + "nativeSrc": "3107:12:55", + "nodeType": "YulExpressionStatement", + "src": "3107:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3080:7:55", + "nodeType": "YulIdentifier", + "src": "3080:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3089:9:55", + "nodeType": "YulIdentifier", + "src": "3089:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3076:3:55", + "nodeType": "YulIdentifier", + "src": "3076:3:55" + }, + "nativeSrc": "3076:23:55", + "nodeType": "YulFunctionCall", + "src": "3076:23:55" + }, + { + "kind": "number", + "nativeSrc": "3101:2:55", + "nodeType": "YulLiteral", + "src": "3101:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3072:3:55", + "nodeType": "YulIdentifier", + "src": "3072:3:55" + }, + "nativeSrc": "3072:32:55", + "nodeType": "YulFunctionCall", + "src": "3072:32:55" + }, + "nativeSrc": "3069:52:55", + "nodeType": "YulIf", + "src": "3069:52:55" + }, + { + "nativeSrc": "3130:29:55", + "nodeType": "YulVariableDeclaration", + "src": "3130:29:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3149:9:55", + "nodeType": "YulIdentifier", + "src": "3149:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3143:5:55", + "nodeType": "YulIdentifier", + "src": "3143:5:55" + }, + "nativeSrc": "3143:16:55", + "nodeType": "YulFunctionCall", + "src": "3143:16:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3134:5:55", + "nodeType": "YulTypedName", + "src": "3134:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3212:16:55", + "nodeType": "YulBlock", + "src": "3212:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3221:1:55", + "nodeType": "YulLiteral", + "src": "3221:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3224:1:55", + "nodeType": "YulLiteral", + "src": "3224:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3214:6:55", + "nodeType": "YulIdentifier", + "src": "3214:6:55" + }, + "nativeSrc": "3214:12:55", + "nodeType": "YulFunctionCall", + "src": "3214:12:55" + }, + "nativeSrc": "3214:12:55", + "nodeType": "YulExpressionStatement", + "src": "3214:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3181:5:55", + "nodeType": "YulIdentifier", + "src": "3181:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3202:5:55", + "nodeType": "YulIdentifier", + "src": "3202:5:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3195:6:55", + "nodeType": "YulIdentifier", + "src": "3195:6:55" + }, + "nativeSrc": "3195:13:55", + "nodeType": "YulFunctionCall", + "src": "3195:13:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3188:6:55", + "nodeType": "YulIdentifier", + "src": "3188:6:55" + }, + "nativeSrc": "3188:21:55", + "nodeType": "YulFunctionCall", + "src": "3188:21:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "3178:2:55", + "nodeType": "YulIdentifier", + "src": "3178:2:55" + }, + "nativeSrc": "3178:32:55", + "nodeType": "YulFunctionCall", + "src": "3178:32:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3171:6:55", + "nodeType": "YulIdentifier", + "src": "3171:6:55" + }, + "nativeSrc": "3171:40:55", + "nodeType": "YulFunctionCall", + "src": "3171:40:55" + }, + "nativeSrc": "3168:60:55", + "nodeType": "YulIf", + "src": "3168:60:55" + }, + { + "nativeSrc": "3237:15:55", + "nodeType": "YulAssignment", + "src": "3237:15:55", + "value": { + "name": "value", + "nativeSrc": "3247:5:55", + "nodeType": "YulIdentifier", + "src": "3247:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3237:6:55", + "nodeType": "YulIdentifier", + "src": "3237:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "2981:277:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3025:9:55", + "nodeType": "YulTypedName", + "src": "3025:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3036:7:55", + "nodeType": "YulTypedName", + "src": "3036:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3048:6:55", + "nodeType": "YulTypedName", + "src": "3048:6:55", + "type": "" + } + ], + "src": "2981:277:55" + }, + { + "body": { + "nativeSrc": "3420:218:55", + "nodeType": "YulBlock", + "src": "3420:218:55", + "statements": [ + { + "nativeSrc": "3430:26:55", + "nodeType": "YulAssignment", + "src": "3430:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3442:9:55", + "nodeType": "YulIdentifier", + "src": "3442:9:55" + }, + { + "kind": "number", + "nativeSrc": "3453:2:55", + "nodeType": "YulLiteral", + "src": "3453:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3438:3:55", + "nodeType": "YulIdentifier", + "src": "3438:3:55" + }, + "nativeSrc": "3438:18:55", + "nodeType": "YulFunctionCall", + "src": "3438:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3430:4:55", + "nodeType": "YulIdentifier", + "src": "3430:4:55" + } + ] + }, + { + "nativeSrc": "3465:29:55", + "nodeType": "YulVariableDeclaration", + "src": "3465:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3483:3:55", + "nodeType": "YulLiteral", + "src": "3483:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3488:1:55", + "nodeType": "YulLiteral", + "src": "3488:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3479:3:55", + "nodeType": "YulIdentifier", + "src": "3479:3:55" + }, + "nativeSrc": "3479:11:55", + "nodeType": "YulFunctionCall", + "src": "3479:11:55" + }, + { + "kind": "number", + "nativeSrc": "3492:1:55", + "nodeType": "YulLiteral", + "src": "3492:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3475:3:55", + "nodeType": "YulIdentifier", + "src": "3475:3:55" + }, + "nativeSrc": "3475:19:55", + "nodeType": "YulFunctionCall", + "src": "3475:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3469:2:55", + "nodeType": "YulTypedName", + "src": "3469:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3510:9:55", + "nodeType": "YulIdentifier", + "src": "3510:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3525:6:55", + "nodeType": "YulIdentifier", + "src": "3525:6:55" + }, + { + "name": "_1", + "nativeSrc": "3533:2:55", + "nodeType": "YulIdentifier", + "src": "3533:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3521:3:55", + "nodeType": "YulIdentifier", + "src": "3521:3:55" + }, + "nativeSrc": "3521:15:55", + "nodeType": "YulFunctionCall", + "src": "3521:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3503:6:55", + "nodeType": "YulIdentifier", + "src": "3503:6:55" + }, + "nativeSrc": "3503:34:55", + "nodeType": "YulFunctionCall", + "src": "3503:34:55" + }, + "nativeSrc": "3503:34:55", + "nodeType": "YulExpressionStatement", + "src": "3503:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3557:9:55", + "nodeType": "YulIdentifier", + "src": "3557:9:55" + }, + { + "kind": "number", + "nativeSrc": "3568:2:55", + "nodeType": "YulLiteral", + "src": "3568:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3553:3:55", + "nodeType": "YulIdentifier", + "src": "3553:3:55" + }, + "nativeSrc": "3553:18:55", + "nodeType": "YulFunctionCall", + "src": "3553:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "3577:6:55", + "nodeType": "YulIdentifier", + "src": "3577:6:55" + }, + { + "name": "_1", + "nativeSrc": "3585:2:55", + "nodeType": "YulIdentifier", + "src": "3585:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3573:3:55", + "nodeType": "YulIdentifier", + "src": "3573:3:55" + }, + "nativeSrc": "3573:15:55", + "nodeType": "YulFunctionCall", + "src": "3573:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3546:6:55", + "nodeType": "YulIdentifier", + "src": "3546:6:55" + }, + "nativeSrc": "3546:43:55", + "nodeType": "YulFunctionCall", + "src": "3546:43:55" + }, + "nativeSrc": "3546:43:55", + "nodeType": "YulExpressionStatement", + "src": "3546:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3609:9:55", + "nodeType": "YulIdentifier", + "src": "3609:9:55" + }, + { + "kind": "number", + "nativeSrc": "3620:2:55", + "nodeType": "YulLiteral", + "src": "3620:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3605:3:55", + "nodeType": "YulIdentifier", + "src": "3605:3:55" + }, + "nativeSrc": "3605:18:55", + "nodeType": "YulFunctionCall", + "src": "3605:18:55" + }, + { + "name": "value2", + "nativeSrc": "3625:6:55", + "nodeType": "YulIdentifier", + "src": "3625:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3598:6:55", + "nodeType": "YulIdentifier", + "src": "3598:6:55" + }, + "nativeSrc": "3598:34:55", + "nodeType": "YulFunctionCall", + "src": "3598:34:55" + }, + "nativeSrc": "3598:34:55", + "nodeType": "YulExpressionStatement", + "src": "3598:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "3263:375:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3373:9:55", + "nodeType": "YulTypedName", + "src": "3373:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3384:6:55", + "nodeType": "YulTypedName", + "src": "3384:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3392:6:55", + "nodeType": "YulTypedName", + "src": "3392:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3400:6:55", + "nodeType": "YulTypedName", + "src": "3400:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3411:4:55", + "nodeType": "YulTypedName", + "src": "3411:4:55", + "type": "" + } + ], + "src": "3263:375:55" + }, + { + "body": { + "nativeSrc": "3695:60:55", + "nodeType": "YulBlock", + "src": "3695:60:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3712:3:55", + "nodeType": "YulIdentifier", + "src": "3712:3:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3721:5:55", + "nodeType": "YulIdentifier", + "src": "3721:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3736:3:55", + "nodeType": "YulLiteral", + "src": "3736:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3741:1:55", + "nodeType": "YulLiteral", + "src": "3741:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3732:3:55", + "nodeType": "YulIdentifier", + "src": "3732:3:55" + }, + "nativeSrc": "3732:11:55", + "nodeType": "YulFunctionCall", + "src": "3732:11:55" + }, + { + "kind": "number", + "nativeSrc": "3745:1:55", + "nodeType": "YulLiteral", + "src": "3745:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3728:3:55", + "nodeType": "YulIdentifier", + "src": "3728:3:55" + }, + "nativeSrc": "3728:19:55", + "nodeType": "YulFunctionCall", + "src": "3728:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3717:3:55", + "nodeType": "YulIdentifier", + "src": "3717:3:55" + }, + "nativeSrc": "3717:31:55", + "nodeType": "YulFunctionCall", + "src": "3717:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3705:6:55", + "nodeType": "YulIdentifier", + "src": "3705:6:55" + }, + "nativeSrc": "3705:44:55", + "nodeType": "YulFunctionCall", + "src": "3705:44:55" + }, + "nativeSrc": "3705:44:55", + "nodeType": "YulExpressionStatement", + "src": "3705:44:55" + } + ] + }, + "name": "abi_encode_contract_IERC20", + "nativeSrc": "3643:112:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3679:5:55", + "nodeType": "YulTypedName", + "src": "3679:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3686:3:55", + "nodeType": "YulTypedName", + "src": "3686:3:55", + "type": "" + } + ], + "src": "3643:112:55" + }, + { + "body": { + "nativeSrc": "4008:651:55", + "nodeType": "YulBlock", + "src": "4008:651:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4025:9:55", + "nodeType": "YulIdentifier", + "src": "4025:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4040:6:55", + "nodeType": "YulIdentifier", + "src": "4040:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4056:3:55", + "nodeType": "YulLiteral", + "src": "4056:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4061:1:55", + "nodeType": "YulLiteral", + "src": "4061:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4052:3:55", + "nodeType": "YulIdentifier", + "src": "4052:3:55" + }, + "nativeSrc": "4052:11:55", + "nodeType": "YulFunctionCall", + "src": "4052:11:55" + }, + { + "kind": "number", + "nativeSrc": "4065:1:55", + "nodeType": "YulLiteral", + "src": "4065:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4048:3:55", + "nodeType": "YulIdentifier", + "src": "4048:3:55" + }, + "nativeSrc": "4048:19:55", + "nodeType": "YulFunctionCall", + "src": "4048:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4036:3:55", + "nodeType": "YulIdentifier", + "src": "4036:3:55" + }, + "nativeSrc": "4036:32:55", + "nodeType": "YulFunctionCall", + "src": "4036:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4018:6:55", + "nodeType": "YulIdentifier", + "src": "4018:6:55" + }, + "nativeSrc": "4018:51:55", + "nodeType": "YulFunctionCall", + "src": "4018:51:55" + }, + "nativeSrc": "4018:51:55", + "nodeType": "YulExpressionStatement", + "src": "4018:51:55" + }, + { + "nativeSrc": "4078:12:55", + "nodeType": "YulVariableDeclaration", + "src": "4078:12:55", + "value": { + "kind": "number", + "nativeSrc": "4088:2:55", + "nodeType": "YulLiteral", + "src": "4088:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4082:2:55", + "nodeType": "YulTypedName", + "src": "4082:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4110:9:55", + "nodeType": "YulIdentifier", + "src": "4110:9:55" + }, + { + "kind": "number", + "nativeSrc": "4121:2:55", + "nodeType": "YulLiteral", + "src": "4121:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4106:3:55", + "nodeType": "YulIdentifier", + "src": "4106:3:55" + }, + "nativeSrc": "4106:18:55", + "nodeType": "YulFunctionCall", + "src": "4106:18:55" + }, + { + "kind": "number", + "nativeSrc": "4126:3:55", + "nodeType": "YulLiteral", + "src": "4126:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4099:6:55", + "nodeType": "YulIdentifier", + "src": "4099:6:55" + }, + "nativeSrc": "4099:31:55", + "nodeType": "YulFunctionCall", + "src": "4099:31:55" + }, + "nativeSrc": "4099:31:55", + "nodeType": "YulExpressionStatement", + "src": "4099:31:55" + }, + { + "nativeSrc": "4139:27:55", + "nodeType": "YulVariableDeclaration", + "src": "4139:27:55", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "4159:6:55", + "nodeType": "YulIdentifier", + "src": "4159:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4153:5:55", + "nodeType": "YulIdentifier", + "src": "4153:5:55" + }, + "nativeSrc": "4153:13:55", + "nodeType": "YulFunctionCall", + "src": "4153:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4143:6:55", + "nodeType": "YulTypedName", + "src": "4143:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4186:9:55", + "nodeType": "YulIdentifier", + "src": "4186:9:55" + }, + { + "kind": "number", + "nativeSrc": "4197:3:55", + "nodeType": "YulLiteral", + "src": "4197:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4182:3:55", + "nodeType": "YulIdentifier", + "src": "4182:3:55" + }, + "nativeSrc": "4182:19:55", + "nodeType": "YulFunctionCall", + "src": "4182:19:55" + }, + { + "name": "length", + "nativeSrc": "4203:6:55", + "nodeType": "YulIdentifier", + "src": "4203:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4175:6:55", + "nodeType": "YulIdentifier", + "src": "4175:6:55" + }, + "nativeSrc": "4175:35:55", + "nodeType": "YulFunctionCall", + "src": "4175:35:55" + }, + "nativeSrc": "4175:35:55", + "nodeType": "YulExpressionStatement", + "src": "4175:35:55" + }, + { + "nativeSrc": "4219:10:55", + "nodeType": "YulVariableDeclaration", + "src": "4219:10:55", + "value": { + "kind": "number", + "nativeSrc": "4228:1:55", + "nodeType": "YulLiteral", + "src": "4228:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4223:1:55", + "nodeType": "YulTypedName", + "src": "4223:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4288:91:55", + "nodeType": "YulBlock", + "src": "4288:91:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4317:9:55", + "nodeType": "YulIdentifier", + "src": "4317:9:55" + }, + { + "name": "i", + "nativeSrc": "4328:1:55", + "nodeType": "YulIdentifier", + "src": "4328:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4313:3:55", + "nodeType": "YulIdentifier", + "src": "4313:3:55" + }, + "nativeSrc": "4313:17:55", + "nodeType": "YulFunctionCall", + "src": "4313:17:55" + }, + { + "kind": "number", + "nativeSrc": "4332:3:55", + "nodeType": "YulLiteral", + "src": "4332:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4309:3:55", + "nodeType": "YulIdentifier", + "src": "4309:3:55" + }, + "nativeSrc": "4309:27:55", + "nodeType": "YulFunctionCall", + "src": "4309:27:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "4352:6:55", + "nodeType": "YulIdentifier", + "src": "4352:6:55" + }, + { + "name": "i", + "nativeSrc": "4360:1:55", + "nodeType": "YulIdentifier", + "src": "4360:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4348:3:55", + "nodeType": "YulIdentifier", + "src": "4348:3:55" + }, + "nativeSrc": "4348:14:55", + "nodeType": "YulFunctionCall", + "src": "4348:14:55" + }, + { + "name": "_1", + "nativeSrc": "4364:2:55", + "nodeType": "YulIdentifier", + "src": "4364:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4344:3:55", + "nodeType": "YulIdentifier", + "src": "4344:3:55" + }, + "nativeSrc": "4344:23:55", + "nodeType": "YulFunctionCall", + "src": "4344:23:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4338:5:55", + "nodeType": "YulIdentifier", + "src": "4338:5:55" + }, + "nativeSrc": "4338:30:55", + "nodeType": "YulFunctionCall", + "src": "4338:30:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4302:6:55", + "nodeType": "YulIdentifier", + "src": "4302:6:55" + }, + "nativeSrc": "4302:67:55", + "nodeType": "YulFunctionCall", + "src": "4302:67:55" + }, + "nativeSrc": "4302:67:55", + "nodeType": "YulExpressionStatement", + "src": "4302:67:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4249:1:55", + "nodeType": "YulIdentifier", + "src": "4249:1:55" + }, + { + "name": "length", + "nativeSrc": "4252:6:55", + "nodeType": "YulIdentifier", + "src": "4252:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4246:2:55", + "nodeType": "YulIdentifier", + "src": "4246:2:55" + }, + "nativeSrc": "4246:13:55", + "nodeType": "YulFunctionCall", + "src": "4246:13:55" + }, + "nativeSrc": "4238:141:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4260:19:55", + "nodeType": "YulBlock", + "src": "4260:19:55", + "statements": [ + { + "nativeSrc": "4262:15:55", + "nodeType": "YulAssignment", + "src": "4262:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4271:1:55", + "nodeType": "YulIdentifier", + "src": "4271:1:55" + }, + { + "name": "_1", + "nativeSrc": "4274:2:55", + "nodeType": "YulIdentifier", + "src": "4274:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4267:3:55", + "nodeType": "YulIdentifier", + "src": "4267:3:55" + }, + "nativeSrc": "4267:10:55", + "nodeType": "YulFunctionCall", + "src": "4267:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4262:1:55", + "nodeType": "YulIdentifier", + "src": "4262:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "4242:3:55", + "nodeType": "YulBlock", + "src": "4242:3:55", + "statements": [] + }, + "src": "4238:141:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4403:9:55", + "nodeType": "YulIdentifier", + "src": "4403:9:55" + }, + { + "name": "length", + "nativeSrc": "4414:6:55", + "nodeType": "YulIdentifier", + "src": "4414:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4399:3:55", + "nodeType": "YulIdentifier", + "src": "4399:3:55" + }, + "nativeSrc": "4399:22:55", + "nodeType": "YulFunctionCall", + "src": "4399:22:55" + }, + { + "kind": "number", + "nativeSrc": "4423:3:55", + "nodeType": "YulLiteral", + "src": "4423:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4395:3:55", + "nodeType": "YulIdentifier", + "src": "4395:3:55" + }, + "nativeSrc": "4395:32:55", + "nodeType": "YulFunctionCall", + "src": "4395:32:55" + }, + { + "kind": "number", + "nativeSrc": "4429:1:55", + "nodeType": "YulLiteral", + "src": "4429:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4388:6:55", + "nodeType": "YulIdentifier", + "src": "4388:6:55" + }, + "nativeSrc": "4388:43:55", + "nodeType": "YulFunctionCall", + "src": "4388:43:55" + }, + "nativeSrc": "4388:43:55", + "nodeType": "YulExpressionStatement", + "src": "4388:43:55" + }, + { + "nativeSrc": "4440:63:55", + "nodeType": "YulAssignment", + "src": "4440:63:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4456:9:55", + "nodeType": "YulIdentifier", + "src": "4456:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "4475:6:55", + "nodeType": "YulIdentifier", + "src": "4475:6:55" + }, + { + "kind": "number", + "nativeSrc": "4483:2:55", + "nodeType": "YulLiteral", + "src": "4483:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4471:3:55", + "nodeType": "YulIdentifier", + "src": "4471:3:55" + }, + "nativeSrc": "4471:15:55", + "nodeType": "YulFunctionCall", + "src": "4471:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4492:2:55", + "nodeType": "YulLiteral", + "src": "4492:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4488:3:55", + "nodeType": "YulIdentifier", + "src": "4488:3:55" + }, + "nativeSrc": "4488:7:55", + "nodeType": "YulFunctionCall", + "src": "4488:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4467:3:55", + "nodeType": "YulIdentifier", + "src": "4467:3:55" + }, + "nativeSrc": "4467:29:55", + "nodeType": "YulFunctionCall", + "src": "4467:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4452:3:55", + "nodeType": "YulIdentifier", + "src": "4452:3:55" + }, + "nativeSrc": "4452:45:55", + "nodeType": "YulFunctionCall", + "src": "4452:45:55" + }, + { + "kind": "number", + "nativeSrc": "4499:3:55", + "nodeType": "YulLiteral", + "src": "4499:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4448:3:55", + "nodeType": "YulIdentifier", + "src": "4448:3:55" + }, + "nativeSrc": "4448:55:55", + "nodeType": "YulFunctionCall", + "src": "4448:55:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4440:4:55", + "nodeType": "YulIdentifier", + "src": "4440:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4523:9:55", + "nodeType": "YulIdentifier", + "src": "4523:9:55" + }, + { + "kind": "number", + "nativeSrc": "4534:2:55", + "nodeType": "YulLiteral", + "src": "4534:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4519:3:55", + "nodeType": "YulIdentifier", + "src": "4519:3:55" + }, + "nativeSrc": "4519:18:55", + "nodeType": "YulFunctionCall", + "src": "4519:18:55" + }, + { + "name": "value2", + "nativeSrc": "4539:6:55", + "nodeType": "YulIdentifier", + "src": "4539:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4512:6:55", + "nodeType": "YulIdentifier", + "src": "4512:6:55" + }, + "nativeSrc": "4512:34:55", + "nodeType": "YulFunctionCall", + "src": "4512:34:55" + }, + "nativeSrc": "4512:34:55", + "nodeType": "YulExpressionStatement", + "src": "4512:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4566:9:55", + "nodeType": "YulIdentifier", + "src": "4566:9:55" + }, + { + "kind": "number", + "nativeSrc": "4577:2:55", + "nodeType": "YulLiteral", + "src": "4577:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4562:3:55", + "nodeType": "YulIdentifier", + "src": "4562:3:55" + }, + "nativeSrc": "4562:18:55", + "nodeType": "YulFunctionCall", + "src": "4562:18:55" + }, + { + "name": "value3", + "nativeSrc": "4582:6:55", + "nodeType": "YulIdentifier", + "src": "4582:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4555:6:55", + "nodeType": "YulIdentifier", + "src": "4555:6:55" + }, + "nativeSrc": "4555:34:55", + "nodeType": "YulFunctionCall", + "src": "4555:34:55" + }, + "nativeSrc": "4555:34:55", + "nodeType": "YulExpressionStatement", + "src": "4555:34:55" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nativeSrc": "4625:6:55", + "nodeType": "YulIdentifier", + "src": "4625:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4637:9:55", + "nodeType": "YulIdentifier", + "src": "4637:9:55" + }, + { + "kind": "number", + "nativeSrc": "4648:3:55", + "nodeType": "YulLiteral", + "src": "4648:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4633:3:55", + "nodeType": "YulIdentifier", + "src": "4633:3:55" + }, + "nativeSrc": "4633:19:55", + "nodeType": "YulFunctionCall", + "src": "4633:19:55" + } + ], + "functionName": { + "name": "abi_encode_contract_IERC20", + "nativeSrc": "4598:26:55", + "nodeType": "YulIdentifier", + "src": "4598:26:55" + }, + "nativeSrc": "4598:55:55", + "nodeType": "YulFunctionCall", + "src": "4598:55:55" + }, + "nativeSrc": "4598:55:55", + "nodeType": "YulExpressionStatement", + "src": "4598:55:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "3760:899:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3945:9:55", + "nodeType": "YulTypedName", + "src": "3945:9:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "3956:6:55", + "nodeType": "YulTypedName", + "src": "3956:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "3964:6:55", + "nodeType": "YulTypedName", + "src": "3964:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3972:6:55", + "nodeType": "YulTypedName", + "src": "3972:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3980:6:55", + "nodeType": "YulTypedName", + "src": "3980:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3988:6:55", + "nodeType": "YulTypedName", + "src": "3988:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3999:4:55", + "nodeType": "YulTypedName", + "src": "3999:4:55", + "type": "" + } + ], + "src": "3760:899:55" + } + ] + }, + "contents": "{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_contract_IERC20(offset) -> value\n {\n value := calldataload(offset)\n validator_revert_address(value)\n }\n function abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4445(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let offset := calldataload(add(headStart, 64))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value2 := memPtr\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := abi_decode_contract_IERC20(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_contract$_IERC20_$4445_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_contract_IERC20(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4445__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n let _1 := 32\n mstore(add(headStart, 32), 160)\n let length := mload(value1)\n mstore(add(headStart, 160), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 192), mload(add(add(value1, i), _1)))\n }\n mstore(add(add(headStart, length), 192), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 192)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n abi_encode_contract_IERC20(value4, add(headStart, 128))\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B29E1BA EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0x53EA54C5 EQ PUSH2 0x67 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0x312 JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x82 CALLDATASIZE PUSH1 0x4 PUSH2 0x364 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x45C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3337E731 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2EA5D6D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x5D4BADB2 SWAP1 PUSH2 0x2C0 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x330 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x35F DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x388 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x398 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3DA JUMPI PUSH2 0x3DA PUSH2 0x33E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x402 JUMPI PUSH2 0x402 PUSH2 0x33E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP9 POP POP POP POP POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x450 PUSH1 0xA0 DUP9 ADD PUSH2 0x354 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x481 DUP2 PUSH2 0x2FA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xA0 PUSH1 0x20 DUP5 ADD MSTORE DUP7 MLOAD DUP1 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI DUP9 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP3 ADD PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xC0 DUP3 DUP7 ADD ADD MSTORE PUSH1 0xC0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x52E PUSH1 0x80 DUP4 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xE8 SGT 0xCB SWAP3 0xEB 0xB6 0xF6 BASEFEE 0xBE 0xDA ADDMOD LOG2 PUSH5 0x7D33ACCDA4 CODESIZE 0xF6 CALLDATACOPY SWAP2 JUMP 0x2C 0xAB PUSH24 0xD87C6F603764736F6C634300081800330000000000000000 ", + "sourceMap": "471:2489:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:1104;;;;;;;;;;-1:-1:-1;1854:1104:45;;;;;:::i;:::-;;:::i;:::-;;1291:342;;;;;;;;;;-1:-1:-1;1291:342:45;;;;;:::i;:::-;;:::i;1854:1104::-;2031:56;;-1:-1:-1;;;2031:56:45;;;;;2334:25:55;;;1993:13:45;;;;-1:-1:-1;;;;;2031:47:45;;;;;2307:18:55;;2031:56:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1992:95;;-1:-1:-1;1992:95:45;-1:-1:-1;;;;;;2164:35:45;;;;;;:48;;;2211:1;2203:5;:9;2164:48;2160:792;;;2424:41;;-1:-1:-1;;;2424:41:45;;-1:-1:-1;;;;;2894:32:55;;;2424:41:45;;;2876:51:55;2943:18;;;2936:34;;;2408:13:45;;2424:20;;;;;;2849:18:55;;2424:41:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2408:57;;2485:8;2480:118;;2520:63;;-1:-1:-1;;;2520:63:45;;-1:-1:-1;;;;;3521:15:55;;;2520:63:45;;;3503:34:55;3573:15;;3553:18;;;3546:43;3605:18;;;3598:34;;;3438:18;;2520:63:45;;;;;;;2480:118;2641:53;;-1:-1:-1;;;2641:53:45;;;;;2334:25:55;;;-1:-1:-1;;;;;2641:44:45;;;;;2307:18:55;;2641:53:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2214:491;2160:792;;;2872:69;;-1:-1:-1;;;2872:69:45;;;;;2334:25:55;;;-1:-1:-1;;;;;2872:44:45;;;;;2925:5;;2307:18:55;;2872:69:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:792;1925:1033;;1854:1104;;:::o;1291:342::-;1515:111;;-1:-1:-1;;;1515:111:45;;-1:-1:-1;;;;;1515:51:45;;;;;:111;;1567:11;;1580:3;;1585:19;;1606:5;;1613:12;;1515:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:342;;;;;;:::o;14:131:55:-;-1:-1:-1;;;;;89:31:55;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:315::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:55:o;470:127::-;531:10;526:3;522:20;519:1;512:31;562:4;559:1;552:15;586:4;583:1;576:15;602:142;678:20;;707:31;678:20;707:31;:::i;:::-;602:142;;;:::o;749:1434::-;878:6;886;894;902;910;918;971:3;959:9;950:7;946:23;942:33;939:53;;;988:1;985;978:12;939:53;1027:9;1014:23;1046:31;1071:5;1046:31;:::i;:::-;1096:5;-1:-1:-1;1153:2:55;1138:18;;1125:32;1166:33;1125:32;1166:33;:::i;:::-;1218:7;-1:-1:-1;1276:2:55;1261:18;;1248:32;-1:-1:-1;;;;;1329:14:55;;;1326:34;;;1356:1;1353;1346:12;1326:34;1394:6;1383:9;1379:22;1369:32;;1439:7;1432:4;1428:2;1424:13;1420:27;1410:55;;1461:1;1458;1451:12;1410:55;1497:2;1484:16;1519:2;1515;1512:10;1509:36;;;1525:18;;:::i;:::-;1600:2;1594:9;1568:2;1654:13;;-1:-1:-1;;1650:22:55;;;1674:2;1646:31;1642:40;1630:53;;;1698:18;;;1718:22;;;1695:46;1692:72;;;1744:18;;:::i;:::-;1784:10;1780:2;1773:22;1819:2;1811:6;1804:18;1859:7;1854:2;1849;1845;1841:11;1837:20;1834:33;1831:53;;;1880:1;1877;1870:12;1831:53;1936:2;1931;1927;1923:11;1918:2;1910:6;1906:15;1893:46;1981:1;1976:2;1971;1963:6;1959:15;1955:24;1948:35;2002:6;1992:16;;;;;;;2055:2;2044:9;2040:18;2027:32;2017:42;;2106:3;2095:9;2091:19;2078:33;2068:43;;2130:47;2172:3;2161:9;2157:19;2130:47;:::i;:::-;2120:57;;749:1434;;;;;;;;:::o;2370:327::-;2464:6;2472;2525:2;2513:9;2504:7;2500:23;2496:32;2493:52;;;2541:1;2538;2531:12;2493:52;2570:9;2564:16;2554:26;;2623:2;2612:9;2608:18;2602:25;2636:31;2661:5;2636:31;:::i;:::-;2686:5;2676:15;;;2370:327;;;;;:::o;2981:277::-;3048:6;3101:2;3089:9;3080:7;3076:23;3072:32;3069:52;;;3117:1;3114;3107:12;3069:52;3149:9;3143:16;3202:5;3195:13;3188:21;3181:5;3178:32;3168:60;;3224:1;3221;3214:12;3168:60;3247:5;2981:277;-1:-1:-1;;;2981:277:55:o;3760:899::-;4065:1;4061;4056:3;4052:11;4048:19;4040:6;4036:32;4025:9;4018:51;3999:4;4088:2;4126:3;4121:2;4110:9;4106:18;4099:31;4159:6;4153:13;4203:6;4197:3;4186:9;4182:19;4175:35;4228:1;4238:141;4252:6;4249:1;4246:13;4238:141;;;4348:14;;;4344:23;;4338:30;4313:17;;;4332:3;4309:27;4302:67;4267:10;;4238:141;;;4242:3;4429:1;4423:3;4414:6;4403:9;4399:22;4395:32;4388:43;4499:3;4492:2;4488:7;4483:2;4475:6;4471:15;4467:29;4456:9;4452:45;4448:55;4440:63;;;;4539:6;4534:2;4523:9;4519:18;4512:34;4582:6;4577:2;4566:9;4562:18;4555:34;4598:55;4648:3;4637:9;4633:19;4625:6;-1:-1:-1;;;;;3717:31:55;3705:44;;3643:112;4598:55;3760:899;;;;;;;;:::o" + }, + "methodIdentifiers": { + "buyBookingToken(address,uint256)": "1b29e1ba", + "mintBookingToken(address,address,string,uint256,uint256,IERC20)": "53ea54c5" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenApprovalFailed\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"TokenApprovalFailed(address,address,uint256)\":[{\"details\":\"Token approval for the BookingToken address failed.\",\"params\":{\"amount\":\"amount of tokens to approve\",\"spender\":\"spender address (the BookingToken contract address)\",\"token\":\"token address\"}}]},\"kind\":\"dev\",\"methods\":{\"buyBookingToken(address,uint256)\":{\"details\":\"Buys a booking token with the specified price and payment token in the reservation.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"tokenId\":\"token id\"}},\"mintBookingToken(address,address,string,uint256,uint256,IERC20)\":{\"details\":\"Mints a booking token.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"expirationTimestamp\":\"expiration timestamp of the token in seconds\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"reservedFor\":\"address of the CM Account that can buy the token (generally the distributor)\",\"uri\":\"URI of the token\"}}},\"title\":\"BookingTokenOperator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Booking token operator contract is used by the {CMAccount} contract to mint and buy booking tokens. We made this a library so that we can use it in the {CMAccount} contract without increasing the size of the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingTokenOperator.sol\":\"BookingTokenOperator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x9f4d055ee7a2a9d0d17e511c943f103c7bd209926a4c8923ef7f3f4d072f2eca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81dacf1bd7d2879bd2e2456cea8fbe32765cbcff515795ed498e5dbfff54a97b\",\"dweb:/ipfs/QmZZW9QfyAyWpnPSqZrpbYPfC5igYBwS9CtjGpWBBCpzCY\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/IBookingToken.sol": { + "IBookingToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "buyReservedToken(uint256)": "96591edd", + "getReservationPrice(uint256)": "004fdd3c", + "safeMintWithReservation(address,string,uint256,uint256,address)": "5d4badb2" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyReservedToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"safeMintWithReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/IBookingToken.sol\":\"IBookingToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/CMAccountManager.sol": { + "CMAccountManager": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "CMAccountInvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "CMAccountInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sended", + "type": "uint256" + } + ], + "name": "IncorrectPrefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + } + ], + "name": "InvalidBookingTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "InvalidDeveloperWallet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldBookingToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newBookingToken", + "type": "address" + } + ], + "name": "BookingTokenAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CMAccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldDeveloperFeeBp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newDeveloperFeeBp", + "type": "uint256" + } + ], + "name": "DeveloperFeeBpUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldDeveloperWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDeveloperWallet", + "type": "address" + } + ], + "name": "DeveloperWalletUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "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": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CMACCOUNT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FEE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PREFUND_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSIONER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "createCMAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCMAccountCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "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": "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": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "pauser", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + }, + { + "internalType": "address", + "name": "versioner", + "type": "address" + }, + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "registerService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "newImplementation", + "type": "address" + } + ], + "name": "setAccountImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setBookingTokenAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bp", + "type": "uint256" + } + ], + "name": "setDeveloperFeeBp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "setDeveloperWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrefundAmount", + "type": "uint256" + } + ], + "name": "setPrefundAmount", + "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": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "unregisterService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_11171": { + "entryPoint": null, + "id": 11171, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_785": { + "entryPoint": 38, + "id": 785, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_816": { + "entryPoint": null, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:55", + "nodeType": "YulBlock", + "src": "0:216:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:55", + "nodeType": "YulBlock", + "src": "113:101:55", + "statements": [ + { + "nativeSrc": "123:26:55", + "nodeType": "YulAssignment", + "src": "123:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:55", + "nodeType": "YulIdentifier", + "src": "135:9:55" + }, + { + "kind": "number", + "nativeSrc": "146:2:55", + "nodeType": "YulLiteral", + "src": "146:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:55", + "nodeType": "YulIdentifier", + "src": "131:3:55" + }, + "nativeSrc": "131:18:55", + "nodeType": "YulFunctionCall", + "src": "131:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:55", + "nodeType": "YulIdentifier", + "src": "123:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:55", + "nodeType": "YulIdentifier", + "src": "165:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:55", + "nodeType": "YulIdentifier", + "src": "180:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:55", + "nodeType": "YulLiteral", + "src": "196:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:55", + "nodeType": "YulLiteral", + "src": "200:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:55", + "nodeType": "YulIdentifier", + "src": "192:3:55" + }, + "nativeSrc": "192:10:55", + "nodeType": "YulFunctionCall", + "src": "192:10:55" + }, + { + "kind": "number", + "nativeSrc": "204:1:55", + "nodeType": "YulLiteral", + "src": "204:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:55", + "nodeType": "YulIdentifier", + "src": "188:3:55" + }, + "nativeSrc": "188:18:55", + "nodeType": "YulFunctionCall", + "src": "188:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:55", + "nodeType": "YulIdentifier", + "src": "176:3:55" + }, + "nativeSrc": "176:31:55", + "nodeType": "YulFunctionCall", + "src": "176:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:55", + "nodeType": "YulIdentifier", + "src": "158:6:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulFunctionCall", + "src": "158:50:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulExpressionStatement", + "src": "158:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:55", + "nodeType": "YulTypedName", + "src": "82:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:55", + "nodeType": "YulTypedName", + "src": "93:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:55", + "nodeType": "YulTypedName", + "src": "104:4:55", + "type": "" + } + ], + "src": "14:200:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f7462000104600039600081816115bf015281816115e901526117440152612f746000f3fe608060405260043610620002185760003560e01c806301601d2f146200021d57806301ffc9a714620002555780630470d3ac146200028b57806309766da214620002b25780630d6115d014620002d957806312b357b514620002fe5780631c2b3afc1462000323578063248a9ca314620003485780632cec1a06146200036d5780632f2ff15d1462000392578063352af39a14620003b757806336568abe14620003dc5780633c55593814620004015780633f4ba83a146200041957806340df8d8414620004315780634cba593a14620004565780634f1ef286146200047b5780634f3f4639146200049257806352d1902d14620004aa5780635a81a62614620004c25780635c975abb14620004f65780635e818619146200050e5780636cd5687814620005335780637fa3465714620005585780638127f465146200057d5780638456cb5914620005a45780639010d07c14620005bc57806391d1485414620005e157806392cf833f146200060657806395b6ef0c146200062b5780639d825bc51462000650578063a217fddf1462000668578063ad3cb1cc146200067f578063b289819c14620006b2578063c17e30bf14620006d7578063c2a1db7814620006fc578063c39409e11462000723578063ca15c873146200073b578063d547741f1462000760578063e63ab1e91462000785578063f72c0d8b14620007aa578063f85b4a9c14620007cf578063fd2fbd5214620007f4575b600080fd5b3480156200022a57600080fd5b506200024260008051602062002e1f83398151915281565b6040519081526020015b60405180910390f35b3480156200026257600080fd5b506200027a620002743660046200241c565b6200080b565b60405190151581526020016200024c565b3480156200029857600080fd5b50620002a362000839565b6040516200024c919062002448565b348015620002bf57600080fd5b50620002d7620002d136600462002479565b62000859565b005b348015620002e657600080fd5b50620002d7620002f836600462002529565b6200090b565b3480156200030b57600080fd5b506200027a6200031d36600462002479565b62000935565b3480156200033057600080fd5b50620002d76200034236600462002576565b62000967565b3480156200035557600080fd5b50620002426200036736600462002576565b62000999565b3480156200037a57600080fd5b50620002a36200038c36600462002479565b620009bb565b3480156200039f57600080fd5b50620002d7620003b136600462002590565b620009f3565b348015620003c457600080fd5b5062000242620003d636600462002529565b62000a1b565b348015620003e957600080fd5b50620002d7620003fb36600462002590565b62000aaa565b3480156200040e57600080fd5b506200024262000ae5565b3480156200042657600080fd5b50620002d762000afc565b3480156200043e57600080fd5b506200024260008051602062002eff83398151915281565b3480156200046357600080fd5b506200024260008051602062002e5f83398151915281565b620002d76200048c366004620025bf565b62000b24565b3480156200049f57600080fd5b50620002a362000b45565b348015620004b757600080fd5b506200024262000b65565b348015620004cf57600080fd5b50620004e7620004e136600462002576565b62000b85565b6040516200024c91906200267b565b3480156200050357600080fd5b506200027a62000c68565b3480156200051b57600080fd5b50620002d76200052d36600462002529565b62000c7f565b3480156200054057600080fd5b50620002d76200055236600462002479565b62000ca5565b3480156200056557600080fd5b506200024260008051602062002f1f83398151915281565b3480156200058a57600080fd5b506200059562000d4a565b6040516200024c919062002690565b348015620005b157600080fd5b50620002d762000d6b565b348015620005c957600080fd5b50620002a3620005db366004620026d6565b62000d90565b348015620005ee57600080fd5b506200027a6200060036600462002590565b62000dc2565b3480156200061357600080fd5b506200024260008051602062002e3f83398151915281565b3480156200063857600080fd5b50620002d76200064a366004620026f9565b62000dfa565b3480156200065d57600080fd5b50620002a362000fb8565b3480156200067557600080fd5b5062000242600081565b3480156200068c57600080fd5b50620004e7604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006bf57600080fd5b506200024260008051602062002e7f83398151915281565b348015620006e457600080fd5b50620002d7620006f636600462002479565b62000fd5565b3480156200070957600080fd5b50620007146200107e565b6040516200024c919062002771565b3480156200073057600080fd5b5062000242620011f3565b3480156200074857600080fd5b50620002426200075a36600462002576565b6200120a565b3480156200076d57600080fd5b50620002d76200077f36600462002590565b6200123a565b3480156200079257600080fd5b506200024260008051602062002edf83398151915281565b348015620007b757600080fd5b506200024260008051602062002e9f83398151915281565b348015620007dc57600080fd5b50620002d7620007ee36600462002576565b6200125c565b620002a362000805366004620027d9565b620012c2565b60006001600160e01b03198216635a05180f60e01b14806200083357506200083382620012f0565b92915050565b6000806200084662001327565b600201546001600160a01b031692915050565b60008051602062002e7f83398151915262000874816200134b565b816001600160a01b03163b600003620008ad57816040516337766f4360e11b8152600401620008a4919062002448565b60405180910390fd5b6000620008b962000fb8565b9050620008c68362001357565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002e3f83398151915262000926816200134b565b620009318262001385565b5050565b6000806200094262001327565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002e1f83398151915262000982816200134b565b60006200098e62001327565b600101929092555050565b600080620009a662001478565b60009384526020525050604090206001015490565b600080620009c862001327565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b620009fe8262000999565b62000a09816200134b565b62000a1583836200149c565b50505050565b60008062000a28620014e5565b905062000a618360405160200162000a41919062002808565b60408051601f198184030181529190528051602090910120829062001509565b62000a7f5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000a93919062002808565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000ad45760405163334bd91960e11b815260040160405180910390fd5b62000ae0828262001517565b505050565b60008062000af262001327565b6003015492915050565b60008051602062002edf83398151915262000b17816200134b565b62000b2162001557565b50565b62000b2e620015b4565b62000b39826200165f565b6200093182826200167a565b60008062000b5262001327565b600401546001600160a01b031692915050565b600062000b7162001739565b5060008051602062002ebf83398151915290565b6060600062000b93620014e5565b905062000ba1818462001509565b62000bbf5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000bdc9062002826565b80601f016020809104026020016040519081016040528092919081815260200182805462000c0a9062002826565b801562000c5b5780601f1062000c2f5761010080835404028352916020019162000c5b565b820191906000526020600020905b81548152906001019060200180831162000c3d57829003601f168201915b5050505050915050919050565b60008062000c7562001783565b5460ff1692915050565b60008051602062002e3f83398151915262000c9a816200134b565b6200093182620017a7565b60008051602062002eff83398151915262000cc0816200134b565b6001600160a01b03821662000cec578160405163220b4f1160e11b8152600401620008a4919062002448565b600062000cf862000839565b905062000d058362001885565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d58620014e5565b905062000d6581620018b6565b91505090565b60008051602062002edf83398151915262000d86816200134b565b62000b21620018c5565b60008062000d9d62001911565b600085815260208290526040902090915062000dba908462001935565b949350505050565b60008062000dcf62001478565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e0662001943565b805490915060ff600160401b82041615906001600160401b031660008115801562000e2e5750825b90506000826001600160401b0316600114801562000e4b5750303b155b90508115801562000e5a575080155b1562000e795760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ea357845460ff60401b1916600160401b1785555b62000ead62001967565b62000eb76200197b565b62000ec16200197b565b62000ece60008c6200149c565b5062000eea60008051602062002edf8339815191528b6200149c565b5062000f0660008051602062002e9f8339815191528a6200149c565b5062000f2260008051602062002e7f833981519152896200149c565b50600062000f2f62001327565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000fab57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b60008062000fc562001327565b546001600160a01b031692915050565b60008051602062002e7f83398151915262000ff0816200134b565b816001600160a01b03163b60000362001020578160405163c9c10a6160e01b8152600401620008a4919062002448565b60006200102c62000b45565b9050620010398362001985565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b606060006200108c620014e5565b905060006200109b82620018b6565b9050600081516001600160401b03811115620010bb57620010bb62002497565b604051908082528060200260200182016040528015620010f057816020015b6060815260200190600190039081620010da5790505b50905060005b8251811015620011eb578360020160008483815181106200111b576200111b62002862565b6020026020010151815260200190815260200160002080546200113e9062002826565b80601f01602080910402602001604051908101604052809291908181526020018280546200116c9062002826565b8015620011bd5780601f106200119157610100808354040283529160200191620011bd565b820191906000526020600020905b8154815290600101906020018083116200119f57829003601f168201915b5050505050828281518110620011d757620011d762002862565b6020908102919091010152600101620010f6565b509392505050565b6000806200120062001327565b6001015492915050565b6000806200121762001911565b60008481526020829052604090209091506200123390620019b6565b9392505050565b620012458262000999565b62001250816200134b565b62000a15838362001517565b60008051602062002e5f83398151915262001277816200134b565b60006200128362000ae5565b90506200129083620019c1565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b6000620012ce620019d7565b620012d862001a10565b620012e4838362001a39565b90506200083362001c79565b60006001600160e01b03198216637965db0b60e01b14806200083357506301ffc9a760e01b6001600160e01b031983161462000833565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b21813362001c8c565b60006200136362001327565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b6000816040516020016200139a919062002808565b6040516020818303038152906040528051906020012090506000620013be620014e5565b90506000620013ce828462001cc9565b905080620013f35783604051633dad0df560e11b8152600401620008a491906200267b565b600083815260028301602052604090206200140f8582620028cc565b5082826003018560405162001425919062002808565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200146a92919062002998565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620014a962001911565b90506000620014b9858562001cd7565b9050801562000dba576000858152602083905260409020620014dc908562001d80565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001233838362001d97565b6000806200152462001911565b9050600062001534858562001daf565b9050801562000dba576000858152602083905260409020620014dc908562001e2d565b6200156162001e44565b60006200156d62001783565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620015a9919062002448565b60405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806200163e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200163260008051602062002ebf833981519152546001600160a01b031690565b6001600160a01b031614155b156200165d5760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002e9f83398151915262000931816200134b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620016d7575060408051601f3d908101601f19168201909252620016d491810190620029bc565b60015b620016f95781604051634c9c8ce360e01b8152600401620008a4919062002448565b60008051602062002ebf83398151915281146200172d57604051632a87526960e21b815260048101829052602401620008a4565b62000ae0838362001e6c565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146200165d5760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620017bc919062002808565b6040516020818303038152906040528051906020012090506000620017e0620014e5565b90506000620017f0828462001ec9565b905080620018115760405163162e926760e11b815260040160405180910390fd5b600083815260028301602052604081206200182c91620023b4565b816003018460405162001840919062002808565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200146a92919062002998565b60006200189162001327565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620012338362001ed7565b620018cf62001a10565b6000620018db62001783565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200159a3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001233838362001f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6200197162001f62565b6200165d62001f8a565b6200165d62001f62565b60006200199162001327565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000833825490565b6000620019cd62001327565b6003019190915550565b6000620019e362001fab565b80549091506001190162001a0a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a1a62000c68565b156200165d5760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001a67578260405163715397cd60e11b8152600401620008a4919062002448565b600062001a73620011f3565b90508034101562001aa1576040516353f01c6360e11b815260048101829052346024820152604401620008a4565b600062001aad62000fb8565b9050806001600160a01b03163b60000362001adf57806040516337766f4360e11b8152600401620008a4919062002448565b600062001aeb62000b45565b9050806001600160a01b03163b60000362001b1d578060405163c9c10a6160e01b8152600401620008a4919062002448565b60008260405162001b2e90620023f3565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001b6a573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001bd057600080fd5b505af115801562001be5573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c0a925083915062001fcf565b62001c2560008051602062002f1f833981519152826200149c565b5062001c3b6001600160a01b0382163462002032565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001c8562001fab565b6001905550565b62001c98828262000dc2565b620009315760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008a4565b6000620012338383620020cf565b60008062001ce462001478565b905062001cf2848462000dc2565b62001d75576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d2a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000833565b600091505062000833565b600062001233836001600160a01b038416620020cf565b60009081526001919091016020526040902054151590565b60008062001dbc62001478565b905062001dca848462000dc2565b1562001d75576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000833565b600062001233836001600160a01b0384166200211e565b62001e4e62000c68565b6200165d57604051638dfc202b60e01b815260040160405180910390fd5b62001e778262002217565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001ebf5762000ae0828262002277565b62000931620022f3565b60006200123383836200211e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f2957602002820191906000526020600020905b81548152602001906001019080831162001f14575b50505050509050919050565b600082600001828154811062001f4f5762001f4f62002862565b9060005260206000200154905092915050565b62001f6c62002313565b6200165d57604051631afcd79f60e31b815260040160405180910390fd5b62001f9462001f62565b600062001fa062001783565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600062001fdb62001327565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b8047101562002058573060405163cd78605960e01b8152600401620008a4919062002448565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620020a7576040519150601f19603f3d011682016040523d82523d6000602084013e620020ac565b606091505b505090508062000ae057604051630a12f52160e11b815260040160405180910390fd5b6000620020dd838362001d97565b620021155750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000833565b50600062000833565b6000818152600183016020526040812054801562001d7557600062002145600183620029d6565b85549091506000906200215b90600190620029d6565b9050808214620021c75760008660000182815481106200217f576200217f62002862565b9060005260206000200154905080876000018481548110620021a557620021a562002862565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620021db57620021db620029f8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000833565b806001600160a01b03163b600003620022475780604051634c9c8ce360e01b8152600401620008a4919062002448565b60008051602062002ebf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405162002296919062002808565b600060405180830381855af49150503d8060008114620022d3576040519150601f19603f3d011682016040523d82523d6000602084013e620022d8565b606091505b5091509150620022ea8583836200232f565b95945050505050565b34156200165d5760405163b398979f60e01b815260040160405180910390fd5b60006200231f62001943565b54600160401b900460ff16919050565b606082620023485762002342826200238a565b62001233565b81511580156200236057506001600160a01b0384163b155b15620023835783604051639996b31560e01b8152600401620008a4919062002448565b5092915050565b8051156200239b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054620023c29062002826565b6000825580601f10620023d3575050565b601f01602090049060005260206000209081019062000b21919062002401565b6104108062002a0f83390190565b5b8082111562002418576000815560010162002402565b5090565b6000602082840312156200242f57600080fd5b81356001600160e01b0319811681146200123357600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146200247457600080fd5b919050565b6000602082840312156200248c57600080fd5b62001233826200245c565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115620024ca57620024ca62002497565b604051601f8501601f19908116603f01168101908282118183101715620024f557620024f562002497565b816040528093508581528686860111156200250f57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156200253c57600080fd5b81356001600160401b038111156200255357600080fd5b8201601f810184136200256557600080fd5b62000dba84823560208401620024ad565b6000602082840312156200258957600080fd5b5035919050565b60008060408385031215620025a457600080fd5b82359150620025b6602084016200245c565b90509250929050565b60008060408385031215620025d357600080fd5b620025de836200245c565b915060208301356001600160401b03811115620025fa57600080fd5b8301601f810185136200260c57600080fd5b6200261d85823560208401620024ad565b9150509250929050565b60005b83811015620026445781810151838201526020016200262a565b50506000910152565b600081518084526200266781602086016020860162002627565b601f01601f19169290920160200192915050565b6020815260006200123360208301846200264d565b6020808252825182820181905260009190848201906040850190845b81811015620026ca57835183529284019291840191600101620026ac565b50909695505050505050565b60008060408385031215620026ea57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200271357600080fd5b6200271e876200245c565b95506200272e602088016200245c565b94506200273e604088016200245c565b93506200274e606088016200245c565b92506200275e608088016200245c565b915060a087013590509295509295509295565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015620027cc57603f19888603018452620027b98583516200264d565b945092850192908501906001016200279a565b5092979650505050505050565b60008060408385031215620027ed57600080fd5b620027f8836200245c565b9150620025b6602084016200245c565b600082516200281c81846020870162002627565b9190910192915050565b600181811c908216806200283b57607f821691505b6020821081036200285c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000ae0576000816000526020600020601f850160051c81016020861015620028a35750805b601f850160051c820191505b81811015620028c457828155600101620028af565b505050505050565b81516001600160401b03811115620028e857620028e862002497565b6200290081620028f9845462002826565b8462002878565b602080601f8311600181146200293857600084156200291f5750858301515b600019600386901b1c1916600185901b178555620028c4565b600085815260208120601f198616915b82811015620029695788860151825594840194600190910190840162002948565b5085821015620029885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000620029ad60408301856200264d565b90508260208301529392505050565b600060208284031215620029cf57600080fd5b5051919050565b818103818111156200083357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212204a7231d4ccf265a64d1dfd7340f540b8a8e32f79618d47ebe892505b2da3fab164736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x2F74 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15BF ADD MSTORE DUP2 DUP2 PUSH2 0x15E9 ADD MSTORE PUSH2 0x1744 ADD MSTORE PUSH2 0x2F74 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x218 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x21D JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x255 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x28B JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2D9 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x2FE JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x323 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x348 JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x36D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x392 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3B7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x3DC JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x401 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x419 JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x431 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x456 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x47B JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x492 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4AA JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x4C2 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x4F6 JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x50E JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x533 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x558 JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x57D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5A4 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5BC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x5E1 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x606 JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x62B JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x650 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x668 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x67F JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6B2 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x6D7 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x6FC JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x723 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x73B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x760 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x785 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7AA JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x7CF JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x7F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x274 CALLDATASIZE PUSH1 0x4 PUSH3 0x241C JUMP JUMPDEST PUSH3 0x80B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x24C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x859 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x2F8 CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x31D CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x342 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x967 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x367 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x38C CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x9BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0xA1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x3FB CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0xAAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0xAE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0xAFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2D7 PUSH3 0x48C CALLDATASIZE PUSH1 0x4 PUSH3 0x25BF JUMP JUMPDEST PUSH3 0xB24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0xB45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0xB65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4E7 PUSH3 0x4E1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x267B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x52D CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0xC7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x552 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x595 PUSH3 0xD4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2690 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0xD6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x5DB CALLDATASIZE PUSH1 0x4 PUSH3 0x26D6 JUMP JUMPDEST PUSH3 0xD90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x600 CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0xDC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x638 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x64A CALLDATASIZE PUSH1 0x4 PUSH3 0x26F9 JUMP JUMPDEST PUSH3 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x65D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0xFB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4E7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x6F6 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0xFD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x714 PUSH3 0x107E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x11F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x75A CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x120A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x76D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x77F CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0x123A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x7EE CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x125C JUMP JUMPDEST PUSH3 0x2A3 PUSH3 0x805 CALLDATASIZE PUSH1 0x4 PUSH3 0x27D9 JUMP JUMPDEST PUSH3 0x12C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x833 JUMPI POP PUSH3 0x833 DUP3 PUSH3 0x12F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x846 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x874 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8AD JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8B9 PUSH3 0xFB8 JUMP JUMPDEST SWAP1 POP PUSH3 0x8C6 DUP4 PUSH3 0x1357 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x926 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0x931 DUP3 PUSH3 0x1385 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x942 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x982 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x98E PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9A6 PUSH3 0x1478 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9C8 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x9FE DUP3 PUSH3 0x999 JUMP JUMPDEST PUSH3 0xA09 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xA15 DUP4 DUP4 PUSH3 0x149C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA28 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xA61 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA41 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x1509 JUMP JUMPDEST PUSH3 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xA93 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xAD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xAE0 DUP3 DUP3 PUSH3 0x1517 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xAF2 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB17 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xB21 PUSH3 0x1557 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB2E PUSH3 0x15B4 JUMP JUMPDEST PUSH3 0xB39 DUP3 PUSH3 0x165F JUMP JUMPDEST PUSH3 0x931 DUP3 DUP3 PUSH3 0x167A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB52 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xB71 PUSH3 0x1739 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xB93 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xBA1 DUP2 DUP5 PUSH3 0x1509 JUMP JUMPDEST PUSH3 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xBDC SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC0A SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC2F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC5B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC3D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xC75 PUSH3 0x1783 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xC9A DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0x931 DUP3 PUSH3 0x17A7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCC0 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xCEC JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCF8 PUSH3 0x839 JUMP JUMPDEST SWAP1 POP PUSH3 0xD05 DUP4 PUSH3 0x1885 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD58 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xD65 DUP2 PUSH3 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD86 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xB21 PUSH3 0x18C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xD9D PUSH3 0x1911 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDBA SWAP1 DUP5 PUSH3 0x1935 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDCF PUSH3 0x1478 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE06 PUSH3 0x1943 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE2E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE4B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE5A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xE79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xEA3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEAD PUSH3 0x1967 JUMP JUMPDEST PUSH3 0xEB7 PUSH3 0x197B JUMP JUMPDEST PUSH3 0xEC1 PUSH3 0x197B JUMP JUMPDEST PUSH3 0xECE PUSH1 0x0 DUP13 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xEEA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xF06 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xF22 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x149C JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF2F PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFAB JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xFC5 PUSH3 0x1327 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xFF0 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1020 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x102C PUSH3 0xB45 JUMP JUMPDEST SWAP1 POP PUSH3 0x1039 DUP4 PUSH3 0x1985 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x108C PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x109B DUP3 PUSH3 0x18B6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x10BB JUMPI PUSH3 0x10BB PUSH3 0x2497 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x10F0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x10DA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x11EB JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x111B JUMPI PUSH3 0x111B PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x113E SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x116C SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x11BD JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x1191 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x11BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x119F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x11D7 JUMPI PUSH3 0x11D7 PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x10F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1200 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1217 PUSH3 0x1911 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1233 SWAP1 PUSH3 0x19B6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x1245 DUP3 PUSH3 0x999 JUMP JUMPDEST PUSH3 0x1250 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xA15 DUP4 DUP4 PUSH3 0x1517 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1277 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1283 PUSH3 0xAE5 JUMP JUMPDEST SWAP1 POP PUSH3 0x1290 DUP4 PUSH3 0x19C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12CE PUSH3 0x19D7 JUMP JUMPDEST PUSH3 0x12D8 PUSH3 0x1A10 JUMP JUMPDEST PUSH3 0x12E4 DUP4 DUP4 PUSH3 0x1A39 JUMP JUMPDEST SWAP1 POP PUSH3 0x833 PUSH3 0x1C79 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x833 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x833 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB21 DUP2 CALLER PUSH3 0x1C8C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1363 PUSH3 0x1327 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x139A SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x13BE PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x13CE DUP3 DUP5 PUSH3 0x1CC9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x13F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x267B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x140F DUP6 DUP3 PUSH3 0x28CC JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x1425 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x146A SWAP3 SWAP2 SWAP1 PUSH3 0x2998 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x14A9 PUSH3 0x1911 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x14B9 DUP6 DUP6 PUSH3 0x1CD7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDBA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14DC SWAP1 DUP6 PUSH3 0x1D80 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x1D97 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1524 PUSH3 0x1911 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1534 DUP6 DUP6 PUSH3 0x1DAF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDBA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14DC SWAP1 DUP6 PUSH3 0x1E2D JUMP JUMPDEST PUSH3 0x1561 PUSH3 0x1E44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x156D PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x15A9 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x163E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1632 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x931 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x16D7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x16D4 SWAP2 DUP2 ADD SWAP1 PUSH3 0x29BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x16F9 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x172D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH3 0xAE0 DUP4 DUP4 PUSH3 0x1E6C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17BC SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x17E0 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x17F0 DUP3 DUP5 PUSH3 0x1EC9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1811 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x182C SWAP2 PUSH3 0x23B4 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x1840 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x146A SWAP3 SWAP2 SWAP1 PUSH3 0x2998 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1891 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH3 0x1ED7 JUMP JUMPDEST PUSH3 0x18CF PUSH3 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18DB PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x159A CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x1F35 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x1971 PUSH3 0x1F62 JUMP JUMPDEST PUSH3 0x165D PUSH3 0x1F8A JUMP JUMPDEST PUSH3 0x165D PUSH3 0x1F62 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1991 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x833 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19CD PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19E3 PUSH3 0x1FAB JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A0A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A1A PUSH3 0xC68 JUMP JUMPDEST ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1A67 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A73 PUSH3 0x11F3 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1AA1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AAD PUSH3 0xFB8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1ADF JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AEB PUSH3 0xB45 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B1D JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B2E SWAP1 PUSH3 0x23F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1B6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1BD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1BE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C0A SWAP3 POP DUP4 SWAP2 POP PUSH3 0x1FCF JUMP JUMPDEST PUSH3 0x1C25 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0x1C3B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x2032 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C85 PUSH3 0x1FAB JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1C98 DUP3 DUP3 PUSH3 0xDC2 JUMP JUMPDEST PUSH3 0x931 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x20CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1CE4 PUSH3 0x1478 JUMP JUMPDEST SWAP1 POP PUSH3 0x1CF2 DUP5 DUP5 PUSH3 0xDC2 JUMP JUMPDEST PUSH3 0x1D75 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D2A CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x20CF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1DBC PUSH3 0x1478 JUMP JUMPDEST SWAP1 POP PUSH3 0x1DCA DUP5 DUP5 PUSH3 0xDC2 JUMP JUMPDEST ISZERO PUSH3 0x1D75 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x211E JUMP JUMPDEST PUSH3 0x1E4E PUSH3 0xC68 JUMP JUMPDEST PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1E77 DUP3 PUSH3 0x2217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1EBF JUMPI PUSH3 0xAE0 DUP3 DUP3 PUSH3 0x2277 JUMP JUMPDEST PUSH3 0x931 PUSH3 0x22F3 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x211E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F29 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F14 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1F4F JUMPI PUSH3 0x1F4F PUSH3 0x2862 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1F6C PUSH3 0x2313 JUMP JUMPDEST PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1F94 PUSH3 0x1F62 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FA0 PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FDB PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x2058 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x20A7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x20AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xAE0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x20DD DUP4 DUP4 PUSH3 0x1D97 JUMP JUMPDEST PUSH3 0x2115 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x833 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1D75 JUMPI PUSH1 0x0 PUSH3 0x2145 PUSH1 0x1 DUP4 PUSH3 0x29D6 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x215B SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x29D6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x21C7 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x217F JUMPI PUSH3 0x217F PUSH3 0x2862 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x21A5 JUMPI PUSH3 0x21A5 PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x21DB JUMPI PUSH3 0x21DB PUSH3 0x29F8 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x833 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x2247 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x2296 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x22D3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x22D8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x22EA DUP6 DUP4 DUP4 PUSH3 0x232F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x231F PUSH3 0x1943 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x2348 JUMPI PUSH3 0x2342 DUP3 PUSH3 0x238A JUMP JUMPDEST PUSH3 0x1233 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2360 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x2383 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x239B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x23C2 SWAP1 PUSH3 0x2826 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x23D3 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB21 SWAP2 SWAP1 PUSH3 0x2401 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2A0F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2418 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2402 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x242F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x248C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1233 DUP3 PUSH3 0x245C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x24CA JUMPI PUSH3 0x24CA PUSH3 0x2497 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x24F5 JUMPI PUSH3 0x24F5 PUSH3 0x2497 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x250F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x253C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x2565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDBA DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x25A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x25B6 PUSH1 0x20 DUP5 ADD PUSH3 0x245C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x25D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x25DE DUP4 PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x260C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x261D DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24AD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x2644 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x262A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x2667 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x2627 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1233 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x264D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x26CA JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x26AC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2713 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x271E DUP8 PUSH3 0x245C JUMP JUMPDEST SWAP6 POP PUSH3 0x272E PUSH1 0x20 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP5 POP PUSH3 0x273E PUSH1 0x40 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP4 POP PUSH3 0x274E PUSH1 0x60 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP3 POP PUSH3 0x275E PUSH1 0x80 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x27CC JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x27B9 DUP6 DUP4 MLOAD PUSH3 0x264D JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x279A JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x27ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x27F8 DUP4 PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH3 0x25B6 PUSH1 0x20 DUP5 ADD PUSH3 0x245C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x281C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x2627 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x283B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x285C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xAE0 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x28A3 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x28C4 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28AF JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x28E8 JUMPI PUSH3 0x28E8 PUSH3 0x2497 JUMP JUMPDEST PUSH3 0x2900 DUP2 PUSH3 0x28F9 DUP5 SLOAD PUSH3 0x2826 JUMP JUMPDEST DUP5 PUSH3 0x2878 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x2938 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x291F JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x28C4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2969 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2948 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2988 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x29AD PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x264D JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x29CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x833 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C6343000818003330F3325E23B502DCE693B1 SELFBALANCE 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOBBASEFEE PUSH19 0x31D4CCF265A64D1DFD7340F540B8A8E32F7961 DUP14 SELFBALANCE 0xEB 0xE8 SWAP3 POP JUMPDEST 0x2D LOG3 STATICCALL 0xB1 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "2316:18022:47:-:0;;;1171:4:3;1128:48;;9532:53:47;;;;;;;;;-1:-1:-1;9556:22:47;:20;:22::i;:::-;2316:18022;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:55;;;8087:29:2;;146:2:55;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:55:-;2316:18022:47;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@CMACCOUNT_ROLE_11063": { + "entryPoint": null, + "id": 11063, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEVELOPER_WALLET_ADMIN_ROLE_11045": { + "entryPoint": null, + "id": 11045, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@FEE_ADMIN_ROLE_11039": { + "entryPoint": null, + "id": 11039, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PAUSER_ROLE_11021": { + "entryPoint": null, + "id": 11021, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PREFUND_ADMIN_ROLE_11051": { + "entryPoint": null, + "id": 11051, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_REGISTRY_ADMIN_ROLE_11057": { + "entryPoint": null, + "id": 11057, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_11027": { + "entryPoint": null, + "id": 11027, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_841": { + "entryPoint": null, + "id": 841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@VERSIONER_ROLE_11033": { + "entryPoint": null, + "id": 11033, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 6523, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_2884": { + "entryPoint": 6503, + "id": 2884, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_unchained_2902": { + "entryPoint": 8074, + "id": 2902, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_871": { + "entryPoint": null, + "id": 871, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_7212": { + "entryPoint": 8399, + "id": 7212, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_7346": { + "entryPoint": 7989, + "id": 7346, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_11275": { + "entryPoint": 5727, + "id": 11275, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkInitializing_739": { + "entryPoint": 8034, + "id": 739, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3805": { + "entryPoint": 8947, + "id": 3805, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_947": { + "entryPoint": 5945, + "id": 947, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkProxy_931": { + "entryPoint": 5556, + "id": 931, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 4939, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 7308, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_7315": { + "entryPoint": 7575, + "id": 7315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_createCMAccount_11435": { + "entryPoint": 6713, + "id": 11435, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 6417, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 5240, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountManagerStorage_11103": { + "entryPoint": 4903, + "id": 11103, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_816": { + "entryPoint": 6467, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPausableStorage_2858": { + "entryPoint": 6019, + "id": 2858, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3036": { + "entryPoint": 8107, + "id": 3036, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getServiceRegistryStorage_12909": { + "entryPoint": 5349, + "id": 12909, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 7383, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_522": { + "entryPoint": 5276, + "id": 522, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_807": { + "entryPoint": 8979, + "id": 807, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_7329": { + "entryPoint": null, + "id": 7329, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2814": { + "entryPoint": null, + "id": 2814, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3118": { + "entryPoint": 7289, + "id": 3118, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3102": { + "entryPoint": 6615, + "id": 3102, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_pause_2983": { + "entryPoint": 6341, + "id": 2983, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_registerServiceName_12998": { + "entryPoint": 4997, + "id": 12998, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_7296": { + "entryPoint": 8478, + "id": 7296, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_requireNotPaused_2946": { + "entryPoint": 6672, + "id": 2946, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_2959": { + "entryPoint": 7748, + "id": 2959, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5244": { + "entryPoint": 9098, + "id": 5244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 7599, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_562": { + "entryPoint": 5399, + "id": 562, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setAccountImplementation_11569": { + "entryPoint": 4951, + "id": 11569, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBookingTokenAddress_11676": { + "entryPoint": 6533, + "id": 11676, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setCMAccountInfo_11458": { + "entryPoint": 8143, + "id": 11458, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setDeveloperFeeBp_11804": { + "entryPoint": 6593, + "id": 11804, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setDeveloperWallet_11746": { + "entryPoint": 6277, + "id": 11746, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3591": { + "entryPoint": 8727, + "id": 3591, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_unpause_3007": { + "entryPoint": 5463, + "id": 3007, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_unregisterServiceName_13052": { + "entryPoint": 6055, + "id": 13052, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_998": { + "entryPoint": 5754, + "id": 998, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_7360": { + "entryPoint": 7895, + "id": 7360, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@add_7382": { + "entryPoint": 7369, + "id": 7382, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_7512": { + "entryPoint": 7552, + "id": 7512, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_7608": { + "entryPoint": 6453, + "id": 7608, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_7418": { + "entryPoint": 5385, + "id": 7418, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@createCMAccount_11295": { + "entryPoint": 4802, + "id": 11295, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5164": { + "entryPoint": 8823, + "id": 5164, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAccountImplementation_11516": { + "entryPoint": 4024, + "id": 11516, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllRegisteredServiceHashes_13138": { + "entryPoint": 3402, + "id": 13138, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAllRegisteredServiceNames_13200": { + "entryPoint": 4222, + "id": 13200, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_11623": { + "entryPoint": 2885, + "id": 11623, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getCMAccountCreator_11479": { + "entryPoint": 2491, + "id": 11479, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getDeveloperFeeBp_11762": { + "entryPoint": 2789, + "id": 11762, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDeveloperWallet_11692": { + "entryPoint": 2105, + "id": 11692, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getImplementation_3564": { + "entryPoint": null, + "id": 3564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_11585": { + "entryPoint": 4595, + "id": 11585, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRegisteredServiceHashByName_13119": { + "entryPoint": 2587, + "id": 13119, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRegisteredServiceNameByHash_13083": { + "entryPoint": 2949, + "id": 13083, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 2457, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 4618, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 3472, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 2547, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 3522, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_11242": { + "entryPoint": 3578, + "id": 11242, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@isCMAccount_11500": { + "entryPoint": 2357, + "id": 11500, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_7581": { + "entryPoint": 6582, + "id": 7581, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@pause_11253": { + "entryPoint": 3435, + "id": 11253, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_2934": { + "entryPoint": 3176, + "id": 2934, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@proxiableUUID_889": { + "entryPoint": 2917, + "id": 889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@registerService_11818": { + "entryPoint": 2315, + "id": 11818, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_7400": { + "entryPoint": 7881, + "id": 7400, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_7539": { + "entryPoint": 7725, + "id": 7539, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 2730, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 4666, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@sendValue_5049": { + "entryPoint": 8242, + "id": 5049, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setAccountImplementation_11551": { + "entryPoint": 2137, + "id": 11551, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setBookingTokenAddress_11658": { + "entryPoint": 4053, + "id": 11658, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperFeeBp_11786": { + "entryPoint": 4700, + "id": 11786, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperWallet_11728": { + "entryPoint": 3237, + "id": 11728, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setPrefundAmount_11607": { + "entryPoint": 2407, + "id": 11607, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_3176": { + "entryPoint": null, + "id": 3176, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 2059, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 4848, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@unpause_11264": { + "entryPoint": 2812, + "id": 11264, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unregisterService_11832": { + "entryPoint": 3199, + "id": 11832, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@upgradeToAndCall_3625": { + "entryPoint": 7788, + "id": 3625, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_909": { + "entryPoint": 2852, + "id": 909, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_7481": { + "entryPoint": 6326, + "id": 7481, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5204": { + "entryPoint": 9007, + "id": 5204, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 9308, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_available_length_string": { + "entryPoint": 9389, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 9337, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 10201, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256": { + "entryPoint": 9977, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 9663, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 10684, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 9616, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 9942, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 9244, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 9513, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 9590, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 9805, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 10248, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 9288, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 9872, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10097, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 9851, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed": { + "entryPoint": 10648, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 10710, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 10360, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 10444, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 9767, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 10278, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x31": { + "entryPoint": 10744, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 10338, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 9367, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:13123:55", + "nodeType": "YulBlock", + "src": "0:13123:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "115:76:55", + "nodeType": "YulBlock", + "src": "115:76:55", + "statements": [ + { + "nativeSrc": "125:26:55", + "nodeType": "YulAssignment", + "src": "125:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "137:9:55", + "nodeType": "YulIdentifier", + "src": "137:9:55" + }, + { + "kind": "number", + "nativeSrc": "148:2:55", + "nodeType": "YulLiteral", + "src": "148:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "133:3:55", + "nodeType": "YulIdentifier", + "src": "133:3:55" + }, + "nativeSrc": "133:18:55", + "nodeType": "YulFunctionCall", + "src": "133:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "125:4:55", + "nodeType": "YulIdentifier", + "src": "125:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "167:9:55", + "nodeType": "YulIdentifier", + "src": "167:9:55" + }, + { + "name": "value0", + "nativeSrc": "178:6:55", + "nodeType": "YulIdentifier", + "src": "178:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "160:6:55", + "nodeType": "YulIdentifier", + "src": "160:6:55" + }, + "nativeSrc": "160:25:55", + "nodeType": "YulFunctionCall", + "src": "160:25:55" + }, + "nativeSrc": "160:25:55", + "nodeType": "YulExpressionStatement", + "src": "160:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "14:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "84:9:55", + "nodeType": "YulTypedName", + "src": "84:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "95:6:55", + "nodeType": "YulTypedName", + "src": "95:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "106:4:55", + "nodeType": "YulTypedName", + "src": "106:4:55", + "type": "" + } + ], + "src": "14:177:55" + }, + { + "body": { + "nativeSrc": "265:217:55", + "nodeType": "YulBlock", + "src": "265:217:55", + "statements": [ + { + "body": { + "nativeSrc": "311:16:55", + "nodeType": "YulBlock", + "src": "311:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "320:1:55", + "nodeType": "YulLiteral", + "src": "320:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "323:1:55", + "nodeType": "YulLiteral", + "src": "323:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "313:6:55", + "nodeType": "YulIdentifier", + "src": "313:6:55" + }, + "nativeSrc": "313:12:55", + "nodeType": "YulFunctionCall", + "src": "313:12:55" + }, + "nativeSrc": "313:12:55", + "nodeType": "YulExpressionStatement", + "src": "313:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "286:7:55", + "nodeType": "YulIdentifier", + "src": "286:7:55" + }, + { + "name": "headStart", + "nativeSrc": "295:9:55", + "nodeType": "YulIdentifier", + "src": "295:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "282:3:55", + "nodeType": "YulIdentifier", + "src": "282:3:55" + }, + "nativeSrc": "282:23:55", + "nodeType": "YulFunctionCall", + "src": "282:23:55" + }, + { + "kind": "number", + "nativeSrc": "307:2:55", + "nodeType": "YulLiteral", + "src": "307:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "278:3:55", + "nodeType": "YulIdentifier", + "src": "278:3:55" + }, + "nativeSrc": "278:32:55", + "nodeType": "YulFunctionCall", + "src": "278:32:55" + }, + "nativeSrc": "275:52:55", + "nodeType": "YulIf", + "src": "275:52:55" + }, + { + "nativeSrc": "336:36:55", + "nodeType": "YulVariableDeclaration", + "src": "336:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "362:9:55", + "nodeType": "YulIdentifier", + "src": "362:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "349:12:55", + "nodeType": "YulIdentifier", + "src": "349:12:55" + }, + "nativeSrc": "349:23:55", + "nodeType": "YulFunctionCall", + "src": "349:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "340:5:55", + "nodeType": "YulTypedName", + "src": "340:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "436:16:55", + "nodeType": "YulBlock", + "src": "436:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "445:1:55", + "nodeType": "YulLiteral", + "src": "445:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "448:1:55", + "nodeType": "YulLiteral", + "src": "448:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "438:6:55", + "nodeType": "YulIdentifier", + "src": "438:6:55" + }, + "nativeSrc": "438:12:55", + "nodeType": "YulFunctionCall", + "src": "438:12:55" + }, + "nativeSrc": "438:12:55", + "nodeType": "YulExpressionStatement", + "src": "438:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "394:5:55", + "nodeType": "YulIdentifier", + "src": "394:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "405:5:55", + "nodeType": "YulIdentifier", + "src": "405:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "416:3:55", + "nodeType": "YulLiteral", + "src": "416:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "421:10:55", + "nodeType": "YulLiteral", + "src": "421:10:55", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "412:3:55", + "nodeType": "YulIdentifier", + "src": "412:3:55" + }, + "nativeSrc": "412:20:55", + "nodeType": "YulFunctionCall", + "src": "412:20:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "401:3:55", + "nodeType": "YulIdentifier", + "src": "401:3:55" + }, + "nativeSrc": "401:32:55", + "nodeType": "YulFunctionCall", + "src": "401:32:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "391:2:55", + "nodeType": "YulIdentifier", + "src": "391:2:55" + }, + "nativeSrc": "391:43:55", + "nodeType": "YulFunctionCall", + "src": "391:43:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "384:6:55", + "nodeType": "YulIdentifier", + "src": "384:6:55" + }, + "nativeSrc": "384:51:55", + "nodeType": "YulFunctionCall", + "src": "384:51:55" + }, + "nativeSrc": "381:71:55", + "nodeType": "YulIf", + "src": "381:71:55" + }, + { + "nativeSrc": "461:15:55", + "nodeType": "YulAssignment", + "src": "461:15:55", + "value": { + "name": "value", + "nativeSrc": "471:5:55", + "nodeType": "YulIdentifier", + "src": "471:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "461:6:55", + "nodeType": "YulIdentifier", + "src": "461:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "196:286:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "231:9:55", + "nodeType": "YulTypedName", + "src": "231:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "242:7:55", + "nodeType": "YulTypedName", + "src": "242:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "254:6:55", + "nodeType": "YulTypedName", + "src": "254:6:55", + "type": "" + } + ], + "src": "196:286:55" + }, + { + "body": { + "nativeSrc": "582:92:55", + "nodeType": "YulBlock", + "src": "582:92:55", + "statements": [ + { + "nativeSrc": "592:26:55", + "nodeType": "YulAssignment", + "src": "592:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "604:9:55", + "nodeType": "YulIdentifier", + "src": "604:9:55" + }, + { + "kind": "number", + "nativeSrc": "615:2:55", + "nodeType": "YulLiteral", + "src": "615:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "600:3:55", + "nodeType": "YulIdentifier", + "src": "600:3:55" + }, + "nativeSrc": "600:18:55", + "nodeType": "YulFunctionCall", + "src": "600:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "592:4:55", + "nodeType": "YulIdentifier", + "src": "592:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "634:9:55", + "nodeType": "YulIdentifier", + "src": "634:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "659:6:55", + "nodeType": "YulIdentifier", + "src": "659:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "652:6:55", + "nodeType": "YulIdentifier", + "src": "652:6:55" + }, + "nativeSrc": "652:14:55", + "nodeType": "YulFunctionCall", + "src": "652:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "645:6:55", + "nodeType": "YulIdentifier", + "src": "645:6:55" + }, + "nativeSrc": "645:22:55", + "nodeType": "YulFunctionCall", + "src": "645:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "627:6:55", + "nodeType": "YulIdentifier", + "src": "627:6:55" + }, + "nativeSrc": "627:41:55", + "nodeType": "YulFunctionCall", + "src": "627:41:55" + }, + "nativeSrc": "627:41:55", + "nodeType": "YulExpressionStatement", + "src": "627:41:55" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "487:187:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "551:9:55", + "nodeType": "YulTypedName", + "src": "551:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "562:6:55", + "nodeType": "YulTypedName", + "src": "562:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "573:4:55", + "nodeType": "YulTypedName", + "src": "573:4:55", + "type": "" + } + ], + "src": "487:187:55" + }, + { + "body": { + "nativeSrc": "780:102:55", + "nodeType": "YulBlock", + "src": "780:102:55", + "statements": [ + { + "nativeSrc": "790:26:55", + "nodeType": "YulAssignment", + "src": "790:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "802:9:55", + "nodeType": "YulIdentifier", + "src": "802:9:55" + }, + { + "kind": "number", + "nativeSrc": "813:2:55", + "nodeType": "YulLiteral", + "src": "813:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "798:3:55", + "nodeType": "YulIdentifier", + "src": "798:3:55" + }, + "nativeSrc": "798:18:55", + "nodeType": "YulFunctionCall", + "src": "798:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "790:4:55", + "nodeType": "YulIdentifier", + "src": "790:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "832:9:55", + "nodeType": "YulIdentifier", + "src": "832:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "847:6:55", + "nodeType": "YulIdentifier", + "src": "847:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "863:3:55", + "nodeType": "YulLiteral", + "src": "863:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "868:1:55", + "nodeType": "YulLiteral", + "src": "868:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "859:3:55", + "nodeType": "YulIdentifier", + "src": "859:3:55" + }, + "nativeSrc": "859:11:55", + "nodeType": "YulFunctionCall", + "src": "859:11:55" + }, + { + "kind": "number", + "nativeSrc": "872:1:55", + "nodeType": "YulLiteral", + "src": "872:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "855:3:55", + "nodeType": "YulIdentifier", + "src": "855:3:55" + }, + "nativeSrc": "855:19:55", + "nodeType": "YulFunctionCall", + "src": "855:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "843:3:55", + "nodeType": "YulIdentifier", + "src": "843:3:55" + }, + "nativeSrc": "843:32:55", + "nodeType": "YulFunctionCall", + "src": "843:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "825:6:55", + "nodeType": "YulIdentifier", + "src": "825:6:55" + }, + "nativeSrc": "825:51:55", + "nodeType": "YulFunctionCall", + "src": "825:51:55" + }, + "nativeSrc": "825:51:55", + "nodeType": "YulExpressionStatement", + "src": "825:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "679:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "749:9:55", + "nodeType": "YulTypedName", + "src": "749:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "760:6:55", + "nodeType": "YulTypedName", + "src": "760:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "771:4:55", + "nodeType": "YulTypedName", + "src": "771:4:55", + "type": "" + } + ], + "src": "679:203:55" + }, + { + "body": { + "nativeSrc": "936:124:55", + "nodeType": "YulBlock", + "src": "936:124:55", + "statements": [ + { + "nativeSrc": "946:29:55", + "nodeType": "YulAssignment", + "src": "946:29:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "968:6:55", + "nodeType": "YulIdentifier", + "src": "968:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "955:12:55", + "nodeType": "YulIdentifier", + "src": "955:12:55" + }, + "nativeSrc": "955:20:55", + "nodeType": "YulFunctionCall", + "src": "955:20:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "946:5:55", + "nodeType": "YulIdentifier", + "src": "946:5:55" + } + ] + }, + { + "body": { + "nativeSrc": "1038:16:55", + "nodeType": "YulBlock", + "src": "1038:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1047:1:55", + "nodeType": "YulLiteral", + "src": "1047:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1050:1:55", + "nodeType": "YulLiteral", + "src": "1050:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1040:6:55", + "nodeType": "YulIdentifier", + "src": "1040:6:55" + }, + "nativeSrc": "1040:12:55", + "nodeType": "YulFunctionCall", + "src": "1040:12:55" + }, + "nativeSrc": "1040:12:55", + "nodeType": "YulExpressionStatement", + "src": "1040:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "997:5:55", + "nodeType": "YulIdentifier", + "src": "997:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1008:5:55", + "nodeType": "YulIdentifier", + "src": "1008:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1023:3:55", + "nodeType": "YulLiteral", + "src": "1023:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1028:1:55", + "nodeType": "YulLiteral", + "src": "1028:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1019:3:55", + "nodeType": "YulIdentifier", + "src": "1019:3:55" + }, + "nativeSrc": "1019:11:55", + "nodeType": "YulFunctionCall", + "src": "1019:11:55" + }, + { + "kind": "number", + "nativeSrc": "1032:1:55", + "nodeType": "YulLiteral", + "src": "1032:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1015:3:55", + "nodeType": "YulIdentifier", + "src": "1015:3:55" + }, + "nativeSrc": "1015:19:55", + "nodeType": "YulFunctionCall", + "src": "1015:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1004:3:55", + "nodeType": "YulIdentifier", + "src": "1004:3:55" + }, + "nativeSrc": "1004:31:55", + "nodeType": "YulFunctionCall", + "src": "1004:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "994:2:55", + "nodeType": "YulIdentifier", + "src": "994:2:55" + }, + "nativeSrc": "994:42:55", + "nodeType": "YulFunctionCall", + "src": "994:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "987:6:55", + "nodeType": "YulIdentifier", + "src": "987:6:55" + }, + "nativeSrc": "987:50:55", + "nodeType": "YulFunctionCall", + "src": "987:50:55" + }, + "nativeSrc": "984:70:55", + "nodeType": "YulIf", + "src": "984:70:55" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "887:173:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "915:6:55", + "nodeType": "YulTypedName", + "src": "915:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "926:5:55", + "nodeType": "YulTypedName", + "src": "926:5:55", + "type": "" + } + ], + "src": "887:173:55" + }, + { + "body": { + "nativeSrc": "1135:116:55", + "nodeType": "YulBlock", + "src": "1135:116:55", + "statements": [ + { + "body": { + "nativeSrc": "1181:16:55", + "nodeType": "YulBlock", + "src": "1181:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1190:1:55", + "nodeType": "YulLiteral", + "src": "1190:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1193:1:55", + "nodeType": "YulLiteral", + "src": "1193:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1183:6:55", + "nodeType": "YulIdentifier", + "src": "1183:6:55" + }, + "nativeSrc": "1183:12:55", + "nodeType": "YulFunctionCall", + "src": "1183:12:55" + }, + "nativeSrc": "1183:12:55", + "nodeType": "YulExpressionStatement", + "src": "1183:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1156:7:55", + "nodeType": "YulIdentifier", + "src": "1156:7:55" + }, + { + "name": "headStart", + "nativeSrc": "1165:9:55", + "nodeType": "YulIdentifier", + "src": "1165:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1152:3:55", + "nodeType": "YulIdentifier", + "src": "1152:3:55" + }, + "nativeSrc": "1152:23:55", + "nodeType": "YulFunctionCall", + "src": "1152:23:55" + }, + { + "kind": "number", + "nativeSrc": "1177:2:55", + "nodeType": "YulLiteral", + "src": "1177:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1148:3:55", + "nodeType": "YulIdentifier", + "src": "1148:3:55" + }, + "nativeSrc": "1148:32:55", + "nodeType": "YulFunctionCall", + "src": "1148:32:55" + }, + "nativeSrc": "1145:52:55", + "nodeType": "YulIf", + "src": "1145:52:55" + }, + { + "nativeSrc": "1206:39:55", + "nodeType": "YulAssignment", + "src": "1206:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1235:9:55", + "nodeType": "YulIdentifier", + "src": "1235:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1216:18:55", + "nodeType": "YulIdentifier", + "src": "1216:18:55" + }, + "nativeSrc": "1216:29:55", + "nodeType": "YulFunctionCall", + "src": "1216:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1206:6:55", + "nodeType": "YulIdentifier", + "src": "1206:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1065:186:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1101:9:55", + "nodeType": "YulTypedName", + "src": "1101:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1112:7:55", + "nodeType": "YulTypedName", + "src": "1112:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1124:6:55", + "nodeType": "YulTypedName", + "src": "1124:6:55", + "type": "" + } + ], + "src": "1065:186:55" + }, + { + "body": { + "nativeSrc": "1288:95:55", + "nodeType": "YulBlock", + "src": "1288:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1305:1:55", + "nodeType": "YulLiteral", + "src": "1305:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1312:3:55", + "nodeType": "YulLiteral", + "src": "1312:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "1317:10:55", + "nodeType": "YulLiteral", + "src": "1317:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1308:3:55", + "nodeType": "YulIdentifier", + "src": "1308:3:55" + }, + "nativeSrc": "1308:20:55", + "nodeType": "YulFunctionCall", + "src": "1308:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1298:6:55", + "nodeType": "YulIdentifier", + "src": "1298:6:55" + }, + "nativeSrc": "1298:31:55", + "nodeType": "YulFunctionCall", + "src": "1298:31:55" + }, + "nativeSrc": "1298:31:55", + "nodeType": "YulExpressionStatement", + "src": "1298:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1345:1:55", + "nodeType": "YulLiteral", + "src": "1345:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1348:4:55", + "nodeType": "YulLiteral", + "src": "1348:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1338:6:55", + "nodeType": "YulIdentifier", + "src": "1338:6:55" + }, + "nativeSrc": "1338:15:55", + "nodeType": "YulFunctionCall", + "src": "1338:15:55" + }, + "nativeSrc": "1338:15:55", + "nodeType": "YulExpressionStatement", + "src": "1338:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1369:1:55", + "nodeType": "YulLiteral", + "src": "1369:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1372:4:55", + "nodeType": "YulLiteral", + "src": "1372:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1362:6:55", + "nodeType": "YulIdentifier", + "src": "1362:6:55" + }, + "nativeSrc": "1362:15:55", + "nodeType": "YulFunctionCall", + "src": "1362:15:55" + }, + "nativeSrc": "1362:15:55", + "nodeType": "YulExpressionStatement", + "src": "1362:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "1256:127:55", + "nodeType": "YulFunctionDefinition", + "src": "1256:127:55" + }, + { + "body": { + "nativeSrc": "1463:557:55", + "nodeType": "YulBlock", + "src": "1463:557:55", + "statements": [ + { + "nativeSrc": "1473:28:55", + "nodeType": "YulVariableDeclaration", + "src": "1473:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1491:2:55", + "nodeType": "YulLiteral", + "src": "1491:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1495:1:55", + "nodeType": "YulLiteral", + "src": "1495:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1487:3:55", + "nodeType": "YulIdentifier", + "src": "1487:3:55" + }, + "nativeSrc": "1487:10:55", + "nodeType": "YulFunctionCall", + "src": "1487:10:55" + }, + { + "kind": "number", + "nativeSrc": "1499:1:55", + "nodeType": "YulLiteral", + "src": "1499:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1483:3:55", + "nodeType": "YulIdentifier", + "src": "1483:3:55" + }, + "nativeSrc": "1483:18:55", + "nodeType": "YulFunctionCall", + "src": "1483:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1477:2:55", + "nodeType": "YulTypedName", + "src": "1477:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1528:22:55", + "nodeType": "YulBlock", + "src": "1528:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1530:16:55", + "nodeType": "YulIdentifier", + "src": "1530:16:55" + }, + "nativeSrc": "1530:18:55", + "nodeType": "YulFunctionCall", + "src": "1530:18:55" + }, + "nativeSrc": "1530:18:55", + "nodeType": "YulExpressionStatement", + "src": "1530:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1516:6:55", + "nodeType": "YulIdentifier", + "src": "1516:6:55" + }, + { + "name": "_1", + "nativeSrc": "1524:2:55", + "nodeType": "YulIdentifier", + "src": "1524:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1513:2:55", + "nodeType": "YulIdentifier", + "src": "1513:2:55" + }, + "nativeSrc": "1513:14:55", + "nodeType": "YulFunctionCall", + "src": "1513:14:55" + }, + "nativeSrc": "1510:40:55", + "nodeType": "YulIf", + "src": "1510:40:55" + }, + { + "nativeSrc": "1559:17:55", + "nodeType": "YulVariableDeclaration", + "src": "1559:17:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1573:2:55", + "nodeType": "YulLiteral", + "src": "1573:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1569:3:55", + "nodeType": "YulIdentifier", + "src": "1569:3:55" + }, + "nativeSrc": "1569:7:55", + "nodeType": "YulFunctionCall", + "src": "1569:7:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1563:2:55", + "nodeType": "YulTypedName", + "src": "1563:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1585:23:55", + "nodeType": "YulVariableDeclaration", + "src": "1585:23:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1605:2:55", + "nodeType": "YulLiteral", + "src": "1605:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1599:5:55", + "nodeType": "YulIdentifier", + "src": "1599:5:55" + }, + "nativeSrc": "1599:9:55", + "nodeType": "YulFunctionCall", + "src": "1599:9:55" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1589:6:55", + "nodeType": "YulTypedName", + "src": "1589:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1617:73:55", + "nodeType": "YulVariableDeclaration", + "src": "1617:73:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1639:6:55", + "nodeType": "YulIdentifier", + "src": "1639:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1663:6:55", + "nodeType": "YulIdentifier", + "src": "1663:6:55" + }, + { + "kind": "number", + "nativeSrc": "1671:2:55", + "nodeType": "YulLiteral", + "src": "1671:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1659:3:55", + "nodeType": "YulIdentifier", + "src": "1659:3:55" + }, + "nativeSrc": "1659:15:55", + "nodeType": "YulFunctionCall", + "src": "1659:15:55" + }, + { + "name": "_2", + "nativeSrc": "1676:2:55", + "nodeType": "YulIdentifier", + "src": "1676:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1655:3:55", + "nodeType": "YulIdentifier", + "src": "1655:3:55" + }, + "nativeSrc": "1655:24:55", + "nodeType": "YulFunctionCall", + "src": "1655:24:55" + }, + { + "kind": "number", + "nativeSrc": "1681:2:55", + "nodeType": "YulLiteral", + "src": "1681:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1651:3:55", + "nodeType": "YulIdentifier", + "src": "1651:3:55" + }, + "nativeSrc": "1651:33:55", + "nodeType": "YulFunctionCall", + "src": "1651:33:55" + }, + { + "name": "_2", + "nativeSrc": "1686:2:55", + "nodeType": "YulIdentifier", + "src": "1686:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1647:3:55", + "nodeType": "YulIdentifier", + "src": "1647:3:55" + }, + "nativeSrc": "1647:42:55", + "nodeType": "YulFunctionCall", + "src": "1647:42:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1635:3:55", + "nodeType": "YulIdentifier", + "src": "1635:3:55" + }, + "nativeSrc": "1635:55:55", + "nodeType": "YulFunctionCall", + "src": "1635:55:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1621:10:55", + "nodeType": "YulTypedName", + "src": "1621:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1749:22:55", + "nodeType": "YulBlock", + "src": "1749:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1751:16:55", + "nodeType": "YulIdentifier", + "src": "1751:16:55" + }, + "nativeSrc": "1751:18:55", + "nodeType": "YulFunctionCall", + "src": "1751:18:55" + }, + "nativeSrc": "1751:18:55", + "nodeType": "YulExpressionStatement", + "src": "1751:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1708:10:55", + "nodeType": "YulIdentifier", + "src": "1708:10:55" + }, + { + "name": "_1", + "nativeSrc": "1720:2:55", + "nodeType": "YulIdentifier", + "src": "1720:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1705:2:55", + "nodeType": "YulIdentifier", + "src": "1705:2:55" + }, + "nativeSrc": "1705:18:55", + "nodeType": "YulFunctionCall", + "src": "1705:18:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1728:10:55", + "nodeType": "YulIdentifier", + "src": "1728:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "1740:6:55", + "nodeType": "YulIdentifier", + "src": "1740:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1725:2:55", + "nodeType": "YulIdentifier", + "src": "1725:2:55" + }, + "nativeSrc": "1725:22:55", + "nodeType": "YulFunctionCall", + "src": "1725:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1702:2:55", + "nodeType": "YulIdentifier", + "src": "1702:2:55" + }, + "nativeSrc": "1702:46:55", + "nodeType": "YulFunctionCall", + "src": "1702:46:55" + }, + "nativeSrc": "1699:72:55", + "nodeType": "YulIf", + "src": "1699:72:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1787:2:55", + "nodeType": "YulLiteral", + "src": "1787:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1791:10:55", + "nodeType": "YulIdentifier", + "src": "1791:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1780:6:55", + "nodeType": "YulIdentifier", + "src": "1780:6:55" + }, + "nativeSrc": "1780:22:55", + "nodeType": "YulFunctionCall", + "src": "1780:22:55" + }, + "nativeSrc": "1780:22:55", + "nodeType": "YulExpressionStatement", + "src": "1780:22:55" + }, + { + "nativeSrc": "1811:15:55", + "nodeType": "YulAssignment", + "src": "1811:15:55", + "value": { + "name": "memPtr", + "nativeSrc": "1820:6:55", + "nodeType": "YulIdentifier", + "src": "1820:6:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "1811:5:55", + "nodeType": "YulIdentifier", + "src": "1811:5:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1842:6:55", + "nodeType": "YulIdentifier", + "src": "1842:6:55" + }, + { + "name": "length", + "nativeSrc": "1850:6:55", + "nodeType": "YulIdentifier", + "src": "1850:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1835:6:55", + "nodeType": "YulIdentifier", + "src": "1835:6:55" + }, + "nativeSrc": "1835:22:55", + "nodeType": "YulFunctionCall", + "src": "1835:22:55" + }, + "nativeSrc": "1835:22:55", + "nodeType": "YulExpressionStatement", + "src": "1835:22:55" + }, + { + "body": { + "nativeSrc": "1895:16:55", + "nodeType": "YulBlock", + "src": "1895:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1904:1:55", + "nodeType": "YulLiteral", + "src": "1904:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1907:1:55", + "nodeType": "YulLiteral", + "src": "1907:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1897:6:55", + "nodeType": "YulIdentifier", + "src": "1897:6:55" + }, + "nativeSrc": "1897:12:55", + "nodeType": "YulFunctionCall", + "src": "1897:12:55" + }, + "nativeSrc": "1897:12:55", + "nodeType": "YulExpressionStatement", + "src": "1897:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1876:3:55", + "nodeType": "YulIdentifier", + "src": "1876:3:55" + }, + { + "name": "length", + "nativeSrc": "1881:6:55", + "nodeType": "YulIdentifier", + "src": "1881:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1872:3:55", + "nodeType": "YulIdentifier", + "src": "1872:3:55" + }, + "nativeSrc": "1872:16:55", + "nodeType": "YulFunctionCall", + "src": "1872:16:55" + }, + { + "name": "end", + "nativeSrc": "1890:3:55", + "nodeType": "YulIdentifier", + "src": "1890:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1869:2:55", + "nodeType": "YulIdentifier", + "src": "1869:2:55" + }, + "nativeSrc": "1869:25:55", + "nodeType": "YulFunctionCall", + "src": "1869:25:55" + }, + "nativeSrc": "1866:45:55", + "nodeType": "YulIf", + "src": "1866:45:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1937:6:55", + "nodeType": "YulIdentifier", + "src": "1937:6:55" + }, + { + "kind": "number", + "nativeSrc": "1945:4:55", + "nodeType": "YulLiteral", + "src": "1945:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1933:3:55", + "nodeType": "YulIdentifier", + "src": "1933:3:55" + }, + "nativeSrc": "1933:17:55", + "nodeType": "YulFunctionCall", + "src": "1933:17:55" + }, + { + "name": "src", + "nativeSrc": "1952:3:55", + "nodeType": "YulIdentifier", + "src": "1952:3:55" + }, + { + "name": "length", + "nativeSrc": "1957:6:55", + "nodeType": "YulIdentifier", + "src": "1957:6:55" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1920:12:55", + "nodeType": "YulIdentifier", + "src": "1920:12:55" + }, + "nativeSrc": "1920:44:55", + "nodeType": "YulFunctionCall", + "src": "1920:44:55" + }, + "nativeSrc": "1920:44:55", + "nodeType": "YulExpressionStatement", + "src": "1920:44:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1988:6:55", + "nodeType": "YulIdentifier", + "src": "1988:6:55" + }, + { + "name": "length", + "nativeSrc": "1996:6:55", + "nodeType": "YulIdentifier", + "src": "1996:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1984:3:55", + "nodeType": "YulIdentifier", + "src": "1984:3:55" + }, + "nativeSrc": "1984:19:55", + "nodeType": "YulFunctionCall", + "src": "1984:19:55" + }, + { + "kind": "number", + "nativeSrc": "2005:4:55", + "nodeType": "YulLiteral", + "src": "2005:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1980:3:55", + "nodeType": "YulIdentifier", + "src": "1980:3:55" + }, + "nativeSrc": "1980:30:55", + "nodeType": "YulFunctionCall", + "src": "1980:30:55" + }, + { + "kind": "number", + "nativeSrc": "2012:1:55", + "nodeType": "YulLiteral", + "src": "2012:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:55", + "nodeType": "YulIdentifier", + "src": "1973:6:55" + }, + "nativeSrc": "1973:41:55", + "nodeType": "YulFunctionCall", + "src": "1973:41:55" + }, + "nativeSrc": "1973:41:55", + "nodeType": "YulExpressionStatement", + "src": "1973:41:55" + } + ] + }, + "name": "abi_decode_available_length_string", + "nativeSrc": "1388:632:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1432:3:55", + "nodeType": "YulTypedName", + "src": "1432:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1437:6:55", + "nodeType": "YulTypedName", + "src": "1437:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1445:3:55", + "nodeType": "YulTypedName", + "src": "1445:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "1453:5:55", + "nodeType": "YulTypedName", + "src": "1453:5:55", + "type": "" + } + ], + "src": "1388:632:55" + }, + { + "body": { + "nativeSrc": "2105:371:55", + "nodeType": "YulBlock", + "src": "2105:371:55", + "statements": [ + { + "body": { + "nativeSrc": "2151:16:55", + "nodeType": "YulBlock", + "src": "2151:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2160:1:55", + "nodeType": "YulLiteral", + "src": "2160:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2163:1:55", + "nodeType": "YulLiteral", + "src": "2163:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2153:6:55", + "nodeType": "YulIdentifier", + "src": "2153:6:55" + }, + "nativeSrc": "2153:12:55", + "nodeType": "YulFunctionCall", + "src": "2153:12:55" + }, + "nativeSrc": "2153:12:55", + "nodeType": "YulExpressionStatement", + "src": "2153:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2126:7:55", + "nodeType": "YulIdentifier", + "src": "2126:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2135:9:55", + "nodeType": "YulIdentifier", + "src": "2135:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2122:3:55", + "nodeType": "YulIdentifier", + "src": "2122:3:55" + }, + "nativeSrc": "2122:23:55", + "nodeType": "YulFunctionCall", + "src": "2122:23:55" + }, + { + "kind": "number", + "nativeSrc": "2147:2:55", + "nodeType": "YulLiteral", + "src": "2147:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2118:3:55", + "nodeType": "YulIdentifier", + "src": "2118:3:55" + }, + "nativeSrc": "2118:32:55", + "nodeType": "YulFunctionCall", + "src": "2118:32:55" + }, + "nativeSrc": "2115:52:55", + "nodeType": "YulIf", + "src": "2115:52:55" + }, + { + "nativeSrc": "2176:37:55", + "nodeType": "YulVariableDeclaration", + "src": "2176:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2203:9:55", + "nodeType": "YulIdentifier", + "src": "2203:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2190:12:55", + "nodeType": "YulIdentifier", + "src": "2190:12:55" + }, + "nativeSrc": "2190:23:55", + "nodeType": "YulFunctionCall", + "src": "2190:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2180:6:55", + "nodeType": "YulTypedName", + "src": "2180:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2256:16:55", + "nodeType": "YulBlock", + "src": "2256:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2265:1:55", + "nodeType": "YulLiteral", + "src": "2265:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2268:1:55", + "nodeType": "YulLiteral", + "src": "2268:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2258:6:55", + "nodeType": "YulIdentifier", + "src": "2258:6:55" + }, + "nativeSrc": "2258:12:55", + "nodeType": "YulFunctionCall", + "src": "2258:12:55" + }, + "nativeSrc": "2258:12:55", + "nodeType": "YulExpressionStatement", + "src": "2258:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2228:6:55", + "nodeType": "YulIdentifier", + "src": "2228:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2244:2:55", + "nodeType": "YulLiteral", + "src": "2244:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "2248:1:55", + "nodeType": "YulLiteral", + "src": "2248:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2240:3:55", + "nodeType": "YulIdentifier", + "src": "2240:3:55" + }, + "nativeSrc": "2240:10:55", + "nodeType": "YulFunctionCall", + "src": "2240:10:55" + }, + { + "kind": "number", + "nativeSrc": "2252:1:55", + "nodeType": "YulLiteral", + "src": "2252:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2236:3:55", + "nodeType": "YulIdentifier", + "src": "2236:3:55" + }, + "nativeSrc": "2236:18:55", + "nodeType": "YulFunctionCall", + "src": "2236:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2225:2:55", + "nodeType": "YulIdentifier", + "src": "2225:2:55" + }, + "nativeSrc": "2225:30:55", + "nodeType": "YulFunctionCall", + "src": "2225:30:55" + }, + "nativeSrc": "2222:50:55", + "nodeType": "YulIf", + "src": "2222:50:55" + }, + { + "nativeSrc": "2281:32:55", + "nodeType": "YulVariableDeclaration", + "src": "2281:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2295:9:55", + "nodeType": "YulIdentifier", + "src": "2295:9:55" + }, + { + "name": "offset", + "nativeSrc": "2306:6:55", + "nodeType": "YulIdentifier", + "src": "2306:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2291:3:55", + "nodeType": "YulIdentifier", + "src": "2291:3:55" + }, + "nativeSrc": "2291:22:55", + "nodeType": "YulFunctionCall", + "src": "2291:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2285:2:55", + "nodeType": "YulTypedName", + "src": "2285:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2361:16:55", + "nodeType": "YulBlock", + "src": "2361:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2370:1:55", + "nodeType": "YulLiteral", + "src": "2370:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2373:1:55", + "nodeType": "YulLiteral", + "src": "2373:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2363:6:55", + "nodeType": "YulIdentifier", + "src": "2363:6:55" + }, + "nativeSrc": "2363:12:55", + "nodeType": "YulFunctionCall", + "src": "2363:12:55" + }, + "nativeSrc": "2363:12:55", + "nodeType": "YulExpressionStatement", + "src": "2363:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2340:2:55", + "nodeType": "YulIdentifier", + "src": "2340:2:55" + }, + { + "kind": "number", + "nativeSrc": "2344:4:55", + "nodeType": "YulLiteral", + "src": "2344:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2336:3:55", + "nodeType": "YulIdentifier", + "src": "2336:3:55" + }, + "nativeSrc": "2336:13:55", + "nodeType": "YulFunctionCall", + "src": "2336:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "2351:7:55", + "nodeType": "YulIdentifier", + "src": "2351:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2332:3:55", + "nodeType": "YulIdentifier", + "src": "2332:3:55" + }, + "nativeSrc": "2332:27:55", + "nodeType": "YulFunctionCall", + "src": "2332:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2325:6:55", + "nodeType": "YulIdentifier", + "src": "2325:6:55" + }, + "nativeSrc": "2325:35:55", + "nodeType": "YulFunctionCall", + "src": "2325:35:55" + }, + "nativeSrc": "2322:55:55", + "nodeType": "YulIf", + "src": "2322:55:55" + }, + { + "nativeSrc": "2386:84:55", + "nodeType": "YulAssignment", + "src": "2386:84:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2435:2:55", + "nodeType": "YulIdentifier", + "src": "2435:2:55" + }, + { + "kind": "number", + "nativeSrc": "2439:2:55", + "nodeType": "YulLiteral", + "src": "2439:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:55", + "nodeType": "YulIdentifier", + "src": "2431:3:55" + }, + "nativeSrc": "2431:11:55", + "nodeType": "YulFunctionCall", + "src": "2431:11:55" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2457:2:55", + "nodeType": "YulIdentifier", + "src": "2457:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2444:12:55", + "nodeType": "YulIdentifier", + "src": "2444:12:55" + }, + "nativeSrc": "2444:16:55", + "nodeType": "YulFunctionCall", + "src": "2444:16:55" + }, + { + "name": "dataEnd", + "nativeSrc": "2462:7:55", + "nodeType": "YulIdentifier", + "src": "2462:7:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "2396:34:55", + "nodeType": "YulIdentifier", + "src": "2396:34:55" + }, + "nativeSrc": "2396:74:55", + "nodeType": "YulFunctionCall", + "src": "2396:74:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2386:6:55", + "nodeType": "YulIdentifier", + "src": "2386:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "2025:451:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2071:9:55", + "nodeType": "YulTypedName", + "src": "2071:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2082:7:55", + "nodeType": "YulTypedName", + "src": "2082:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2094:6:55", + "nodeType": "YulTypedName", + "src": "2094:6:55", + "type": "" + } + ], + "src": "2025:451:55" + }, + { + "body": { + "nativeSrc": "2551:110:55", + "nodeType": "YulBlock", + "src": "2551:110:55", + "statements": [ + { + "body": { + "nativeSrc": "2597:16:55", + "nodeType": "YulBlock", + "src": "2597:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2606:1:55", + "nodeType": "YulLiteral", + "src": "2606:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2609:1:55", + "nodeType": "YulLiteral", + "src": "2609:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2599:6:55", + "nodeType": "YulIdentifier", + "src": "2599:6:55" + }, + "nativeSrc": "2599:12:55", + "nodeType": "YulFunctionCall", + "src": "2599:12:55" + }, + "nativeSrc": "2599:12:55", + "nodeType": "YulExpressionStatement", + "src": "2599:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2572:7:55", + "nodeType": "YulIdentifier", + "src": "2572:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2581:9:55", + "nodeType": "YulIdentifier", + "src": "2581:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2568:3:55", + "nodeType": "YulIdentifier", + "src": "2568:3:55" + }, + "nativeSrc": "2568:23:55", + "nodeType": "YulFunctionCall", + "src": "2568:23:55" + }, + { + "kind": "number", + "nativeSrc": "2593:2:55", + "nodeType": "YulLiteral", + "src": "2593:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2564:3:55", + "nodeType": "YulIdentifier", + "src": "2564:3:55" + }, + "nativeSrc": "2564:32:55", + "nodeType": "YulFunctionCall", + "src": "2564:32:55" + }, + "nativeSrc": "2561:52:55", + "nodeType": "YulIf", + "src": "2561:52:55" + }, + { + "nativeSrc": "2622:33:55", + "nodeType": "YulAssignment", + "src": "2622:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2645:9:55", + "nodeType": "YulIdentifier", + "src": "2645:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2632:12:55", + "nodeType": "YulIdentifier", + "src": "2632:12:55" + }, + "nativeSrc": "2632:23:55", + "nodeType": "YulFunctionCall", + "src": "2632:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2622:6:55", + "nodeType": "YulIdentifier", + "src": "2622:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "2481:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2517:9:55", + "nodeType": "YulTypedName", + "src": "2517:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2528:7:55", + "nodeType": "YulTypedName", + "src": "2528:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2540:6:55", + "nodeType": "YulTypedName", + "src": "2540:6:55", + "type": "" + } + ], + "src": "2481:180:55" + }, + { + "body": { + "nativeSrc": "2736:110:55", + "nodeType": "YulBlock", + "src": "2736:110:55", + "statements": [ + { + "body": { + "nativeSrc": "2782:16:55", + "nodeType": "YulBlock", + "src": "2782:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2791:1:55", + "nodeType": "YulLiteral", + "src": "2791:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2794:1:55", + "nodeType": "YulLiteral", + "src": "2794:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2784:6:55", + "nodeType": "YulIdentifier", + "src": "2784:6:55" + }, + "nativeSrc": "2784:12:55", + "nodeType": "YulFunctionCall", + "src": "2784:12:55" + }, + "nativeSrc": "2784:12:55", + "nodeType": "YulExpressionStatement", + "src": "2784:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2757:7:55", + "nodeType": "YulIdentifier", + "src": "2757:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2766:9:55", + "nodeType": "YulIdentifier", + "src": "2766:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2753:3:55", + "nodeType": "YulIdentifier", + "src": "2753:3:55" + }, + "nativeSrc": "2753:23:55", + "nodeType": "YulFunctionCall", + "src": "2753:23:55" + }, + { + "kind": "number", + "nativeSrc": "2778:2:55", + "nodeType": "YulLiteral", + "src": "2778:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2749:3:55", + "nodeType": "YulIdentifier", + "src": "2749:3:55" + }, + "nativeSrc": "2749:32:55", + "nodeType": "YulFunctionCall", + "src": "2749:32:55" + }, + "nativeSrc": "2746:52:55", + "nodeType": "YulIf", + "src": "2746:52:55" + }, + { + "nativeSrc": "2807:33:55", + "nodeType": "YulAssignment", + "src": "2807:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2830:9:55", + "nodeType": "YulIdentifier", + "src": "2830:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2817:12:55", + "nodeType": "YulIdentifier", + "src": "2817:12:55" + }, + "nativeSrc": "2817:23:55", + "nodeType": "YulFunctionCall", + "src": "2817:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2807:6:55", + "nodeType": "YulIdentifier", + "src": "2807:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "2666:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2702:9:55", + "nodeType": "YulTypedName", + "src": "2702:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2713:7:55", + "nodeType": "YulTypedName", + "src": "2713:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2725:6:55", + "nodeType": "YulTypedName", + "src": "2725:6:55", + "type": "" + } + ], + "src": "2666:180:55" + }, + { + "body": { + "nativeSrc": "2938:167:55", + "nodeType": "YulBlock", + "src": "2938:167:55", + "statements": [ + { + "body": { + "nativeSrc": "2984:16:55", + "nodeType": "YulBlock", + "src": "2984:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2993:1:55", + "nodeType": "YulLiteral", + "src": "2993:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2996:1:55", + "nodeType": "YulLiteral", + "src": "2996:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2986:6:55", + "nodeType": "YulIdentifier", + "src": "2986:6:55" + }, + "nativeSrc": "2986:12:55", + "nodeType": "YulFunctionCall", + "src": "2986:12:55" + }, + "nativeSrc": "2986:12:55", + "nodeType": "YulExpressionStatement", + "src": "2986:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2959:7:55", + "nodeType": "YulIdentifier", + "src": "2959:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2968:9:55", + "nodeType": "YulIdentifier", + "src": "2968:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2955:3:55", + "nodeType": "YulIdentifier", + "src": "2955:3:55" + }, + "nativeSrc": "2955:23:55", + "nodeType": "YulFunctionCall", + "src": "2955:23:55" + }, + { + "kind": "number", + "nativeSrc": "2980:2:55", + "nodeType": "YulLiteral", + "src": "2980:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2951:3:55", + "nodeType": "YulIdentifier", + "src": "2951:3:55" + }, + "nativeSrc": "2951:32:55", + "nodeType": "YulFunctionCall", + "src": "2951:32:55" + }, + "nativeSrc": "2948:52:55", + "nodeType": "YulIf", + "src": "2948:52:55" + }, + { + "nativeSrc": "3009:33:55", + "nodeType": "YulAssignment", + "src": "3009:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3032:9:55", + "nodeType": "YulIdentifier", + "src": "3032:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3019:12:55", + "nodeType": "YulIdentifier", + "src": "3019:12:55" + }, + "nativeSrc": "3019:23:55", + "nodeType": "YulFunctionCall", + "src": "3019:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3009:6:55", + "nodeType": "YulIdentifier", + "src": "3009:6:55" + } + ] + }, + { + "nativeSrc": "3051:48:55", + "nodeType": "YulAssignment", + "src": "3051:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3084:9:55", + "nodeType": "YulIdentifier", + "src": "3084:9:55" + }, + { + "kind": "number", + "nativeSrc": "3095:2:55", + "nodeType": "YulLiteral", + "src": "3095:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3080:3:55", + "nodeType": "YulIdentifier", + "src": "3080:3:55" + }, + "nativeSrc": "3080:18:55", + "nodeType": "YulFunctionCall", + "src": "3080:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3061:18:55", + "nodeType": "YulIdentifier", + "src": "3061:18:55" + }, + "nativeSrc": "3061:38:55", + "nodeType": "YulFunctionCall", + "src": "3061:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3051:6:55", + "nodeType": "YulIdentifier", + "src": "3051:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "2851:254:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2896:9:55", + "nodeType": "YulTypedName", + "src": "2896:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2907:7:55", + "nodeType": "YulTypedName", + "src": "2907:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2919:6:55", + "nodeType": "YulTypedName", + "src": "2919:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2927:6:55", + "nodeType": "YulTypedName", + "src": "2927:6:55", + "type": "" + } + ], + "src": "2851:254:55" + }, + { + "body": { + "nativeSrc": "3211:76:55", + "nodeType": "YulBlock", + "src": "3211:76:55", + "statements": [ + { + "nativeSrc": "3221:26:55", + "nodeType": "YulAssignment", + "src": "3221:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3233:9:55", + "nodeType": "YulIdentifier", + "src": "3233:9:55" + }, + { + "kind": "number", + "nativeSrc": "3244:2:55", + "nodeType": "YulLiteral", + "src": "3244:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3229:3:55", + "nodeType": "YulIdentifier", + "src": "3229:3:55" + }, + "nativeSrc": "3229:18:55", + "nodeType": "YulFunctionCall", + "src": "3229:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3221:4:55", + "nodeType": "YulIdentifier", + "src": "3221:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3263:9:55", + "nodeType": "YulIdentifier", + "src": "3263:9:55" + }, + { + "name": "value0", + "nativeSrc": "3274:6:55", + "nodeType": "YulIdentifier", + "src": "3274:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3256:6:55", + "nodeType": "YulIdentifier", + "src": "3256:6:55" + }, + "nativeSrc": "3256:25:55", + "nodeType": "YulFunctionCall", + "src": "3256:25:55" + }, + "nativeSrc": "3256:25:55", + "nodeType": "YulExpressionStatement", + "src": "3256:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3110:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3180:9:55", + "nodeType": "YulTypedName", + "src": "3180:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3191:6:55", + "nodeType": "YulTypedName", + "src": "3191:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3202:4:55", + "nodeType": "YulTypedName", + "src": "3202:4:55", + "type": "" + } + ], + "src": "3110:177:55" + }, + { + "body": { + "nativeSrc": "3388:428:55", + "nodeType": "YulBlock", + "src": "3388:428:55", + "statements": [ + { + "body": { + "nativeSrc": "3434:16:55", + "nodeType": "YulBlock", + "src": "3434:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3443:1:55", + "nodeType": "YulLiteral", + "src": "3443:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3446:1:55", + "nodeType": "YulLiteral", + "src": "3446:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3436:6:55", + "nodeType": "YulIdentifier", + "src": "3436:6:55" + }, + "nativeSrc": "3436:12:55", + "nodeType": "YulFunctionCall", + "src": "3436:12:55" + }, + "nativeSrc": "3436:12:55", + "nodeType": "YulExpressionStatement", + "src": "3436:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3409:7:55", + "nodeType": "YulIdentifier", + "src": "3409:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3418:9:55", + "nodeType": "YulIdentifier", + "src": "3418:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3405:3:55", + "nodeType": "YulIdentifier", + "src": "3405:3:55" + }, + "nativeSrc": "3405:23:55", + "nodeType": "YulFunctionCall", + "src": "3405:23:55" + }, + { + "kind": "number", + "nativeSrc": "3430:2:55", + "nodeType": "YulLiteral", + "src": "3430:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3401:3:55", + "nodeType": "YulIdentifier", + "src": "3401:3:55" + }, + "nativeSrc": "3401:32:55", + "nodeType": "YulFunctionCall", + "src": "3401:32:55" + }, + "nativeSrc": "3398:52:55", + "nodeType": "YulIf", + "src": "3398:52:55" + }, + { + "nativeSrc": "3459:39:55", + "nodeType": "YulAssignment", + "src": "3459:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3488:9:55", + "nodeType": "YulIdentifier", + "src": "3488:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3469:18:55", + "nodeType": "YulIdentifier", + "src": "3469:18:55" + }, + "nativeSrc": "3469:29:55", + "nodeType": "YulFunctionCall", + "src": "3469:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3459:6:55", + "nodeType": "YulIdentifier", + "src": "3459:6:55" + } + ] + }, + { + "nativeSrc": "3507:46:55", + "nodeType": "YulVariableDeclaration", + "src": "3507:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3538:9:55", + "nodeType": "YulIdentifier", + "src": "3538:9:55" + }, + { + "kind": "number", + "nativeSrc": "3549:2:55", + "nodeType": "YulLiteral", + "src": "3549:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3534:3:55", + "nodeType": "YulIdentifier", + "src": "3534:3:55" + }, + "nativeSrc": "3534:18:55", + "nodeType": "YulFunctionCall", + "src": "3534:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3521:12:55", + "nodeType": "YulIdentifier", + "src": "3521:12:55" + }, + "nativeSrc": "3521:32:55", + "nodeType": "YulFunctionCall", + "src": "3521:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3511:6:55", + "nodeType": "YulTypedName", + "src": "3511:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3596:16:55", + "nodeType": "YulBlock", + "src": "3596:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3605:1:55", + "nodeType": "YulLiteral", + "src": "3605:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3608:1:55", + "nodeType": "YulLiteral", + "src": "3608:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3598:6:55", + "nodeType": "YulIdentifier", + "src": "3598:6:55" + }, + "nativeSrc": "3598:12:55", + "nodeType": "YulFunctionCall", + "src": "3598:12:55" + }, + "nativeSrc": "3598:12:55", + "nodeType": "YulExpressionStatement", + "src": "3598:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3568:6:55", + "nodeType": "YulIdentifier", + "src": "3568:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3584:2:55", + "nodeType": "YulLiteral", + "src": "3584:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3588:1:55", + "nodeType": "YulLiteral", + "src": "3588:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3580:3:55", + "nodeType": "YulIdentifier", + "src": "3580:3:55" + }, + "nativeSrc": "3580:10:55", + "nodeType": "YulFunctionCall", + "src": "3580:10:55" + }, + { + "kind": "number", + "nativeSrc": "3592:1:55", + "nodeType": "YulLiteral", + "src": "3592:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3576:3:55", + "nodeType": "YulIdentifier", + "src": "3576:3:55" + }, + "nativeSrc": "3576:18:55", + "nodeType": "YulFunctionCall", + "src": "3576:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3565:2:55", + "nodeType": "YulIdentifier", + "src": "3565:2:55" + }, + "nativeSrc": "3565:30:55", + "nodeType": "YulFunctionCall", + "src": "3565:30:55" + }, + "nativeSrc": "3562:50:55", + "nodeType": "YulIf", + "src": "3562:50:55" + }, + { + "nativeSrc": "3621:32:55", + "nodeType": "YulVariableDeclaration", + "src": "3621:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3635:9:55", + "nodeType": "YulIdentifier", + "src": "3635:9:55" + }, + { + "name": "offset", + "nativeSrc": "3646:6:55", + "nodeType": "YulIdentifier", + "src": "3646:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3631:3:55", + "nodeType": "YulIdentifier", + "src": "3631:3:55" + }, + "nativeSrc": "3631:22:55", + "nodeType": "YulFunctionCall", + "src": "3631:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3625:2:55", + "nodeType": "YulTypedName", + "src": "3625:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3701:16:55", + "nodeType": "YulBlock", + "src": "3701:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3710:1:55", + "nodeType": "YulLiteral", + "src": "3710:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3713:1:55", + "nodeType": "YulLiteral", + "src": "3713:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3703:6:55", + "nodeType": "YulIdentifier", + "src": "3703:6:55" + }, + "nativeSrc": "3703:12:55", + "nodeType": "YulFunctionCall", + "src": "3703:12:55" + }, + "nativeSrc": "3703:12:55", + "nodeType": "YulExpressionStatement", + "src": "3703:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3680:2:55", + "nodeType": "YulIdentifier", + "src": "3680:2:55" + }, + { + "kind": "number", + "nativeSrc": "3684:4:55", + "nodeType": "YulLiteral", + "src": "3684:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3676:3:55", + "nodeType": "YulIdentifier", + "src": "3676:3:55" + }, + "nativeSrc": "3676:13:55", + "nodeType": "YulFunctionCall", + "src": "3676:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "3691:7:55", + "nodeType": "YulIdentifier", + "src": "3691:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3672:3:55", + "nodeType": "YulIdentifier", + "src": "3672:3:55" + }, + "nativeSrc": "3672:27:55", + "nodeType": "YulFunctionCall", + "src": "3672:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3665:6:55", + "nodeType": "YulIdentifier", + "src": "3665:6:55" + }, + "nativeSrc": "3665:35:55", + "nodeType": "YulFunctionCall", + "src": "3665:35:55" + }, + "nativeSrc": "3662:55:55", + "nodeType": "YulIf", + "src": "3662:55:55" + }, + { + "nativeSrc": "3726:84:55", + "nodeType": "YulAssignment", + "src": "3726:84:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3775:2:55", + "nodeType": "YulIdentifier", + "src": "3775:2:55" + }, + { + "kind": "number", + "nativeSrc": "3779:2:55", + "nodeType": "YulLiteral", + "src": "3779:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3771:3:55", + "nodeType": "YulIdentifier", + "src": "3771:3:55" + }, + "nativeSrc": "3771:11:55", + "nodeType": "YulFunctionCall", + "src": "3771:11:55" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3797:2:55", + "nodeType": "YulIdentifier", + "src": "3797:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3784:12:55", + "nodeType": "YulIdentifier", + "src": "3784:12:55" + }, + "nativeSrc": "3784:16:55", + "nodeType": "YulFunctionCall", + "src": "3784:16:55" + }, + { + "name": "dataEnd", + "nativeSrc": "3802:7:55", + "nodeType": "YulIdentifier", + "src": "3802:7:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "3736:34:55", + "nodeType": "YulIdentifier", + "src": "3736:34:55" + }, + "nativeSrc": "3736:74:55", + "nodeType": "YulFunctionCall", + "src": "3736:74:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3726:6:55", + "nodeType": "YulIdentifier", + "src": "3726:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "3292:524:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3346:9:55", + "nodeType": "YulTypedName", + "src": "3346:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3357:7:55", + "nodeType": "YulTypedName", + "src": "3357:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3369:6:55", + "nodeType": "YulTypedName", + "src": "3369:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3377:6:55", + "nodeType": "YulTypedName", + "src": "3377:6:55", + "type": "" + } + ], + "src": "3292:524:55" + }, + { + "body": { + "nativeSrc": "3887:184:55", + "nodeType": "YulBlock", + "src": "3887:184:55", + "statements": [ + { + "nativeSrc": "3897:10:55", + "nodeType": "YulVariableDeclaration", + "src": "3897:10:55", + "value": { + "kind": "number", + "nativeSrc": "3906:1:55", + "nodeType": "YulLiteral", + "src": "3906:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "3901:1:55", + "nodeType": "YulTypedName", + "src": "3901:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3966:63:55", + "nodeType": "YulBlock", + "src": "3966:63:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "3991:3:55", + "nodeType": "YulIdentifier", + "src": "3991:3:55" + }, + { + "name": "i", + "nativeSrc": "3996:1:55", + "nodeType": "YulIdentifier", + "src": "3996:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3987:3:55", + "nodeType": "YulIdentifier", + "src": "3987:3:55" + }, + "nativeSrc": "3987:11:55", + "nodeType": "YulFunctionCall", + "src": "3987:11:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4010:3:55", + "nodeType": "YulIdentifier", + "src": "4010:3:55" + }, + { + "name": "i", + "nativeSrc": "4015:1:55", + "nodeType": "YulIdentifier", + "src": "4015:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4006:3:55", + "nodeType": "YulIdentifier", + "src": "4006:3:55" + }, + "nativeSrc": "4006:11:55", + "nodeType": "YulFunctionCall", + "src": "4006:11:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4000:5:55", + "nodeType": "YulIdentifier", + "src": "4000:5:55" + }, + "nativeSrc": "4000:18:55", + "nodeType": "YulFunctionCall", + "src": "4000:18:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3980:6:55", + "nodeType": "YulIdentifier", + "src": "3980:6:55" + }, + "nativeSrc": "3980:39:55", + "nodeType": "YulFunctionCall", + "src": "3980:39:55" + }, + "nativeSrc": "3980:39:55", + "nodeType": "YulExpressionStatement", + "src": "3980:39:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3927:1:55", + "nodeType": "YulIdentifier", + "src": "3927:1:55" + }, + { + "name": "length", + "nativeSrc": "3930:6:55", + "nodeType": "YulIdentifier", + "src": "3930:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3924:2:55", + "nodeType": "YulIdentifier", + "src": "3924:2:55" + }, + "nativeSrc": "3924:13:55", + "nodeType": "YulFunctionCall", + "src": "3924:13:55" + }, + "nativeSrc": "3916:113:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3938:19:55", + "nodeType": "YulBlock", + "src": "3938:19:55", + "statements": [ + { + "nativeSrc": "3940:15:55", + "nodeType": "YulAssignment", + "src": "3940:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3949:1:55", + "nodeType": "YulIdentifier", + "src": "3949:1:55" + }, + { + "kind": "number", + "nativeSrc": "3952:2:55", + "nodeType": "YulLiteral", + "src": "3952:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3945:3:55", + "nodeType": "YulIdentifier", + "src": "3945:3:55" + }, + "nativeSrc": "3945:10:55", + "nodeType": "YulFunctionCall", + "src": "3945:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "3940:1:55", + "nodeType": "YulIdentifier", + "src": "3940:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "3920:3:55", + "nodeType": "YulBlock", + "src": "3920:3:55", + "statements": [] + }, + "src": "3916:113:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "4049:3:55", + "nodeType": "YulIdentifier", + "src": "4049:3:55" + }, + { + "name": "length", + "nativeSrc": "4054:6:55", + "nodeType": "YulIdentifier", + "src": "4054:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4045:3:55", + "nodeType": "YulIdentifier", + "src": "4045:3:55" + }, + "nativeSrc": "4045:16:55", + "nodeType": "YulFunctionCall", + "src": "4045:16:55" + }, + { + "kind": "number", + "nativeSrc": "4063:1:55", + "nodeType": "YulLiteral", + "src": "4063:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4038:6:55", + "nodeType": "YulIdentifier", + "src": "4038:6:55" + }, + "nativeSrc": "4038:27:55", + "nodeType": "YulFunctionCall", + "src": "4038:27:55" + }, + "nativeSrc": "4038:27:55", + "nodeType": "YulExpressionStatement", + "src": "4038:27:55" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "3821:250:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "3865:3:55", + "nodeType": "YulTypedName", + "src": "3865:3:55", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "3870:3:55", + "nodeType": "YulTypedName", + "src": "3870:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "3875:6:55", + "nodeType": "YulTypedName", + "src": "3875:6:55", + "type": "" + } + ], + "src": "3821:250:55" + }, + { + "body": { + "nativeSrc": "4126:221:55", + "nodeType": "YulBlock", + "src": "4126:221:55", + "statements": [ + { + "nativeSrc": "4136:26:55", + "nodeType": "YulVariableDeclaration", + "src": "4136:26:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4156:5:55", + "nodeType": "YulIdentifier", + "src": "4156:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4150:5:55", + "nodeType": "YulIdentifier", + "src": "4150:5:55" + }, + "nativeSrc": "4150:12:55", + "nodeType": "YulFunctionCall", + "src": "4150:12:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4140:6:55", + "nodeType": "YulTypedName", + "src": "4140:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4178:3:55", + "nodeType": "YulIdentifier", + "src": "4178:3:55" + }, + { + "name": "length", + "nativeSrc": "4183:6:55", + "nodeType": "YulIdentifier", + "src": "4183:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4171:6:55", + "nodeType": "YulIdentifier", + "src": "4171:6:55" + }, + "nativeSrc": "4171:19:55", + "nodeType": "YulFunctionCall", + "src": "4171:19:55" + }, + "nativeSrc": "4171:19:55", + "nodeType": "YulExpressionStatement", + "src": "4171:19:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4238:5:55", + "nodeType": "YulIdentifier", + "src": "4238:5:55" + }, + { + "kind": "number", + "nativeSrc": "4245:4:55", + "nodeType": "YulLiteral", + "src": "4245:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4234:3:55", + "nodeType": "YulIdentifier", + "src": "4234:3:55" + }, + "nativeSrc": "4234:16:55", + "nodeType": "YulFunctionCall", + "src": "4234:16:55" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4256:3:55", + "nodeType": "YulIdentifier", + "src": "4256:3:55" + }, + { + "kind": "number", + "nativeSrc": "4261:4:55", + "nodeType": "YulLiteral", + "src": "4261:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4252:3:55", + "nodeType": "YulIdentifier", + "src": "4252:3:55" + }, + "nativeSrc": "4252:14:55", + "nodeType": "YulFunctionCall", + "src": "4252:14:55" + }, + { + "name": "length", + "nativeSrc": "4268:6:55", + "nodeType": "YulIdentifier", + "src": "4268:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "4199:34:55", + "nodeType": "YulIdentifier", + "src": "4199:34:55" + }, + "nativeSrc": "4199:76:55", + "nodeType": "YulFunctionCall", + "src": "4199:76:55" + }, + "nativeSrc": "4199:76:55", + "nodeType": "YulExpressionStatement", + "src": "4199:76:55" + }, + { + "nativeSrc": "4284:57:55", + "nodeType": "YulAssignment", + "src": "4284:57:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4299:3:55", + "nodeType": "YulIdentifier", + "src": "4299:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "4312:6:55", + "nodeType": "YulIdentifier", + "src": "4312:6:55" + }, + { + "kind": "number", + "nativeSrc": "4320:2:55", + "nodeType": "YulLiteral", + "src": "4320:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4308:3:55", + "nodeType": "YulIdentifier", + "src": "4308:3:55" + }, + "nativeSrc": "4308:15:55", + "nodeType": "YulFunctionCall", + "src": "4308:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4329:2:55", + "nodeType": "YulLiteral", + "src": "4329:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4325:3:55", + "nodeType": "YulIdentifier", + "src": "4325:3:55" + }, + "nativeSrc": "4325:7:55", + "nodeType": "YulFunctionCall", + "src": "4325:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4304:3:55", + "nodeType": "YulIdentifier", + "src": "4304:3:55" + }, + "nativeSrc": "4304:29:55", + "nodeType": "YulFunctionCall", + "src": "4304:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4295:3:55", + "nodeType": "YulIdentifier", + "src": "4295:3:55" + }, + "nativeSrc": "4295:39:55", + "nodeType": "YulFunctionCall", + "src": "4295:39:55" + }, + { + "kind": "number", + "nativeSrc": "4336:4:55", + "nodeType": "YulLiteral", + "src": "4336:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4291:3:55", + "nodeType": "YulIdentifier", + "src": "4291:3:55" + }, + "nativeSrc": "4291:50:55", + "nodeType": "YulFunctionCall", + "src": "4291:50:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "4284:3:55", + "nodeType": "YulIdentifier", + "src": "4284:3:55" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "4076:271:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4103:5:55", + "nodeType": "YulTypedName", + "src": "4103:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "4110:3:55", + "nodeType": "YulTypedName", + "src": "4110:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "4118:3:55", + "nodeType": "YulTypedName", + "src": "4118:3:55", + "type": "" + } + ], + "src": "4076:271:55" + }, + { + "body": { + "nativeSrc": "4473:99:55", + "nodeType": "YulBlock", + "src": "4473:99:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4490:9:55", + "nodeType": "YulIdentifier", + "src": "4490:9:55" + }, + { + "kind": "number", + "nativeSrc": "4501:2:55", + "nodeType": "YulLiteral", + "src": "4501:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4483:6:55", + "nodeType": "YulIdentifier", + "src": "4483:6:55" + }, + "nativeSrc": "4483:21:55", + "nodeType": "YulFunctionCall", + "src": "4483:21:55" + }, + "nativeSrc": "4483:21:55", + "nodeType": "YulExpressionStatement", + "src": "4483:21:55" + }, + { + "nativeSrc": "4513:53:55", + "nodeType": "YulAssignment", + "src": "4513:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4539:6:55", + "nodeType": "YulIdentifier", + "src": "4539:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4551:9:55", + "nodeType": "YulIdentifier", + "src": "4551:9:55" + }, + { + "kind": "number", + "nativeSrc": "4562:2:55", + "nodeType": "YulLiteral", + "src": "4562:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4547:3:55", + "nodeType": "YulIdentifier", + "src": "4547:3:55" + }, + "nativeSrc": "4547:18:55", + "nodeType": "YulFunctionCall", + "src": "4547:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "4521:17:55", + "nodeType": "YulIdentifier", + "src": "4521:17:55" + }, + "nativeSrc": "4521:45:55", + "nodeType": "YulFunctionCall", + "src": "4521:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4513:4:55", + "nodeType": "YulIdentifier", + "src": "4513:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "4352:220:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4442:9:55", + "nodeType": "YulTypedName", + "src": "4442:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4453:6:55", + "nodeType": "YulTypedName", + "src": "4453:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4464:4:55", + "nodeType": "YulTypedName", + "src": "4464:4:55", + "type": "" + } + ], + "src": "4352:220:55" + }, + { + "body": { + "nativeSrc": "4728:481:55", + "nodeType": "YulBlock", + "src": "4728:481:55", + "statements": [ + { + "nativeSrc": "4738:12:55", + "nodeType": "YulVariableDeclaration", + "src": "4738:12:55", + "value": { + "kind": "number", + "nativeSrc": "4748:2:55", + "nodeType": "YulLiteral", + "src": "4748:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4742:2:55", + "nodeType": "YulTypedName", + "src": "4742:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4759:32:55", + "nodeType": "YulVariableDeclaration", + "src": "4759:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4777:9:55", + "nodeType": "YulIdentifier", + "src": "4777:9:55" + }, + { + "kind": "number", + "nativeSrc": "4788:2:55", + "nodeType": "YulLiteral", + "src": "4788:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4773:3:55", + "nodeType": "YulIdentifier", + "src": "4773:3:55" + }, + "nativeSrc": "4773:18:55", + "nodeType": "YulFunctionCall", + "src": "4773:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "4763:6:55", + "nodeType": "YulTypedName", + "src": "4763:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4807:9:55", + "nodeType": "YulIdentifier", + "src": "4807:9:55" + }, + { + "kind": "number", + "nativeSrc": "4818:2:55", + "nodeType": "YulLiteral", + "src": "4818:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4800:6:55", + "nodeType": "YulIdentifier", + "src": "4800:6:55" + }, + "nativeSrc": "4800:21:55", + "nodeType": "YulFunctionCall", + "src": "4800:21:55" + }, + "nativeSrc": "4800:21:55", + "nodeType": "YulExpressionStatement", + "src": "4800:21:55" + }, + { + "nativeSrc": "4830:17:55", + "nodeType": "YulVariableDeclaration", + "src": "4830:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "4841:6:55", + "nodeType": "YulIdentifier", + "src": "4841:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "4834:3:55", + "nodeType": "YulTypedName", + "src": "4834:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4856:27:55", + "nodeType": "YulVariableDeclaration", + "src": "4856:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4876:6:55", + "nodeType": "YulIdentifier", + "src": "4876:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4870:5:55", + "nodeType": "YulIdentifier", + "src": "4870:5:55" + }, + "nativeSrc": "4870:13:55", + "nodeType": "YulFunctionCall", + "src": "4870:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4860:6:55", + "nodeType": "YulTypedName", + "src": "4860:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "4899:6:55", + "nodeType": "YulIdentifier", + "src": "4899:6:55" + }, + { + "name": "length", + "nativeSrc": "4907:6:55", + "nodeType": "YulIdentifier", + "src": "4907:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4892:6:55", + "nodeType": "YulIdentifier", + "src": "4892:6:55" + }, + "nativeSrc": "4892:22:55", + "nodeType": "YulFunctionCall", + "src": "4892:22:55" + }, + "nativeSrc": "4892:22:55", + "nodeType": "YulExpressionStatement", + "src": "4892:22:55" + }, + { + "nativeSrc": "4923:25:55", + "nodeType": "YulAssignment", + "src": "4923:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4934:9:55", + "nodeType": "YulIdentifier", + "src": "4934:9:55" + }, + { + "kind": "number", + "nativeSrc": "4945:2:55", + "nodeType": "YulLiteral", + "src": "4945:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4930:3:55", + "nodeType": "YulIdentifier", + "src": "4930:3:55" + }, + "nativeSrc": "4930:18:55", + "nodeType": "YulFunctionCall", + "src": "4930:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "4923:3:55", + "nodeType": "YulIdentifier", + "src": "4923:3:55" + } + ] + }, + { + "nativeSrc": "4957:29:55", + "nodeType": "YulVariableDeclaration", + "src": "4957:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4975:6:55", + "nodeType": "YulIdentifier", + "src": "4975:6:55" + }, + { + "kind": "number", + "nativeSrc": "4983:2:55", + "nodeType": "YulLiteral", + "src": "4983:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4971:3:55", + "nodeType": "YulIdentifier", + "src": "4971:3:55" + }, + "nativeSrc": "4971:15:55", + "nodeType": "YulFunctionCall", + "src": "4971:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "4961:6:55", + "nodeType": "YulTypedName", + "src": "4961:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:10:55", + "nodeType": "YulVariableDeclaration", + "src": "4995:10:55", + "value": { + "kind": "number", + "nativeSrc": "5004:1:55", + "nodeType": "YulLiteral", + "src": "5004:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4999:1:55", + "nodeType": "YulTypedName", + "src": "4999:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5063:120:55", + "nodeType": "YulBlock", + "src": "5063:120:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5084:3:55", + "nodeType": "YulIdentifier", + "src": "5084:3:55" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5095:6:55", + "nodeType": "YulIdentifier", + "src": "5095:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5089:5:55", + "nodeType": "YulIdentifier", + "src": "5089:5:55" + }, + "nativeSrc": "5089:13:55", + "nodeType": "YulFunctionCall", + "src": "5089:13:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5077:6:55", + "nodeType": "YulIdentifier", + "src": "5077:6:55" + }, + "nativeSrc": "5077:26:55", + "nodeType": "YulFunctionCall", + "src": "5077:26:55" + }, + "nativeSrc": "5077:26:55", + "nodeType": "YulExpressionStatement", + "src": "5077:26:55" + }, + { + "nativeSrc": "5116:19:55", + "nodeType": "YulAssignment", + "src": "5116:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5127:3:55", + "nodeType": "YulIdentifier", + "src": "5127:3:55" + }, + { + "name": "_1", + "nativeSrc": "5132:2:55", + "nodeType": "YulIdentifier", + "src": "5132:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5123:3:55", + "nodeType": "YulIdentifier", + "src": "5123:3:55" + }, + "nativeSrc": "5123:12:55", + "nodeType": "YulFunctionCall", + "src": "5123:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "5116:3:55", + "nodeType": "YulIdentifier", + "src": "5116:3:55" + } + ] + }, + { + "nativeSrc": "5148:25:55", + "nodeType": "YulAssignment", + "src": "5148:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5162:6:55", + "nodeType": "YulIdentifier", + "src": "5162:6:55" + }, + { + "name": "_1", + "nativeSrc": "5170:2:55", + "nodeType": "YulIdentifier", + "src": "5170:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5158:3:55", + "nodeType": "YulIdentifier", + "src": "5158:3:55" + }, + "nativeSrc": "5158:15:55", + "nodeType": "YulFunctionCall", + "src": "5158:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "5148:6:55", + "nodeType": "YulIdentifier", + "src": "5148:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5025:1:55", + "nodeType": "YulIdentifier", + "src": "5025:1:55" + }, + { + "name": "length", + "nativeSrc": "5028:6:55", + "nodeType": "YulIdentifier", + "src": "5028:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5022:2:55", + "nodeType": "YulIdentifier", + "src": "5022:2:55" + }, + "nativeSrc": "5022:13:55", + "nodeType": "YulFunctionCall", + "src": "5022:13:55" + }, + "nativeSrc": "5014:169:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5036:18:55", + "nodeType": "YulBlock", + "src": "5036:18:55", + "statements": [ + { + "nativeSrc": "5038:14:55", + "nodeType": "YulAssignment", + "src": "5038:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5047:1:55", + "nodeType": "YulIdentifier", + "src": "5047:1:55" + }, + { + "kind": "number", + "nativeSrc": "5050:1:55", + "nodeType": "YulLiteral", + "src": "5050:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5043:3:55", + "nodeType": "YulIdentifier", + "src": "5043:3:55" + }, + "nativeSrc": "5043:9:55", + "nodeType": "YulFunctionCall", + "src": "5043:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5038:1:55", + "nodeType": "YulIdentifier", + "src": "5038:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5018:3:55", + "nodeType": "YulBlock", + "src": "5018:3:55", + "statements": [] + }, + "src": "5014:169:55" + }, + { + "nativeSrc": "5192:11:55", + "nodeType": "YulAssignment", + "src": "5192:11:55", + "value": { + "name": "pos", + "nativeSrc": "5200:3:55", + "nodeType": "YulIdentifier", + "src": "5200:3:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5192:4:55", + "nodeType": "YulIdentifier", + "src": "5192:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "4577:632:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4697:9:55", + "nodeType": "YulTypedName", + "src": "4697:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4708:6:55", + "nodeType": "YulTypedName", + "src": "4708:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4719:4:55", + "nodeType": "YulTypedName", + "src": "4719:4:55", + "type": "" + } + ], + "src": "4577:632:55" + }, + { + "body": { + "nativeSrc": "5301:161:55", + "nodeType": "YulBlock", + "src": "5301:161:55", + "statements": [ + { + "body": { + "nativeSrc": "5347:16:55", + "nodeType": "YulBlock", + "src": "5347:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5356:1:55", + "nodeType": "YulLiteral", + "src": "5356:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5359:1:55", + "nodeType": "YulLiteral", + "src": "5359:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5349:6:55", + "nodeType": "YulIdentifier", + "src": "5349:6:55" + }, + "nativeSrc": "5349:12:55", + "nodeType": "YulFunctionCall", + "src": "5349:12:55" + }, + "nativeSrc": "5349:12:55", + "nodeType": "YulExpressionStatement", + "src": "5349:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5322:7:55", + "nodeType": "YulIdentifier", + "src": "5322:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5331:9:55", + "nodeType": "YulIdentifier", + "src": "5331:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5318:3:55", + "nodeType": "YulIdentifier", + "src": "5318:3:55" + }, + "nativeSrc": "5318:23:55", + "nodeType": "YulFunctionCall", + "src": "5318:23:55" + }, + { + "kind": "number", + "nativeSrc": "5343:2:55", + "nodeType": "YulLiteral", + "src": "5343:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5314:3:55", + "nodeType": "YulIdentifier", + "src": "5314:3:55" + }, + "nativeSrc": "5314:32:55", + "nodeType": "YulFunctionCall", + "src": "5314:32:55" + }, + "nativeSrc": "5311:52:55", + "nodeType": "YulIf", + "src": "5311:52:55" + }, + { + "nativeSrc": "5372:33:55", + "nodeType": "YulAssignment", + "src": "5372:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5395:9:55", + "nodeType": "YulIdentifier", + "src": "5395:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5382:12:55", + "nodeType": "YulIdentifier", + "src": "5382:12:55" + }, + "nativeSrc": "5382:23:55", + "nodeType": "YulFunctionCall", + "src": "5382:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5372:6:55", + "nodeType": "YulIdentifier", + "src": "5372:6:55" + } + ] + }, + { + "nativeSrc": "5414:42:55", + "nodeType": "YulAssignment", + "src": "5414:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5441:9:55", + "nodeType": "YulIdentifier", + "src": "5441:9:55" + }, + { + "kind": "number", + "nativeSrc": "5452:2:55", + "nodeType": "YulLiteral", + "src": "5452:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5437:3:55", + "nodeType": "YulIdentifier", + "src": "5437:3:55" + }, + "nativeSrc": "5437:18:55", + "nodeType": "YulFunctionCall", + "src": "5437:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5424:12:55", + "nodeType": "YulIdentifier", + "src": "5424:12:55" + }, + "nativeSrc": "5424:32:55", + "nodeType": "YulFunctionCall", + "src": "5424:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5414:6:55", + "nodeType": "YulIdentifier", + "src": "5414:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "5214:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5259:9:55", + "nodeType": "YulTypedName", + "src": "5259:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5270:7:55", + "nodeType": "YulTypedName", + "src": "5270:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5282:6:55", + "nodeType": "YulTypedName", + "src": "5282:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5290:6:55", + "nodeType": "YulTypedName", + "src": "5290:6:55", + "type": "" + } + ], + "src": "5214:248:55" + }, + { + "body": { + "nativeSrc": "5622:398:55", + "nodeType": "YulBlock", + "src": "5622:398:55", + "statements": [ + { + "body": { + "nativeSrc": "5669:16:55", + "nodeType": "YulBlock", + "src": "5669:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5678:1:55", + "nodeType": "YulLiteral", + "src": "5678:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5681:1:55", + "nodeType": "YulLiteral", + "src": "5681:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5671:6:55", + "nodeType": "YulIdentifier", + "src": "5671:6:55" + }, + "nativeSrc": "5671:12:55", + "nodeType": "YulFunctionCall", + "src": "5671:12:55" + }, + "nativeSrc": "5671:12:55", + "nodeType": "YulExpressionStatement", + "src": "5671:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5643:7:55", + "nodeType": "YulIdentifier", + "src": "5643:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5652:9:55", + "nodeType": "YulIdentifier", + "src": "5652:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5639:3:55", + "nodeType": "YulIdentifier", + "src": "5639:3:55" + }, + "nativeSrc": "5639:23:55", + "nodeType": "YulFunctionCall", + "src": "5639:23:55" + }, + { + "kind": "number", + "nativeSrc": "5664:3:55", + "nodeType": "YulLiteral", + "src": "5664:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5635:3:55", + "nodeType": "YulIdentifier", + "src": "5635:3:55" + }, + "nativeSrc": "5635:33:55", + "nodeType": "YulFunctionCall", + "src": "5635:33:55" + }, + "nativeSrc": "5632:53:55", + "nodeType": "YulIf", + "src": "5632:53:55" + }, + { + "nativeSrc": "5694:39:55", + "nodeType": "YulAssignment", + "src": "5694:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5723:9:55", + "nodeType": "YulIdentifier", + "src": "5723:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5704:18:55", + "nodeType": "YulIdentifier", + "src": "5704:18:55" + }, + "nativeSrc": "5704:29:55", + "nodeType": "YulFunctionCall", + "src": "5704:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5694:6:55", + "nodeType": "YulIdentifier", + "src": "5694:6:55" + } + ] + }, + { + "nativeSrc": "5742:48:55", + "nodeType": "YulAssignment", + "src": "5742:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5775:9:55", + "nodeType": "YulIdentifier", + "src": "5775:9:55" + }, + { + "kind": "number", + "nativeSrc": "5786:2:55", + "nodeType": "YulLiteral", + "src": "5786:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5771:3:55", + "nodeType": "YulIdentifier", + "src": "5771:3:55" + }, + "nativeSrc": "5771:18:55", + "nodeType": "YulFunctionCall", + "src": "5771:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5752:18:55", + "nodeType": "YulIdentifier", + "src": "5752:18:55" + }, + "nativeSrc": "5752:38:55", + "nodeType": "YulFunctionCall", + "src": "5752:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5742:6:55", + "nodeType": "YulIdentifier", + "src": "5742:6:55" + } + ] + }, + { + "nativeSrc": "5799:48:55", + "nodeType": "YulAssignment", + "src": "5799:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5832:9:55", + "nodeType": "YulIdentifier", + "src": "5832:9:55" + }, + { + "kind": "number", + "nativeSrc": "5843:2:55", + "nodeType": "YulLiteral", + "src": "5843:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5828:3:55", + "nodeType": "YulIdentifier", + "src": "5828:3:55" + }, + "nativeSrc": "5828:18:55", + "nodeType": "YulFunctionCall", + "src": "5828:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5809:18:55", + "nodeType": "YulIdentifier", + "src": "5809:18:55" + }, + "nativeSrc": "5809:38:55", + "nodeType": "YulFunctionCall", + "src": "5809:38:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5799:6:55", + "nodeType": "YulIdentifier", + "src": "5799:6:55" + } + ] + }, + { + "nativeSrc": "5856:48:55", + "nodeType": "YulAssignment", + "src": "5856:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5889:9:55", + "nodeType": "YulIdentifier", + "src": "5889:9:55" + }, + { + "kind": "number", + "nativeSrc": "5900:2:55", + "nodeType": "YulLiteral", + "src": "5900:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5885:3:55", + "nodeType": "YulIdentifier", + "src": "5885:3:55" + }, + "nativeSrc": "5885:18:55", + "nodeType": "YulFunctionCall", + "src": "5885:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5866:18:55", + "nodeType": "YulIdentifier", + "src": "5866:18:55" + }, + "nativeSrc": "5866:38:55", + "nodeType": "YulFunctionCall", + "src": "5866:38:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "5856:6:55", + "nodeType": "YulIdentifier", + "src": "5856:6:55" + } + ] + }, + { + "nativeSrc": "5913:49:55", + "nodeType": "YulAssignment", + "src": "5913:49:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5946:9:55", + "nodeType": "YulIdentifier", + "src": "5946:9:55" + }, + { + "kind": "number", + "nativeSrc": "5957:3:55", + "nodeType": "YulLiteral", + "src": "5957:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5942:3:55", + "nodeType": "YulIdentifier", + "src": "5942:3:55" + }, + "nativeSrc": "5942:19:55", + "nodeType": "YulFunctionCall", + "src": "5942:19:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5923:18:55", + "nodeType": "YulIdentifier", + "src": "5923:18:55" + }, + "nativeSrc": "5923:39:55", + "nodeType": "YulFunctionCall", + "src": "5923:39:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "5913:6:55", + "nodeType": "YulIdentifier", + "src": "5913:6:55" + } + ] + }, + { + "nativeSrc": "5971:43:55", + "nodeType": "YulAssignment", + "src": "5971:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5998:9:55", + "nodeType": "YulIdentifier", + "src": "5998:9:55" + }, + { + "kind": "number", + "nativeSrc": "6009:3:55", + "nodeType": "YulLiteral", + "src": "6009:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5994:3:55", + "nodeType": "YulIdentifier", + "src": "5994:3:55" + }, + "nativeSrc": "5994:19:55", + "nodeType": "YulFunctionCall", + "src": "5994:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5981:12:55", + "nodeType": "YulIdentifier", + "src": "5981:12:55" + }, + "nativeSrc": "5981:33:55", + "nodeType": "YulFunctionCall", + "src": "5981:33:55" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "5971:6:55", + "nodeType": "YulIdentifier", + "src": "5971:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256", + "nativeSrc": "5467:553:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5548:9:55", + "nodeType": "YulTypedName", + "src": "5548:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5559:7:55", + "nodeType": "YulTypedName", + "src": "5559:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5571:6:55", + "nodeType": "YulTypedName", + "src": "5571:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5579:6:55", + "nodeType": "YulTypedName", + "src": "5579:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5587:6:55", + "nodeType": "YulTypedName", + "src": "5587:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5595:6:55", + "nodeType": "YulTypedName", + "src": "5595:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5603:6:55", + "nodeType": "YulTypedName", + "src": "5603:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "5611:6:55", + "nodeType": "YulTypedName", + "src": "5611:6:55", + "type": "" + } + ], + "src": "5467:553:55" + }, + { + "body": { + "nativeSrc": "6196:632:55", + "nodeType": "YulBlock", + "src": "6196:632:55", + "statements": [ + { + "nativeSrc": "6206:12:55", + "nodeType": "YulVariableDeclaration", + "src": "6206:12:55", + "value": { + "kind": "number", + "nativeSrc": "6216:2:55", + "nodeType": "YulLiteral", + "src": "6216:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6210:2:55", + "nodeType": "YulTypedName", + "src": "6210:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6227:32:55", + "nodeType": "YulVariableDeclaration", + "src": "6227:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6245:9:55", + "nodeType": "YulIdentifier", + "src": "6245:9:55" + }, + { + "kind": "number", + "nativeSrc": "6256:2:55", + "nodeType": "YulLiteral", + "src": "6256:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6241:3:55", + "nodeType": "YulIdentifier", + "src": "6241:3:55" + }, + "nativeSrc": "6241:18:55", + "nodeType": "YulFunctionCall", + "src": "6241:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6231:6:55", + "nodeType": "YulTypedName", + "src": "6231:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6275:9:55", + "nodeType": "YulIdentifier", + "src": "6275:9:55" + }, + { + "kind": "number", + "nativeSrc": "6286:2:55", + "nodeType": "YulLiteral", + "src": "6286:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6268:6:55", + "nodeType": "YulIdentifier", + "src": "6268:6:55" + }, + "nativeSrc": "6268:21:55", + "nodeType": "YulFunctionCall", + "src": "6268:21:55" + }, + "nativeSrc": "6268:21:55", + "nodeType": "YulExpressionStatement", + "src": "6268:21:55" + }, + { + "nativeSrc": "6298:17:55", + "nodeType": "YulVariableDeclaration", + "src": "6298:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "6309:6:55", + "nodeType": "YulIdentifier", + "src": "6309:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6302:3:55", + "nodeType": "YulTypedName", + "src": "6302:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6324:27:55", + "nodeType": "YulVariableDeclaration", + "src": "6324:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6344:6:55", + "nodeType": "YulIdentifier", + "src": "6344:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6338:5:55", + "nodeType": "YulIdentifier", + "src": "6338:5:55" + }, + "nativeSrc": "6338:13:55", + "nodeType": "YulFunctionCall", + "src": "6338:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6328:6:55", + "nodeType": "YulTypedName", + "src": "6328:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "6367:6:55", + "nodeType": "YulIdentifier", + "src": "6367:6:55" + }, + { + "name": "length", + "nativeSrc": "6375:6:55", + "nodeType": "YulIdentifier", + "src": "6375:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6360:6:55", + "nodeType": "YulIdentifier", + "src": "6360:6:55" + }, + "nativeSrc": "6360:22:55", + "nodeType": "YulFunctionCall", + "src": "6360:22:55" + }, + "nativeSrc": "6360:22:55", + "nodeType": "YulExpressionStatement", + "src": "6360:22:55" + }, + { + "nativeSrc": "6391:25:55", + "nodeType": "YulAssignment", + "src": "6391:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6402:9:55", + "nodeType": "YulIdentifier", + "src": "6402:9:55" + }, + { + "kind": "number", + "nativeSrc": "6413:2:55", + "nodeType": "YulLiteral", + "src": "6413:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6398:3:55", + "nodeType": "YulIdentifier", + "src": "6398:3:55" + }, + "nativeSrc": "6398:18:55", + "nodeType": "YulFunctionCall", + "src": "6398:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6391:3:55", + "nodeType": "YulIdentifier", + "src": "6391:3:55" + } + ] + }, + { + "nativeSrc": "6425:53:55", + "nodeType": "YulVariableDeclaration", + "src": "6425:53:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6447:9:55", + "nodeType": "YulIdentifier", + "src": "6447:9:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6462:1:55", + "nodeType": "YulLiteral", + "src": "6462:1:55", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "6465:6:55", + "nodeType": "YulIdentifier", + "src": "6465:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6458:3:55", + "nodeType": "YulIdentifier", + "src": "6458:3:55" + }, + "nativeSrc": "6458:14:55", + "nodeType": "YulFunctionCall", + "src": "6458:14:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6443:3:55", + "nodeType": "YulIdentifier", + "src": "6443:3:55" + }, + "nativeSrc": "6443:30:55", + "nodeType": "YulFunctionCall", + "src": "6443:30:55" + }, + { + "kind": "number", + "nativeSrc": "6475:2:55", + "nodeType": "YulLiteral", + "src": "6475:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6439:3:55", + "nodeType": "YulIdentifier", + "src": "6439:3:55" + }, + "nativeSrc": "6439:39:55", + "nodeType": "YulFunctionCall", + "src": "6439:39:55" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "6429:6:55", + "nodeType": "YulTypedName", + "src": "6429:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6487:29:55", + "nodeType": "YulVariableDeclaration", + "src": "6487:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6505:6:55", + "nodeType": "YulIdentifier", + "src": "6505:6:55" + }, + { + "kind": "number", + "nativeSrc": "6513:2:55", + "nodeType": "YulLiteral", + "src": "6513:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6501:3:55", + "nodeType": "YulIdentifier", + "src": "6501:3:55" + }, + "nativeSrc": "6501:15:55", + "nodeType": "YulFunctionCall", + "src": "6501:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "6491:6:55", + "nodeType": "YulTypedName", + "src": "6491:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6525:10:55", + "nodeType": "YulVariableDeclaration", + "src": "6525:10:55", + "value": { + "kind": "number", + "nativeSrc": "6534:1:55", + "nodeType": "YulLiteral", + "src": "6534:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "6529:1:55", + "nodeType": "YulTypedName", + "src": "6529:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6593:206:55", + "nodeType": "YulBlock", + "src": "6593:206:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6614:3:55", + "nodeType": "YulIdentifier", + "src": "6614:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "6627:6:55", + "nodeType": "YulIdentifier", + "src": "6627:6:55" + }, + { + "name": "headStart", + "nativeSrc": "6635:9:55", + "nodeType": "YulIdentifier", + "src": "6635:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6623:3:55", + "nodeType": "YulIdentifier", + "src": "6623:3:55" + }, + "nativeSrc": "6623:22:55", + "nodeType": "YulFunctionCall", + "src": "6623:22:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6651:2:55", + "nodeType": "YulLiteral", + "src": "6651:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "6647:3:55", + "nodeType": "YulIdentifier", + "src": "6647:3:55" + }, + "nativeSrc": "6647:7:55", + "nodeType": "YulFunctionCall", + "src": "6647:7:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6619:3:55", + "nodeType": "YulIdentifier", + "src": "6619:3:55" + }, + "nativeSrc": "6619:36:55", + "nodeType": "YulFunctionCall", + "src": "6619:36:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6607:6:55", + "nodeType": "YulIdentifier", + "src": "6607:6:55" + }, + "nativeSrc": "6607:49:55", + "nodeType": "YulFunctionCall", + "src": "6607:49:55" + }, + "nativeSrc": "6607:49:55", + "nodeType": "YulExpressionStatement", + "src": "6607:49:55" + }, + { + "nativeSrc": "6669:50:55", + "nodeType": "YulAssignment", + "src": "6669:50:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6703:6:55", + "nodeType": "YulIdentifier", + "src": "6703:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6697:5:55", + "nodeType": "YulIdentifier", + "src": "6697:5:55" + }, + "nativeSrc": "6697:13:55", + "nodeType": "YulFunctionCall", + "src": "6697:13:55" + }, + { + "name": "tail_2", + "nativeSrc": "6712:6:55", + "nodeType": "YulIdentifier", + "src": "6712:6:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "6679:17:55", + "nodeType": "YulIdentifier", + "src": "6679:17:55" + }, + "nativeSrc": "6679:40:55", + "nodeType": "YulFunctionCall", + "src": "6679:40:55" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "6669:6:55", + "nodeType": "YulIdentifier", + "src": "6669:6:55" + } + ] + }, + { + "nativeSrc": "6732:25:55", + "nodeType": "YulAssignment", + "src": "6732:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6746:6:55", + "nodeType": "YulIdentifier", + "src": "6746:6:55" + }, + { + "name": "_1", + "nativeSrc": "6754:2:55", + "nodeType": "YulIdentifier", + "src": "6754:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6742:3:55", + "nodeType": "YulIdentifier", + "src": "6742:3:55" + }, + "nativeSrc": "6742:15:55", + "nodeType": "YulFunctionCall", + "src": "6742:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "6732:6:55", + "nodeType": "YulIdentifier", + "src": "6732:6:55" + } + ] + }, + { + "nativeSrc": "6770:19:55", + "nodeType": "YulAssignment", + "src": "6770:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6781:3:55", + "nodeType": "YulIdentifier", + "src": "6781:3:55" + }, + { + "name": "_1", + "nativeSrc": "6786:2:55", + "nodeType": "YulIdentifier", + "src": "6786:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6777:3:55", + "nodeType": "YulIdentifier", + "src": "6777:3:55" + }, + "nativeSrc": "6777:12:55", + "nodeType": "YulFunctionCall", + "src": "6777:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6770:3:55", + "nodeType": "YulIdentifier", + "src": "6770:3:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6555:1:55", + "nodeType": "YulIdentifier", + "src": "6555:1:55" + }, + { + "name": "length", + "nativeSrc": "6558:6:55", + "nodeType": "YulIdentifier", + "src": "6558:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6552:2:55", + "nodeType": "YulIdentifier", + "src": "6552:2:55" + }, + "nativeSrc": "6552:13:55", + "nodeType": "YulFunctionCall", + "src": "6552:13:55" + }, + "nativeSrc": "6544:255:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6566:18:55", + "nodeType": "YulBlock", + "src": "6566:18:55", + "statements": [ + { + "nativeSrc": "6568:14:55", + "nodeType": "YulAssignment", + "src": "6568:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6577:1:55", + "nodeType": "YulIdentifier", + "src": "6577:1:55" + }, + { + "kind": "number", + "nativeSrc": "6580:1:55", + "nodeType": "YulLiteral", + "src": "6580:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6573:3:55", + "nodeType": "YulIdentifier", + "src": "6573:3:55" + }, + "nativeSrc": "6573:9:55", + "nodeType": "YulFunctionCall", + "src": "6573:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "6568:1:55", + "nodeType": "YulIdentifier", + "src": "6568:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6548:3:55", + "nodeType": "YulBlock", + "src": "6548:3:55", + "statements": [] + }, + "src": "6544:255:55" + }, + { + "nativeSrc": "6808:14:55", + "nodeType": "YulAssignment", + "src": "6808:14:55", + "value": { + "name": "tail_2", + "nativeSrc": "6816:6:55", + "nodeType": "YulIdentifier", + "src": "6816:6:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6808:4:55", + "nodeType": "YulIdentifier", + "src": "6808:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6025:803:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6165:9:55", + "nodeType": "YulTypedName", + "src": "6165:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6176:6:55", + "nodeType": "YulTypedName", + "src": "6176:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6187:4:55", + "nodeType": "YulTypedName", + "src": "6187:4:55", + "type": "" + } + ], + "src": "6025:803:55" + }, + { + "body": { + "nativeSrc": "6920:173:55", + "nodeType": "YulBlock", + "src": "6920:173:55", + "statements": [ + { + "body": { + "nativeSrc": "6966:16:55", + "nodeType": "YulBlock", + "src": "6966:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6975:1:55", + "nodeType": "YulLiteral", + "src": "6975:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6978:1:55", + "nodeType": "YulLiteral", + "src": "6978:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6968:6:55", + "nodeType": "YulIdentifier", + "src": "6968:6:55" + }, + "nativeSrc": "6968:12:55", + "nodeType": "YulFunctionCall", + "src": "6968:12:55" + }, + "nativeSrc": "6968:12:55", + "nodeType": "YulExpressionStatement", + "src": "6968:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6941:7:55", + "nodeType": "YulIdentifier", + "src": "6941:7:55" + }, + { + "name": "headStart", + "nativeSrc": "6950:9:55", + "nodeType": "YulIdentifier", + "src": "6950:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6937:3:55", + "nodeType": "YulIdentifier", + "src": "6937:3:55" + }, + "nativeSrc": "6937:23:55", + "nodeType": "YulFunctionCall", + "src": "6937:23:55" + }, + { + "kind": "number", + "nativeSrc": "6962:2:55", + "nodeType": "YulLiteral", + "src": "6962:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6933:3:55", + "nodeType": "YulIdentifier", + "src": "6933:3:55" + }, + "nativeSrc": "6933:32:55", + "nodeType": "YulFunctionCall", + "src": "6933:32:55" + }, + "nativeSrc": "6930:52:55", + "nodeType": "YulIf", + "src": "6930:52:55" + }, + { + "nativeSrc": "6991:39:55", + "nodeType": "YulAssignment", + "src": "6991:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7020:9:55", + "nodeType": "YulIdentifier", + "src": "7020:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7001:18:55", + "nodeType": "YulIdentifier", + "src": "7001:18:55" + }, + "nativeSrc": "7001:29:55", + "nodeType": "YulFunctionCall", + "src": "7001:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6991:6:55", + "nodeType": "YulIdentifier", + "src": "6991:6:55" + } + ] + }, + { + "nativeSrc": "7039:48:55", + "nodeType": "YulAssignment", + "src": "7039:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7072:9:55", + "nodeType": "YulIdentifier", + "src": "7072:9:55" + }, + { + "kind": "number", + "nativeSrc": "7083:2:55", + "nodeType": "YulLiteral", + "src": "7083:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7068:3:55", + "nodeType": "YulIdentifier", + "src": "7068:3:55" + }, + "nativeSrc": "7068:18:55", + "nodeType": "YulFunctionCall", + "src": "7068:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7049:18:55", + "nodeType": "YulIdentifier", + "src": "7049:18:55" + }, + "nativeSrc": "7049:38:55", + "nodeType": "YulFunctionCall", + "src": "7049:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7039:6:55", + "nodeType": "YulIdentifier", + "src": "7039:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "6833:260:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6878:9:55", + "nodeType": "YulTypedName", + "src": "6878:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6889:7:55", + "nodeType": "YulTypedName", + "src": "6889:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6901:6:55", + "nodeType": "YulTypedName", + "src": "6901:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6909:6:55", + "nodeType": "YulTypedName", + "src": "6909:6:55", + "type": "" + } + ], + "src": "6833:260:55" + }, + { + "body": { + "nativeSrc": "7237:150:55", + "nodeType": "YulBlock", + "src": "7237:150:55", + "statements": [ + { + "nativeSrc": "7247:27:55", + "nodeType": "YulVariableDeclaration", + "src": "7247:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7267:6:55", + "nodeType": "YulIdentifier", + "src": "7267:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7261:5:55", + "nodeType": "YulIdentifier", + "src": "7261:5:55" + }, + "nativeSrc": "7261:13:55", + "nodeType": "YulFunctionCall", + "src": "7261:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "7251:6:55", + "nodeType": "YulTypedName", + "src": "7251:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7322:6:55", + "nodeType": "YulIdentifier", + "src": "7322:6:55" + }, + { + "kind": "number", + "nativeSrc": "7330:4:55", + "nodeType": "YulLiteral", + "src": "7330:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7318:3:55", + "nodeType": "YulIdentifier", + "src": "7318:3:55" + }, + "nativeSrc": "7318:17:55", + "nodeType": "YulFunctionCall", + "src": "7318:17:55" + }, + { + "name": "pos", + "nativeSrc": "7337:3:55", + "nodeType": "YulIdentifier", + "src": "7337:3:55" + }, + { + "name": "length", + "nativeSrc": "7342:6:55", + "nodeType": "YulIdentifier", + "src": "7342:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "7283:34:55", + "nodeType": "YulIdentifier", + "src": "7283:34:55" + }, + "nativeSrc": "7283:66:55", + "nodeType": "YulFunctionCall", + "src": "7283:66:55" + }, + "nativeSrc": "7283:66:55", + "nodeType": "YulExpressionStatement", + "src": "7283:66:55" + }, + { + "nativeSrc": "7358:23:55", + "nodeType": "YulAssignment", + "src": "7358:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7369:3:55", + "nodeType": "YulIdentifier", + "src": "7369:3:55" + }, + { + "name": "length", + "nativeSrc": "7374:6:55", + "nodeType": "YulIdentifier", + "src": "7374:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7365:3:55", + "nodeType": "YulIdentifier", + "src": "7365:3:55" + }, + "nativeSrc": "7365:16:55", + "nodeType": "YulFunctionCall", + "src": "7365:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "7358:3:55", + "nodeType": "YulIdentifier", + "src": "7358:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "7098:289:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "7213:3:55", + "nodeType": "YulTypedName", + "src": "7213:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7218:6:55", + "nodeType": "YulTypedName", + "src": "7218:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "7229:3:55", + "nodeType": "YulTypedName", + "src": "7229:3:55", + "type": "" + } + ], + "src": "7098:289:55" + }, + { + "body": { + "nativeSrc": "7447:325:55", + "nodeType": "YulBlock", + "src": "7447:325:55", + "statements": [ + { + "nativeSrc": "7457:22:55", + "nodeType": "YulAssignment", + "src": "7457:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7471:1:55", + "nodeType": "YulLiteral", + "src": "7471:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "7474:4:55", + "nodeType": "YulIdentifier", + "src": "7474:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7467:3:55", + "nodeType": "YulIdentifier", + "src": "7467:3:55" + }, + "nativeSrc": "7467:12:55", + "nodeType": "YulFunctionCall", + "src": "7467:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "7457:6:55", + "nodeType": "YulIdentifier", + "src": "7457:6:55" + } + ] + }, + { + "nativeSrc": "7488:38:55", + "nodeType": "YulVariableDeclaration", + "src": "7488:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "7518:4:55", + "nodeType": "YulIdentifier", + "src": "7518:4:55" + }, + { + "kind": "number", + "nativeSrc": "7524:1:55", + "nodeType": "YulLiteral", + "src": "7524:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7514:3:55", + "nodeType": "YulIdentifier", + "src": "7514:3:55" + }, + "nativeSrc": "7514:12:55", + "nodeType": "YulFunctionCall", + "src": "7514:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7492:18:55", + "nodeType": "YulTypedName", + "src": "7492:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7565:31:55", + "nodeType": "YulBlock", + "src": "7565:31:55", + "statements": [ + { + "nativeSrc": "7567:27:55", + "nodeType": "YulAssignment", + "src": "7567:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "7581:6:55", + "nodeType": "YulIdentifier", + "src": "7581:6:55" + }, + { + "kind": "number", + "nativeSrc": "7589:4:55", + "nodeType": "YulLiteral", + "src": "7589:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7577:3:55", + "nodeType": "YulIdentifier", + "src": "7577:3:55" + }, + "nativeSrc": "7577:17:55", + "nodeType": "YulFunctionCall", + "src": "7577:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "7567:6:55", + "nodeType": "YulIdentifier", + "src": "7567:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7545:18:55", + "nodeType": "YulIdentifier", + "src": "7545:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7538:6:55", + "nodeType": "YulIdentifier", + "src": "7538:6:55" + }, + "nativeSrc": "7538:26:55", + "nodeType": "YulFunctionCall", + "src": "7538:26:55" + }, + "nativeSrc": "7535:61:55", + "nodeType": "YulIf", + "src": "7535:61:55" + }, + { + "body": { + "nativeSrc": "7655:111:55", + "nodeType": "YulBlock", + "src": "7655:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7676:1:55", + "nodeType": "YulLiteral", + "src": "7676:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7683:3:55", + "nodeType": "YulLiteral", + "src": "7683:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "7688:10:55", + "nodeType": "YulLiteral", + "src": "7688:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7679:3:55", + "nodeType": "YulIdentifier", + "src": "7679:3:55" + }, + "nativeSrc": "7679:20:55", + "nodeType": "YulFunctionCall", + "src": "7679:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7669:6:55", + "nodeType": "YulIdentifier", + "src": "7669:6:55" + }, + "nativeSrc": "7669:31:55", + "nodeType": "YulFunctionCall", + "src": "7669:31:55" + }, + "nativeSrc": "7669:31:55", + "nodeType": "YulExpressionStatement", + "src": "7669:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7720:1:55", + "nodeType": "YulLiteral", + "src": "7720:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "7723:4:55", + "nodeType": "YulLiteral", + "src": "7723:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7713:6:55", + "nodeType": "YulIdentifier", + "src": "7713:6:55" + }, + "nativeSrc": "7713:15:55", + "nodeType": "YulFunctionCall", + "src": "7713:15:55" + }, + "nativeSrc": "7713:15:55", + "nodeType": "YulExpressionStatement", + "src": "7713:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7748:1:55", + "nodeType": "YulLiteral", + "src": "7748:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7751:4:55", + "nodeType": "YulLiteral", + "src": "7751:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7741:6:55", + "nodeType": "YulIdentifier", + "src": "7741:6:55" + }, + "nativeSrc": "7741:15:55", + "nodeType": "YulFunctionCall", + "src": "7741:15:55" + }, + "nativeSrc": "7741:15:55", + "nodeType": "YulExpressionStatement", + "src": "7741:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7611:18:55", + "nodeType": "YulIdentifier", + "src": "7611:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "7634:6:55", + "nodeType": "YulIdentifier", + "src": "7634:6:55" + }, + { + "kind": "number", + "nativeSrc": "7642:2:55", + "nodeType": "YulLiteral", + "src": "7642:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7631:2:55", + "nodeType": "YulIdentifier", + "src": "7631:2:55" + }, + "nativeSrc": "7631:14:55", + "nodeType": "YulFunctionCall", + "src": "7631:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "7608:2:55", + "nodeType": "YulIdentifier", + "src": "7608:2:55" + }, + "nativeSrc": "7608:38:55", + "nodeType": "YulFunctionCall", + "src": "7608:38:55" + }, + "nativeSrc": "7605:161:55", + "nodeType": "YulIf", + "src": "7605:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "7392:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "7427:4:55", + "nodeType": "YulTypedName", + "src": "7427:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "7436:6:55", + "nodeType": "YulTypedName", + "src": "7436:6:55", + "type": "" + } + ], + "src": "7392:380:55" + }, + { + "body": { + "nativeSrc": "7885:101:55", + "nodeType": "YulBlock", + "src": "7885:101:55", + "statements": [ + { + "nativeSrc": "7895:26:55", + "nodeType": "YulAssignment", + "src": "7895:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7907:9:55", + "nodeType": "YulIdentifier", + "src": "7907:9:55" + }, + { + "kind": "number", + "nativeSrc": "7918:2:55", + "nodeType": "YulLiteral", + "src": "7918:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7903:3:55", + "nodeType": "YulIdentifier", + "src": "7903:3:55" + }, + "nativeSrc": "7903:18:55", + "nodeType": "YulFunctionCall", + "src": "7903:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7895:4:55", + "nodeType": "YulIdentifier", + "src": "7895:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7937:9:55", + "nodeType": "YulIdentifier", + "src": "7937:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7952:6:55", + "nodeType": "YulIdentifier", + "src": "7952:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7968:2:55", + "nodeType": "YulLiteral", + "src": "7968:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "7972:1:55", + "nodeType": "YulLiteral", + "src": "7972:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7964:3:55", + "nodeType": "YulIdentifier", + "src": "7964:3:55" + }, + "nativeSrc": "7964:10:55", + "nodeType": "YulFunctionCall", + "src": "7964:10:55" + }, + { + "kind": "number", + "nativeSrc": "7976:1:55", + "nodeType": "YulLiteral", + "src": "7976:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7960:3:55", + "nodeType": "YulIdentifier", + "src": "7960:3:55" + }, + "nativeSrc": "7960:18:55", + "nodeType": "YulFunctionCall", + "src": "7960:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7948:3:55", + "nodeType": "YulIdentifier", + "src": "7948:3:55" + }, + "nativeSrc": "7948:31:55", + "nodeType": "YulFunctionCall", + "src": "7948:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7930:6:55", + "nodeType": "YulIdentifier", + "src": "7930:6:55" + }, + "nativeSrc": "7930:50:55", + "nodeType": "YulFunctionCall", + "src": "7930:50:55" + }, + "nativeSrc": "7930:50:55", + "nodeType": "YulExpressionStatement", + "src": "7930:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "7777:209:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7854:9:55", + "nodeType": "YulTypedName", + "src": "7854:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7865:6:55", + "nodeType": "YulTypedName", + "src": "7865:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "7876:4:55", + "nodeType": "YulTypedName", + "src": "7876:4:55", + "type": "" + } + ], + "src": "7777:209:55" + }, + { + "body": { + "nativeSrc": "8023:95:55", + "nodeType": "YulBlock", + "src": "8023:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8040:1:55", + "nodeType": "YulLiteral", + "src": "8040:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8047:3:55", + "nodeType": "YulLiteral", + "src": "8047:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8052:10:55", + "nodeType": "YulLiteral", + "src": "8052:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8043:3:55", + "nodeType": "YulIdentifier", + "src": "8043:3:55" + }, + "nativeSrc": "8043:20:55", + "nodeType": "YulFunctionCall", + "src": "8043:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8033:6:55", + "nodeType": "YulIdentifier", + "src": "8033:6:55" + }, + "nativeSrc": "8033:31:55", + "nodeType": "YulFunctionCall", + "src": "8033:31:55" + }, + "nativeSrc": "8033:31:55", + "nodeType": "YulExpressionStatement", + "src": "8033:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8080:1:55", + "nodeType": "YulLiteral", + "src": "8080:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8083:4:55", + "nodeType": "YulLiteral", + "src": "8083:4:55", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8073:6:55", + "nodeType": "YulIdentifier", + "src": "8073:6:55" + }, + "nativeSrc": "8073:15:55", + "nodeType": "YulFunctionCall", + "src": "8073:15:55" + }, + "nativeSrc": "8073:15:55", + "nodeType": "YulExpressionStatement", + "src": "8073:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8104:1:55", + "nodeType": "YulLiteral", + "src": "8104:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8107:4:55", + "nodeType": "YulLiteral", + "src": "8107:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8097:6:55", + "nodeType": "YulIdentifier", + "src": "8097:6:55" + }, + "nativeSrc": "8097:15:55", + "nodeType": "YulFunctionCall", + "src": "8097:15:55" + }, + "nativeSrc": "8097:15:55", + "nodeType": "YulExpressionStatement", + "src": "8097:15:55" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "7991:127:55", + "nodeType": "YulFunctionDefinition", + "src": "7991:127:55" + }, + { + "body": { + "nativeSrc": "8179:65:55", + "nodeType": "YulBlock", + "src": "8179:65:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8196:1:55", + "nodeType": "YulLiteral", + "src": "8196:1:55", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "8199:3:55", + "nodeType": "YulIdentifier", + "src": "8199:3:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8189:6:55", + "nodeType": "YulIdentifier", + "src": "8189:6:55" + }, + "nativeSrc": "8189:14:55", + "nodeType": "YulFunctionCall", + "src": "8189:14:55" + }, + "nativeSrc": "8189:14:55", + "nodeType": "YulExpressionStatement", + "src": "8189:14:55" + }, + { + "nativeSrc": "8212:26:55", + "nodeType": "YulAssignment", + "src": "8212:26:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8230:1:55", + "nodeType": "YulLiteral", + "src": "8230:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8233:4:55", + "nodeType": "YulLiteral", + "src": "8233:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8220:9:55", + "nodeType": "YulIdentifier", + "src": "8220:9:55" + }, + "nativeSrc": "8220:18:55", + "nodeType": "YulFunctionCall", + "src": "8220:18:55" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "8212:4:55", + "nodeType": "YulIdentifier", + "src": "8212:4:55" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "8123:121:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "8162:3:55", + "nodeType": "YulTypedName", + "src": "8162:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "8170:4:55", + "nodeType": "YulTypedName", + "src": "8170:4:55", + "type": "" + } + ], + "src": "8123:121:55" + }, + { + "body": { + "nativeSrc": "8330:462:55", + "nodeType": "YulBlock", + "src": "8330:462:55", + "statements": [ + { + "body": { + "nativeSrc": "8363:423:55", + "nodeType": "YulBlock", + "src": "8363:423:55", + "statements": [ + { + "nativeSrc": "8377:11:55", + "nodeType": "YulVariableDeclaration", + "src": "8377:11:55", + "value": { + "kind": "number", + "nativeSrc": "8387:1:55", + "nodeType": "YulLiteral", + "src": "8387:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "8381:2:55", + "nodeType": "YulTypedName", + "src": "8381:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8408:1:55", + "nodeType": "YulLiteral", + "src": "8408:1:55", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "8411:5:55", + "nodeType": "YulIdentifier", + "src": "8411:5:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8401:6:55", + "nodeType": "YulIdentifier", + "src": "8401:6:55" + }, + "nativeSrc": "8401:16:55", + "nodeType": "YulFunctionCall", + "src": "8401:16:55" + }, + "nativeSrc": "8401:16:55", + "nodeType": "YulExpressionStatement", + "src": "8401:16:55" + }, + { + "nativeSrc": "8430:30:55", + "nodeType": "YulVariableDeclaration", + "src": "8430:30:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8452:1:55", + "nodeType": "YulLiteral", + "src": "8452:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8455:4:55", + "nodeType": "YulLiteral", + "src": "8455:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8442:9:55", + "nodeType": "YulIdentifier", + "src": "8442:9:55" + }, + "nativeSrc": "8442:18:55", + "nodeType": "YulFunctionCall", + "src": "8442:18:55" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "8434:4:55", + "nodeType": "YulTypedName", + "src": "8434:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "8473:57:55", + "nodeType": "YulVariableDeclaration", + "src": "8473:57:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8496:4:55", + "nodeType": "YulIdentifier", + "src": "8496:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8506:1:55", + "nodeType": "YulLiteral", + "src": "8506:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "8513:10:55", + "nodeType": "YulIdentifier", + "src": "8513:10:55" + }, + { + "kind": "number", + "nativeSrc": "8525:2:55", + "nodeType": "YulLiteral", + "src": "8525:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8509:3:55", + "nodeType": "YulIdentifier", + "src": "8509:3:55" + }, + "nativeSrc": "8509:19:55", + "nodeType": "YulFunctionCall", + "src": "8509:19:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8502:3:55", + "nodeType": "YulIdentifier", + "src": "8502:3:55" + }, + "nativeSrc": "8502:27:55", + "nodeType": "YulFunctionCall", + "src": "8502:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8492:3:55", + "nodeType": "YulIdentifier", + "src": "8492:3:55" + }, + "nativeSrc": "8492:38:55", + "nodeType": "YulFunctionCall", + "src": "8492:38:55" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "8477:11:55", + "nodeType": "YulTypedName", + "src": "8477:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8567:23:55", + "nodeType": "YulBlock", + "src": "8567:23:55", + "statements": [ + { + "nativeSrc": "8569:19:55", + "nodeType": "YulAssignment", + "src": "8569:19:55", + "value": { + "name": "data", + "nativeSrc": "8584:4:55", + "nodeType": "YulIdentifier", + "src": "8584:4:55" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "8569:11:55", + "nodeType": "YulIdentifier", + "src": "8569:11:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "8549:10:55", + "nodeType": "YulIdentifier", + "src": "8549:10:55" + }, + { + "kind": "number", + "nativeSrc": "8561:4:55", + "nodeType": "YulLiteral", + "src": "8561:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8546:2:55", + "nodeType": "YulIdentifier", + "src": "8546:2:55" + }, + "nativeSrc": "8546:20:55", + "nodeType": "YulFunctionCall", + "src": "8546:20:55" + }, + "nativeSrc": "8543:47:55", + "nodeType": "YulIf", + "src": "8543:47:55" + }, + { + "nativeSrc": "8603:41:55", + "nodeType": "YulVariableDeclaration", + "src": "8603:41:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8617:4:55", + "nodeType": "YulIdentifier", + "src": "8617:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8627:1:55", + "nodeType": "YulLiteral", + "src": "8627:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "8634:3:55", + "nodeType": "YulIdentifier", + "src": "8634:3:55" + }, + { + "kind": "number", + "nativeSrc": "8639:2:55", + "nodeType": "YulLiteral", + "src": "8639:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8630:3:55", + "nodeType": "YulIdentifier", + "src": "8630:3:55" + }, + "nativeSrc": "8630:12:55", + "nodeType": "YulFunctionCall", + "src": "8630:12:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8623:3:55", + "nodeType": "YulIdentifier", + "src": "8623:3:55" + }, + "nativeSrc": "8623:20:55", + "nodeType": "YulFunctionCall", + "src": "8623:20:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8613:3:55", + "nodeType": "YulIdentifier", + "src": "8613:3:55" + }, + "nativeSrc": "8613:31:55", + "nodeType": "YulFunctionCall", + "src": "8613:31:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "8607:2:55", + "nodeType": "YulTypedName", + "src": "8607:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "8657:24:55", + "nodeType": "YulVariableDeclaration", + "src": "8657:24:55", + "value": { + "name": "deleteStart", + "nativeSrc": "8670:11:55", + "nodeType": "YulIdentifier", + "src": "8670:11:55" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "8661:5:55", + "nodeType": "YulTypedName", + "src": "8661:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8755:21:55", + "nodeType": "YulBlock", + "src": "8755:21:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8764:5:55", + "nodeType": "YulIdentifier", + "src": "8764:5:55" + }, + { + "name": "_1", + "nativeSrc": "8771:2:55", + "nodeType": "YulIdentifier", + "src": "8771:2:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "8757:6:55", + "nodeType": "YulIdentifier", + "src": "8757:6:55" + }, + "nativeSrc": "8757:17:55", + "nodeType": "YulFunctionCall", + "src": "8757:17:55" + }, + "nativeSrc": "8757:17:55", + "nodeType": "YulExpressionStatement", + "src": "8757:17:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8705:5:55", + "nodeType": "YulIdentifier", + "src": "8705:5:55" + }, + { + "name": "_2", + "nativeSrc": "8712:2:55", + "nodeType": "YulIdentifier", + "src": "8712:2:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8702:2:55", + "nodeType": "YulIdentifier", + "src": "8702:2:55" + }, + "nativeSrc": "8702:13:55", + "nodeType": "YulFunctionCall", + "src": "8702:13:55" + }, + "nativeSrc": "8694:82:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8716:26:55", + "nodeType": "YulBlock", + "src": "8716:26:55", + "statements": [ + { + "nativeSrc": "8718:22:55", + "nodeType": "YulAssignment", + "src": "8718:22:55", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8731:5:55", + "nodeType": "YulIdentifier", + "src": "8731:5:55" + }, + { + "kind": "number", + "nativeSrc": "8738:1:55", + "nodeType": "YulLiteral", + "src": "8738:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8727:3:55", + "nodeType": "YulIdentifier", + "src": "8727:3:55" + }, + "nativeSrc": "8727:13:55", + "nodeType": "YulFunctionCall", + "src": "8727:13:55" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "8718:5:55", + "nodeType": "YulIdentifier", + "src": "8718:5:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "8698:3:55", + "nodeType": "YulBlock", + "src": "8698:3:55", + "statements": [] + }, + "src": "8694:82:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "8346:3:55", + "nodeType": "YulIdentifier", + "src": "8346:3:55" + }, + { + "kind": "number", + "nativeSrc": "8351:2:55", + "nodeType": "YulLiteral", + "src": "8351:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8343:2:55", + "nodeType": "YulIdentifier", + "src": "8343:2:55" + }, + "nativeSrc": "8343:11:55", + "nodeType": "YulFunctionCall", + "src": "8343:11:55" + }, + "nativeSrc": "8340:446:55", + "nodeType": "YulIf", + "src": "8340:446:55" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "8249:543:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "8302:5:55", + "nodeType": "YulTypedName", + "src": "8302:5:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8309:3:55", + "nodeType": "YulTypedName", + "src": "8309:3:55", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "8314:10:55", + "nodeType": "YulTypedName", + "src": "8314:10:55", + "type": "" + } + ], + "src": "8249:543:55" + }, + { + "body": { + "nativeSrc": "8882:81:55", + "nodeType": "YulBlock", + "src": "8882:81:55", + "statements": [ + { + "nativeSrc": "8892:65:55", + "nodeType": "YulAssignment", + "src": "8892:65:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "8907:4:55", + "nodeType": "YulIdentifier", + "src": "8907:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8925:1:55", + "nodeType": "YulLiteral", + "src": "8925:1:55", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "8928:3:55", + "nodeType": "YulIdentifier", + "src": "8928:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8921:3:55", + "nodeType": "YulIdentifier", + "src": "8921:3:55" + }, + "nativeSrc": "8921:11:55", + "nodeType": "YulFunctionCall", + "src": "8921:11:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8938:1:55", + "nodeType": "YulLiteral", + "src": "8938:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "8934:3:55", + "nodeType": "YulIdentifier", + "src": "8934:3:55" + }, + "nativeSrc": "8934:6:55", + "nodeType": "YulFunctionCall", + "src": "8934:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8917:3:55", + "nodeType": "YulIdentifier", + "src": "8917:3:55" + }, + "nativeSrc": "8917:24:55", + "nodeType": "YulFunctionCall", + "src": "8917:24:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "8913:3:55", + "nodeType": "YulIdentifier", + "src": "8913:3:55" + }, + "nativeSrc": "8913:29:55", + "nodeType": "YulFunctionCall", + "src": "8913:29:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8903:3:55", + "nodeType": "YulIdentifier", + "src": "8903:3:55" + }, + "nativeSrc": "8903:40:55", + "nodeType": "YulFunctionCall", + "src": "8903:40:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8949:1:55", + "nodeType": "YulLiteral", + "src": "8949:1:55", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "8952:3:55", + "nodeType": "YulIdentifier", + "src": "8952:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8945:3:55", + "nodeType": "YulIdentifier", + "src": "8945:3:55" + }, + "nativeSrc": "8945:11:55", + "nodeType": "YulFunctionCall", + "src": "8945:11:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "8900:2:55", + "nodeType": "YulIdentifier", + "src": "8900:2:55" + }, + "nativeSrc": "8900:57:55", + "nodeType": "YulFunctionCall", + "src": "8900:57:55" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "8892:4:55", + "nodeType": "YulIdentifier", + "src": "8892:4:55" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "8797:166:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "8859:4:55", + "nodeType": "YulTypedName", + "src": "8859:4:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8865:3:55", + "nodeType": "YulTypedName", + "src": "8865:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "8873:4:55", + "nodeType": "YulTypedName", + "src": "8873:4:55", + "type": "" + } + ], + "src": "8797:166:55" + }, + { + "body": { + "nativeSrc": "9064:1249:55", + "nodeType": "YulBlock", + "src": "9064:1249:55", + "statements": [ + { + "nativeSrc": "9074:24:55", + "nodeType": "YulVariableDeclaration", + "src": "9074:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "9094:3:55", + "nodeType": "YulIdentifier", + "src": "9094:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9088:5:55", + "nodeType": "YulIdentifier", + "src": "9088:5:55" + }, + "nativeSrc": "9088:10:55", + "nodeType": "YulFunctionCall", + "src": "9088:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "9078:6:55", + "nodeType": "YulTypedName", + "src": "9078:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9141:22:55", + "nodeType": "YulBlock", + "src": "9141:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "9143:16:55", + "nodeType": "YulIdentifier", + "src": "9143:16:55" + }, + "nativeSrc": "9143:18:55", + "nodeType": "YulFunctionCall", + "src": "9143:18:55" + }, + "nativeSrc": "9143:18:55", + "nodeType": "YulExpressionStatement", + "src": "9143:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9113:6:55", + "nodeType": "YulIdentifier", + "src": "9113:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9129:2:55", + "nodeType": "YulLiteral", + "src": "9129:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "9133:1:55", + "nodeType": "YulLiteral", + "src": "9133:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9125:3:55", + "nodeType": "YulIdentifier", + "src": "9125:3:55" + }, + "nativeSrc": "9125:10:55", + "nodeType": "YulFunctionCall", + "src": "9125:10:55" + }, + { + "kind": "number", + "nativeSrc": "9137:1:55", + "nodeType": "YulLiteral", + "src": "9137:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9121:3:55", + "nodeType": "YulIdentifier", + "src": "9121:3:55" + }, + "nativeSrc": "9121:18:55", + "nodeType": "YulFunctionCall", + "src": "9121:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9110:2:55", + "nodeType": "YulIdentifier", + "src": "9110:2:55" + }, + "nativeSrc": "9110:30:55", + "nodeType": "YulFunctionCall", + "src": "9110:30:55" + }, + "nativeSrc": "9107:56:55", + "nodeType": "YulIf", + "src": "9107:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9216:4:55", + "nodeType": "YulIdentifier", + "src": "9216:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9254:4:55", + "nodeType": "YulIdentifier", + "src": "9254:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "9248:5:55", + "nodeType": "YulIdentifier", + "src": "9248:5:55" + }, + "nativeSrc": "9248:11:55", + "nodeType": "YulFunctionCall", + "src": "9248:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "9222:25:55", + "nodeType": "YulIdentifier", + "src": "9222:25:55" + }, + "nativeSrc": "9222:38:55", + "nodeType": "YulFunctionCall", + "src": "9222:38:55" + }, + { + "name": "newLen", + "nativeSrc": "9262:6:55", + "nodeType": "YulIdentifier", + "src": "9262:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "9172:43:55", + "nodeType": "YulIdentifier", + "src": "9172:43:55" + }, + "nativeSrc": "9172:97:55", + "nodeType": "YulFunctionCall", + "src": "9172:97:55" + }, + "nativeSrc": "9172:97:55", + "nodeType": "YulExpressionStatement", + "src": "9172:97:55" + }, + { + "nativeSrc": "9278:18:55", + "nodeType": "YulVariableDeclaration", + "src": "9278:18:55", + "value": { + "kind": "number", + "nativeSrc": "9295:1:55", + "nodeType": "YulLiteral", + "src": "9295:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "9282:9:55", + "nodeType": "YulTypedName", + "src": "9282:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9305:23:55", + "nodeType": "YulVariableDeclaration", + "src": "9305:23:55", + "value": { + "kind": "number", + "nativeSrc": "9324:4:55", + "nodeType": "YulLiteral", + "src": "9324:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "9309:11:55", + "nodeType": "YulTypedName", + "src": "9309:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9337:17:55", + "nodeType": "YulAssignment", + "src": "9337:17:55", + "value": { + "kind": "number", + "nativeSrc": "9350:4:55", + "nodeType": "YulLiteral", + "src": "9350:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "9337:9:55", + "nodeType": "YulIdentifier", + "src": "9337:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "9400:656:55", + "nodeType": "YulBlock", + "src": "9400:656:55", + "statements": [ + { + "nativeSrc": "9414:35:55", + "nodeType": "YulVariableDeclaration", + "src": "9414:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9433:6:55", + "nodeType": "YulIdentifier", + "src": "9433:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9445:2:55", + "nodeType": "YulLiteral", + "src": "9445:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9441:3:55", + "nodeType": "YulIdentifier", + "src": "9441:3:55" + }, + "nativeSrc": "9441:7:55", + "nodeType": "YulFunctionCall", + "src": "9441:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9429:3:55", + "nodeType": "YulIdentifier", + "src": "9429:3:55" + }, + "nativeSrc": "9429:20:55", + "nodeType": "YulFunctionCall", + "src": "9429:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "9418:7:55", + "nodeType": "YulTypedName", + "src": "9418:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9462:49:55", + "nodeType": "YulVariableDeclaration", + "src": "9462:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9506:4:55", + "nodeType": "YulIdentifier", + "src": "9506:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "9476:29:55", + "nodeType": "YulIdentifier", + "src": "9476:29:55" + }, + "nativeSrc": "9476:35:55", + "nodeType": "YulFunctionCall", + "src": "9476:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "9466:6:55", + "nodeType": "YulTypedName", + "src": "9466:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9524:10:55", + "nodeType": "YulVariableDeclaration", + "src": "9524:10:55", + "value": { + "kind": "number", + "nativeSrc": "9533:1:55", + "nodeType": "YulLiteral", + "src": "9533:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "9528:1:55", + "nodeType": "YulTypedName", + "src": "9528:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9611:172:55", + "nodeType": "YulBlock", + "src": "9611:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9636:6:55", + "nodeType": "YulIdentifier", + "src": "9636:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "9654:3:55", + "nodeType": "YulIdentifier", + "src": "9654:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "9659:9:55", + "nodeType": "YulIdentifier", + "src": "9659:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9650:3:55", + "nodeType": "YulIdentifier", + "src": "9650:3:55" + }, + "nativeSrc": "9650:19:55", + "nodeType": "YulFunctionCall", + "src": "9650:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9644:5:55", + "nodeType": "YulIdentifier", + "src": "9644:5:55" + }, + "nativeSrc": "9644:26:55", + "nodeType": "YulFunctionCall", + "src": "9644:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9629:6:55", + "nodeType": "YulIdentifier", + "src": "9629:6:55" + }, + "nativeSrc": "9629:42:55", + "nodeType": "YulFunctionCall", + "src": "9629:42:55" + }, + "nativeSrc": "9629:42:55", + "nodeType": "YulExpressionStatement", + "src": "9629:42:55" + }, + { + "nativeSrc": "9688:24:55", + "nodeType": "YulAssignment", + "src": "9688:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9702:6:55", + "nodeType": "YulIdentifier", + "src": "9702:6:55" + }, + { + "kind": "number", + "nativeSrc": "9710:1:55", + "nodeType": "YulLiteral", + "src": "9710:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9698:3:55", + "nodeType": "YulIdentifier", + "src": "9698:3:55" + }, + "nativeSrc": "9698:14:55", + "nodeType": "YulFunctionCall", + "src": "9698:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "9688:6:55", + "nodeType": "YulIdentifier", + "src": "9688:6:55" + } + ] + }, + { + "nativeSrc": "9729:40:55", + "nodeType": "YulAssignment", + "src": "9729:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "9746:9:55", + "nodeType": "YulIdentifier", + "src": "9746:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "9757:11:55", + "nodeType": "YulIdentifier", + "src": "9757:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9742:3:55", + "nodeType": "YulIdentifier", + "src": "9742:3:55" + }, + "nativeSrc": "9742:27:55", + "nodeType": "YulFunctionCall", + "src": "9742:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "9729:9:55", + "nodeType": "YulIdentifier", + "src": "9729:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9558:1:55", + "nodeType": "YulIdentifier", + "src": "9558:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "9561:7:55", + "nodeType": "YulIdentifier", + "src": "9561:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9555:2:55", + "nodeType": "YulIdentifier", + "src": "9555:2:55" + }, + "nativeSrc": "9555:14:55", + "nodeType": "YulFunctionCall", + "src": "9555:14:55" + }, + "nativeSrc": "9547:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9570:28:55", + "nodeType": "YulBlock", + "src": "9570:28:55", + "statements": [ + { + "nativeSrc": "9572:24:55", + "nodeType": "YulAssignment", + "src": "9572:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9581:1:55", + "nodeType": "YulIdentifier", + "src": "9581:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "9584:11:55", + "nodeType": "YulIdentifier", + "src": "9584:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9577:3:55", + "nodeType": "YulIdentifier", + "src": "9577:3:55" + }, + "nativeSrc": "9577:19:55", + "nodeType": "YulFunctionCall", + "src": "9577:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "9572:1:55", + "nodeType": "YulIdentifier", + "src": "9572:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9551:3:55", + "nodeType": "YulBlock", + "src": "9551:3:55", + "statements": [] + }, + "src": "9547:236:55" + }, + { + "body": { + "nativeSrc": "9831:166:55", + "nodeType": "YulBlock", + "src": "9831:166:55", + "statements": [ + { + "nativeSrc": "9849:43:55", + "nodeType": "YulVariableDeclaration", + "src": "9849:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "9876:3:55", + "nodeType": "YulIdentifier", + "src": "9876:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "9881:9:55", + "nodeType": "YulIdentifier", + "src": "9881:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9872:3:55", + "nodeType": "YulIdentifier", + "src": "9872:3:55" + }, + "nativeSrc": "9872:19:55", + "nodeType": "YulFunctionCall", + "src": "9872:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9866:5:55", + "nodeType": "YulIdentifier", + "src": "9866:5:55" + }, + "nativeSrc": "9866:26:55", + "nodeType": "YulFunctionCall", + "src": "9866:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "9853:9:55", + "nodeType": "YulTypedName", + "src": "9853:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9916:6:55", + "nodeType": "YulIdentifier", + "src": "9916:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "9928:9:55", + "nodeType": "YulIdentifier", + "src": "9928:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9955:1:55", + "nodeType": "YulLiteral", + "src": "9955:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "9958:6:55", + "nodeType": "YulIdentifier", + "src": "9958:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9951:3:55", + "nodeType": "YulIdentifier", + "src": "9951:3:55" + }, + "nativeSrc": "9951:14:55", + "nodeType": "YulFunctionCall", + "src": "9951:14:55" + }, + { + "kind": "number", + "nativeSrc": "9967:3:55", + "nodeType": "YulLiteral", + "src": "9967:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9947:3:55", + "nodeType": "YulIdentifier", + "src": "9947:3:55" + }, + "nativeSrc": "9947:24:55", + "nodeType": "YulFunctionCall", + "src": "9947:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9977:1:55", + "nodeType": "YulLiteral", + "src": "9977:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9973:3:55", + "nodeType": "YulIdentifier", + "src": "9973:3:55" + }, + "nativeSrc": "9973:6:55", + "nodeType": "YulFunctionCall", + "src": "9973:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9943:3:55", + "nodeType": "YulIdentifier", + "src": "9943:3:55" + }, + "nativeSrc": "9943:37:55", + "nodeType": "YulFunctionCall", + "src": "9943:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9939:3:55", + "nodeType": "YulIdentifier", + "src": "9939:3:55" + }, + "nativeSrc": "9939:42:55", + "nodeType": "YulFunctionCall", + "src": "9939:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9924:3:55", + "nodeType": "YulIdentifier", + "src": "9924:3:55" + }, + "nativeSrc": "9924:58:55", + "nodeType": "YulFunctionCall", + "src": "9924:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9909:6:55", + "nodeType": "YulIdentifier", + "src": "9909:6:55" + }, + "nativeSrc": "9909:74:55", + "nodeType": "YulFunctionCall", + "src": "9909:74:55" + }, + "nativeSrc": "9909:74:55", + "nodeType": "YulExpressionStatement", + "src": "9909:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "9802:7:55", + "nodeType": "YulIdentifier", + "src": "9802:7:55" + }, + { + "name": "newLen", + "nativeSrc": "9811:6:55", + "nodeType": "YulIdentifier", + "src": "9811:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9799:2:55", + "nodeType": "YulIdentifier", + "src": "9799:2:55" + }, + "nativeSrc": "9799:19:55", + "nodeType": "YulFunctionCall", + "src": "9799:19:55" + }, + "nativeSrc": "9796:201:55", + "nodeType": "YulIf", + "src": "9796:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10017:4:55", + "nodeType": "YulIdentifier", + "src": "10017:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10031:1:55", + "nodeType": "YulLiteral", + "src": "10031:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "10034:6:55", + "nodeType": "YulIdentifier", + "src": "10034:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10027:3:55", + "nodeType": "YulIdentifier", + "src": "10027:3:55" + }, + "nativeSrc": "10027:14:55", + "nodeType": "YulFunctionCall", + "src": "10027:14:55" + }, + { + "kind": "number", + "nativeSrc": "10043:1:55", + "nodeType": "YulLiteral", + "src": "10043:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10023:3:55", + "nodeType": "YulIdentifier", + "src": "10023:3:55" + }, + "nativeSrc": "10023:22:55", + "nodeType": "YulFunctionCall", + "src": "10023:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10010:6:55", + "nodeType": "YulIdentifier", + "src": "10010:6:55" + }, + "nativeSrc": "10010:36:55", + "nodeType": "YulFunctionCall", + "src": "10010:36:55" + }, + "nativeSrc": "10010:36:55", + "nodeType": "YulExpressionStatement", + "src": "10010:36:55" + } + ] + }, + "nativeSrc": "9393:663:55", + "nodeType": "YulCase", + "src": "9393:663:55", + "value": { + "kind": "number", + "nativeSrc": "9398:1:55", + "nodeType": "YulLiteral", + "src": "9398:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "10073:234:55", + "nodeType": "YulBlock", + "src": "10073:234:55", + "statements": [ + { + "nativeSrc": "10087:14:55", + "nodeType": "YulVariableDeclaration", + "src": "10087:14:55", + "value": { + "kind": "number", + "nativeSrc": "10100:1:55", + "nodeType": "YulLiteral", + "src": "10100:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10091:5:55", + "nodeType": "YulTypedName", + "src": "10091:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10136:67:55", + "nodeType": "YulBlock", + "src": "10136:67:55", + "statements": [ + { + "nativeSrc": "10154:35:55", + "nodeType": "YulAssignment", + "src": "10154:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10173:3:55", + "nodeType": "YulIdentifier", + "src": "10173:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "10178:9:55", + "nodeType": "YulIdentifier", + "src": "10178:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10169:3:55", + "nodeType": "YulIdentifier", + "src": "10169:3:55" + }, + "nativeSrc": "10169:19:55", + "nodeType": "YulFunctionCall", + "src": "10169:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10163:5:55", + "nodeType": "YulIdentifier", + "src": "10163:5:55" + }, + "nativeSrc": "10163:26:55", + "nodeType": "YulFunctionCall", + "src": "10163:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "10154:5:55", + "nodeType": "YulIdentifier", + "src": "10154:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "10117:6:55", + "nodeType": "YulIdentifier", + "src": "10117:6:55" + }, + "nativeSrc": "10114:89:55", + "nodeType": "YulIf", + "src": "10114:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10223:4:55", + "nodeType": "YulIdentifier", + "src": "10223:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10282:5:55", + "nodeType": "YulIdentifier", + "src": "10282:5:55" + }, + { + "name": "newLen", + "nativeSrc": "10289:6:55", + "nodeType": "YulIdentifier", + "src": "10289:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "10229:52:55", + "nodeType": "YulIdentifier", + "src": "10229:52:55" + }, + "nativeSrc": "10229:67:55", + "nodeType": "YulFunctionCall", + "src": "10229:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10216:6:55", + "nodeType": "YulIdentifier", + "src": "10216:6:55" + }, + "nativeSrc": "10216:81:55", + "nodeType": "YulFunctionCall", + "src": "10216:81:55" + }, + "nativeSrc": "10216:81:55", + "nodeType": "YulExpressionStatement", + "src": "10216:81:55" + } + ] + }, + "nativeSrc": "10065:242:55", + "nodeType": "YulCase", + "src": "10065:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9373:6:55", + "nodeType": "YulIdentifier", + "src": "9373:6:55" + }, + { + "kind": "number", + "nativeSrc": "9381:2:55", + "nodeType": "YulLiteral", + "src": "9381:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9370:2:55", + "nodeType": "YulIdentifier", + "src": "9370:2:55" + }, + "nativeSrc": "9370:14:55", + "nodeType": "YulFunctionCall", + "src": "9370:14:55" + }, + "nativeSrc": "9363:944:55", + "nodeType": "YulSwitch", + "src": "9363:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "8968:1345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "9049:4:55", + "nodeType": "YulTypedName", + "src": "9049:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "9055:3:55", + "nodeType": "YulTypedName", + "src": "9055:3:55", + "type": "" + } + ], + "src": "8968:1345:55" + }, + { + "body": { + "nativeSrc": "10467:142:55", + "nodeType": "YulBlock", + "src": "10467:142:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10484:9:55", + "nodeType": "YulIdentifier", + "src": "10484:9:55" + }, + { + "kind": "number", + "nativeSrc": "10495:2:55", + "nodeType": "YulLiteral", + "src": "10495:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10477:6:55", + "nodeType": "YulIdentifier", + "src": "10477:6:55" + }, + "nativeSrc": "10477:21:55", + "nodeType": "YulFunctionCall", + "src": "10477:21:55" + }, + "nativeSrc": "10477:21:55", + "nodeType": "YulExpressionStatement", + "src": "10477:21:55" + }, + { + "nativeSrc": "10507:53:55", + "nodeType": "YulAssignment", + "src": "10507:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "10533:6:55", + "nodeType": "YulIdentifier", + "src": "10533:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10545:9:55", + "nodeType": "YulIdentifier", + "src": "10545:9:55" + }, + { + "kind": "number", + "nativeSrc": "10556:2:55", + "nodeType": "YulLiteral", + "src": "10556:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10541:3:55", + "nodeType": "YulIdentifier", + "src": "10541:3:55" + }, + "nativeSrc": "10541:18:55", + "nodeType": "YulFunctionCall", + "src": "10541:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "10515:17:55", + "nodeType": "YulIdentifier", + "src": "10515:17:55" + }, + "nativeSrc": "10515:45:55", + "nodeType": "YulFunctionCall", + "src": "10515:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10507:4:55", + "nodeType": "YulIdentifier", + "src": "10507:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10580:9:55", + "nodeType": "YulIdentifier", + "src": "10580:9:55" + }, + { + "kind": "number", + "nativeSrc": "10591:2:55", + "nodeType": "YulLiteral", + "src": "10591:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10576:3:55", + "nodeType": "YulIdentifier", + "src": "10576:3:55" + }, + "nativeSrc": "10576:18:55", + "nodeType": "YulFunctionCall", + "src": "10576:18:55" + }, + { + "name": "value1", + "nativeSrc": "10596:6:55", + "nodeType": "YulIdentifier", + "src": "10596:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10569:6:55", + "nodeType": "YulIdentifier", + "src": "10569:6:55" + }, + "nativeSrc": "10569:34:55", + "nodeType": "YulFunctionCall", + "src": "10569:34:55" + }, + "nativeSrc": "10569:34:55", + "nodeType": "YulExpressionStatement", + "src": "10569:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed", + "nativeSrc": "10318:291:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10428:9:55", + "nodeType": "YulTypedName", + "src": "10428:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10439:6:55", + "nodeType": "YulTypedName", + "src": "10439:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10447:6:55", + "nodeType": "YulTypedName", + "src": "10447:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10458:4:55", + "nodeType": "YulTypedName", + "src": "10458:4:55", + "type": "" + } + ], + "src": "10318:291:55" + }, + { + "body": { + "nativeSrc": "10695:103:55", + "nodeType": "YulBlock", + "src": "10695:103:55", + "statements": [ + { + "body": { + "nativeSrc": "10741:16:55", + "nodeType": "YulBlock", + "src": "10741:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10750:1:55", + "nodeType": "YulLiteral", + "src": "10750:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10753:1:55", + "nodeType": "YulLiteral", + "src": "10753:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10743:6:55", + "nodeType": "YulIdentifier", + "src": "10743:6:55" + }, + "nativeSrc": "10743:12:55", + "nodeType": "YulFunctionCall", + "src": "10743:12:55" + }, + "nativeSrc": "10743:12:55", + "nodeType": "YulExpressionStatement", + "src": "10743:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10716:7:55", + "nodeType": "YulIdentifier", + "src": "10716:7:55" + }, + { + "name": "headStart", + "nativeSrc": "10725:9:55", + "nodeType": "YulIdentifier", + "src": "10725:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10712:3:55", + "nodeType": "YulIdentifier", + "src": "10712:3:55" + }, + "nativeSrc": "10712:23:55", + "nodeType": "YulFunctionCall", + "src": "10712:23:55" + }, + { + "kind": "number", + "nativeSrc": "10737:2:55", + "nodeType": "YulLiteral", + "src": "10737:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10708:3:55", + "nodeType": "YulIdentifier", + "src": "10708:3:55" + }, + "nativeSrc": "10708:32:55", + "nodeType": "YulFunctionCall", + "src": "10708:32:55" + }, + "nativeSrc": "10705:52:55", + "nodeType": "YulIf", + "src": "10705:52:55" + }, + { + "nativeSrc": "10766:26:55", + "nodeType": "YulAssignment", + "src": "10766:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10782:9:55", + "nodeType": "YulIdentifier", + "src": "10782:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10776:5:55", + "nodeType": "YulIdentifier", + "src": "10776:5:55" + }, + "nativeSrc": "10776:16:55", + "nodeType": "YulFunctionCall", + "src": "10776:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10766:6:55", + "nodeType": "YulIdentifier", + "src": "10766:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "10614:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10661:9:55", + "nodeType": "YulTypedName", + "src": "10661:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10672:7:55", + "nodeType": "YulTypedName", + "src": "10672:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10684:6:55", + "nodeType": "YulTypedName", + "src": "10684:6:55", + "type": "" + } + ], + "src": "10614:184:55" + }, + { + "body": { + "nativeSrc": "10932:119:55", + "nodeType": "YulBlock", + "src": "10932:119:55", + "statements": [ + { + "nativeSrc": "10942:26:55", + "nodeType": "YulAssignment", + "src": "10942:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10954:9:55", + "nodeType": "YulIdentifier", + "src": "10954:9:55" + }, + { + "kind": "number", + "nativeSrc": "10965:2:55", + "nodeType": "YulLiteral", + "src": "10965:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10950:3:55", + "nodeType": "YulIdentifier", + "src": "10950:3:55" + }, + "nativeSrc": "10950:18:55", + "nodeType": "YulFunctionCall", + "src": "10950:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10942:4:55", + "nodeType": "YulIdentifier", + "src": "10942:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10984:9:55", + "nodeType": "YulIdentifier", + "src": "10984:9:55" + }, + { + "name": "value0", + "nativeSrc": "10995:6:55", + "nodeType": "YulIdentifier", + "src": "10995:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10977:6:55", + "nodeType": "YulIdentifier", + "src": "10977:6:55" + }, + "nativeSrc": "10977:25:55", + "nodeType": "YulFunctionCall", + "src": "10977:25:55" + }, + "nativeSrc": "10977:25:55", + "nodeType": "YulExpressionStatement", + "src": "10977:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11022:9:55", + "nodeType": "YulIdentifier", + "src": "11022:9:55" + }, + { + "kind": "number", + "nativeSrc": "11033:2:55", + "nodeType": "YulLiteral", + "src": "11033:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11018:3:55", + "nodeType": "YulIdentifier", + "src": "11018:3:55" + }, + "nativeSrc": "11018:18:55", + "nodeType": "YulFunctionCall", + "src": "11018:18:55" + }, + { + "name": "value1", + "nativeSrc": "11038:6:55", + "nodeType": "YulIdentifier", + "src": "11038:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11011:6:55", + "nodeType": "YulIdentifier", + "src": "11011:6:55" + }, + "nativeSrc": "11011:34:55", + "nodeType": "YulFunctionCall", + "src": "11011:34:55" + }, + "nativeSrc": "11011:34:55", + "nodeType": "YulExpressionStatement", + "src": "11011:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "10803:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10893:9:55", + "nodeType": "YulTypedName", + "src": "10893:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10904:6:55", + "nodeType": "YulTypedName", + "src": "10904:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10912:6:55", + "nodeType": "YulTypedName", + "src": "10912:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10923:4:55", + "nodeType": "YulTypedName", + "src": "10923:4:55", + "type": "" + } + ], + "src": "10803:248:55" + }, + { + "body": { + "nativeSrc": "11257:179:55", + "nodeType": "YulBlock", + "src": "11257:179:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11274:9:55", + "nodeType": "YulIdentifier", + "src": "11274:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11289:6:55", + "nodeType": "YulIdentifier", + "src": "11289:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11305:3:55", + "nodeType": "YulLiteral", + "src": "11305:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11310:1:55", + "nodeType": "YulLiteral", + "src": "11310:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11301:3:55", + "nodeType": "YulIdentifier", + "src": "11301:3:55" + }, + "nativeSrc": "11301:11:55", + "nodeType": "YulFunctionCall", + "src": "11301:11:55" + }, + { + "kind": "number", + "nativeSrc": "11314:1:55", + "nodeType": "YulLiteral", + "src": "11314:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11297:3:55", + "nodeType": "YulIdentifier", + "src": "11297:3:55" + }, + "nativeSrc": "11297:19:55", + "nodeType": "YulFunctionCall", + "src": "11297:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11285:3:55", + "nodeType": "YulIdentifier", + "src": "11285:3:55" + }, + "nativeSrc": "11285:32:55", + "nodeType": "YulFunctionCall", + "src": "11285:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11267:6:55", + "nodeType": "YulIdentifier", + "src": "11267:6:55" + }, + "nativeSrc": "11267:51:55", + "nodeType": "YulFunctionCall", + "src": "11267:51:55" + }, + "nativeSrc": "11267:51:55", + "nodeType": "YulExpressionStatement", + "src": "11267:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11338:9:55", + "nodeType": "YulIdentifier", + "src": "11338:9:55" + }, + { + "kind": "number", + "nativeSrc": "11349:2:55", + "nodeType": "YulLiteral", + "src": "11349:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11334:3:55", + "nodeType": "YulIdentifier", + "src": "11334:3:55" + }, + "nativeSrc": "11334:18:55", + "nodeType": "YulFunctionCall", + "src": "11334:18:55" + }, + { + "kind": "number", + "nativeSrc": "11354:2:55", + "nodeType": "YulLiteral", + "src": "11354:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11327:6:55", + "nodeType": "YulIdentifier", + "src": "11327:6:55" + }, + "nativeSrc": "11327:30:55", + "nodeType": "YulFunctionCall", + "src": "11327:30:55" + }, + "nativeSrc": "11327:30:55", + "nodeType": "YulExpressionStatement", + "src": "11327:30:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11377:9:55", + "nodeType": "YulIdentifier", + "src": "11377:9:55" + }, + { + "kind": "number", + "nativeSrc": "11388:2:55", + "nodeType": "YulLiteral", + "src": "11388:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11373:3:55", + "nodeType": "YulIdentifier", + "src": "11373:3:55" + }, + "nativeSrc": "11373:18:55", + "nodeType": "YulFunctionCall", + "src": "11373:18:55" + }, + { + "kind": "number", + "nativeSrc": "11393:1:55", + "nodeType": "YulLiteral", + "src": "11393:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11366:6:55", + "nodeType": "YulIdentifier", + "src": "11366:6:55" + }, + "nativeSrc": "11366:29:55", + "nodeType": "YulFunctionCall", + "src": "11366:29:55" + }, + "nativeSrc": "11366:29:55", + "nodeType": "YulExpressionStatement", + "src": "11366:29:55" + }, + { + "nativeSrc": "11404:26:55", + "nodeType": "YulAssignment", + "src": "11404:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11416:9:55", + "nodeType": "YulIdentifier", + "src": "11416:9:55" + }, + { + "kind": "number", + "nativeSrc": "11427:2:55", + "nodeType": "YulLiteral", + "src": "11427:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11412:3:55", + "nodeType": "YulIdentifier", + "src": "11412:3:55" + }, + "nativeSrc": "11412:18:55", + "nodeType": "YulFunctionCall", + "src": "11412:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11404:4:55", + "nodeType": "YulIdentifier", + "src": "11404:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "11056:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11226:9:55", + "nodeType": "YulTypedName", + "src": "11226:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11237:6:55", + "nodeType": "YulTypedName", + "src": "11237:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11248:4:55", + "nodeType": "YulTypedName", + "src": "11248:4:55", + "type": "" + } + ], + "src": "11056:380:55" + }, + { + "body": { + "nativeSrc": "11654:324:55", + "nodeType": "YulBlock", + "src": "11654:324:55", + "statements": [ + { + "nativeSrc": "11664:27:55", + "nodeType": "YulAssignment", + "src": "11664:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11676:9:55", + "nodeType": "YulIdentifier", + "src": "11676:9:55" + }, + { + "kind": "number", + "nativeSrc": "11687:3:55", + "nodeType": "YulLiteral", + "src": "11687:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11672:3:55", + "nodeType": "YulIdentifier", + "src": "11672:3:55" + }, + "nativeSrc": "11672:19:55", + "nodeType": "YulFunctionCall", + "src": "11672:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11664:4:55", + "nodeType": "YulIdentifier", + "src": "11664:4:55" + } + ] + }, + { + "nativeSrc": "11700:29:55", + "nodeType": "YulVariableDeclaration", + "src": "11700:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11718:3:55", + "nodeType": "YulLiteral", + "src": "11718:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11723:1:55", + "nodeType": "YulLiteral", + "src": "11723:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11714:3:55", + "nodeType": "YulIdentifier", + "src": "11714:3:55" + }, + "nativeSrc": "11714:11:55", + "nodeType": "YulFunctionCall", + "src": "11714:11:55" + }, + { + "kind": "number", + "nativeSrc": "11727:1:55", + "nodeType": "YulLiteral", + "src": "11727:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11710:3:55", + "nodeType": "YulIdentifier", + "src": "11710:3:55" + }, + "nativeSrc": "11710:19:55", + "nodeType": "YulFunctionCall", + "src": "11710:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "11704:2:55", + "nodeType": "YulTypedName", + "src": "11704:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11745:9:55", + "nodeType": "YulIdentifier", + "src": "11745:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11760:6:55", + "nodeType": "YulIdentifier", + "src": "11760:6:55" + }, + { + "name": "_1", + "nativeSrc": "11768:2:55", + "nodeType": "YulIdentifier", + "src": "11768:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11756:3:55", + "nodeType": "YulIdentifier", + "src": "11756:3:55" + }, + "nativeSrc": "11756:15:55", + "nodeType": "YulFunctionCall", + "src": "11756:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11738:6:55", + "nodeType": "YulIdentifier", + "src": "11738:6:55" + }, + "nativeSrc": "11738:34:55", + "nodeType": "YulFunctionCall", + "src": "11738:34:55" + }, + "nativeSrc": "11738:34:55", + "nodeType": "YulExpressionStatement", + "src": "11738:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11792:9:55", + "nodeType": "YulIdentifier", + "src": "11792:9:55" + }, + { + "kind": "number", + "nativeSrc": "11803:2:55", + "nodeType": "YulLiteral", + "src": "11803:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11788:3:55", + "nodeType": "YulIdentifier", + "src": "11788:3:55" + }, + "nativeSrc": "11788:18:55", + "nodeType": "YulFunctionCall", + "src": "11788:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "11812:6:55", + "nodeType": "YulIdentifier", + "src": "11812:6:55" + }, + { + "name": "_1", + "nativeSrc": "11820:2:55", + "nodeType": "YulIdentifier", + "src": "11820:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11808:3:55", + "nodeType": "YulIdentifier", + "src": "11808:3:55" + }, + "nativeSrc": "11808:15:55", + "nodeType": "YulFunctionCall", + "src": "11808:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11781:6:55", + "nodeType": "YulIdentifier", + "src": "11781:6:55" + }, + "nativeSrc": "11781:43:55", + "nodeType": "YulFunctionCall", + "src": "11781:43:55" + }, + "nativeSrc": "11781:43:55", + "nodeType": "YulExpressionStatement", + "src": "11781:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11844:9:55", + "nodeType": "YulIdentifier", + "src": "11844:9:55" + }, + { + "kind": "number", + "nativeSrc": "11855:2:55", + "nodeType": "YulLiteral", + "src": "11855:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11840:3:55", + "nodeType": "YulIdentifier", + "src": "11840:3:55" + }, + "nativeSrc": "11840:18:55", + "nodeType": "YulFunctionCall", + "src": "11840:18:55" + }, + { + "name": "value2", + "nativeSrc": "11860:6:55", + "nodeType": "YulIdentifier", + "src": "11860:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11833:6:55", + "nodeType": "YulIdentifier", + "src": "11833:6:55" + }, + "nativeSrc": "11833:34:55", + "nodeType": "YulFunctionCall", + "src": "11833:34:55" + }, + "nativeSrc": "11833:34:55", + "nodeType": "YulExpressionStatement", + "src": "11833:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11887:9:55", + "nodeType": "YulIdentifier", + "src": "11887:9:55" + }, + { + "kind": "number", + "nativeSrc": "11898:2:55", + "nodeType": "YulLiteral", + "src": "11898:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11883:3:55", + "nodeType": "YulIdentifier", + "src": "11883:3:55" + }, + "nativeSrc": "11883:18:55", + "nodeType": "YulFunctionCall", + "src": "11883:18:55" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "11907:6:55", + "nodeType": "YulIdentifier", + "src": "11907:6:55" + }, + { + "name": "_1", + "nativeSrc": "11915:2:55", + "nodeType": "YulIdentifier", + "src": "11915:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11903:3:55", + "nodeType": "YulIdentifier", + "src": "11903:3:55" + }, + "nativeSrc": "11903:15:55", + "nodeType": "YulFunctionCall", + "src": "11903:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11876:6:55", + "nodeType": "YulIdentifier", + "src": "11876:6:55" + }, + "nativeSrc": "11876:43:55", + "nodeType": "YulFunctionCall", + "src": "11876:43:55" + }, + "nativeSrc": "11876:43:55", + "nodeType": "YulExpressionStatement", + "src": "11876:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11939:9:55", + "nodeType": "YulIdentifier", + "src": "11939:9:55" + }, + { + "kind": "number", + "nativeSrc": "11950:3:55", + "nodeType": "YulLiteral", + "src": "11950:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11935:3:55", + "nodeType": "YulIdentifier", + "src": "11935:3:55" + }, + "nativeSrc": "11935:19:55", + "nodeType": "YulFunctionCall", + "src": "11935:19:55" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "11960:6:55", + "nodeType": "YulIdentifier", + "src": "11960:6:55" + }, + { + "name": "_1", + "nativeSrc": "11968:2:55", + "nodeType": "YulIdentifier", + "src": "11968:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11956:3:55", + "nodeType": "YulIdentifier", + "src": "11956:3:55" + }, + "nativeSrc": "11956:15:55", + "nodeType": "YulFunctionCall", + "src": "11956:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11928:6:55", + "nodeType": "YulIdentifier", + "src": "11928:6:55" + }, + "nativeSrc": "11928:44:55", + "nodeType": "YulFunctionCall", + "src": "11928:44:55" + }, + "nativeSrc": "11928:44:55", + "nodeType": "YulExpressionStatement", + "src": "11928:44:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed", + "nativeSrc": "11441:537:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11591:9:55", + "nodeType": "YulTypedName", + "src": "11591:9:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11602:6:55", + "nodeType": "YulTypedName", + "src": "11602:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11610:6:55", + "nodeType": "YulTypedName", + "src": "11610:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11618:6:55", + "nodeType": "YulTypedName", + "src": "11618:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11626:6:55", + "nodeType": "YulTypedName", + "src": "11626:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11634:6:55", + "nodeType": "YulTypedName", + "src": "11634:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11645:4:55", + "nodeType": "YulTypedName", + "src": "11645:4:55", + "type": "" + } + ], + "src": "11441:537:55" + }, + { + "body": { + "nativeSrc": "12112:145:55", + "nodeType": "YulBlock", + "src": "12112:145:55", + "statements": [ + { + "nativeSrc": "12122:26:55", + "nodeType": "YulAssignment", + "src": "12122:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12134:9:55", + "nodeType": "YulIdentifier", + "src": "12134:9:55" + }, + { + "kind": "number", + "nativeSrc": "12145:2:55", + "nodeType": "YulLiteral", + "src": "12145:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12130:3:55", + "nodeType": "YulIdentifier", + "src": "12130:3:55" + }, + "nativeSrc": "12130:18:55", + "nodeType": "YulFunctionCall", + "src": "12130:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12122:4:55", + "nodeType": "YulIdentifier", + "src": "12122:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12164:9:55", + "nodeType": "YulIdentifier", + "src": "12164:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12179:6:55", + "nodeType": "YulIdentifier", + "src": "12179:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12195:3:55", + "nodeType": "YulLiteral", + "src": "12195:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12200:1:55", + "nodeType": "YulLiteral", + "src": "12200:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12191:3:55", + "nodeType": "YulIdentifier", + "src": "12191:3:55" + }, + "nativeSrc": "12191:11:55", + "nodeType": "YulFunctionCall", + "src": "12191:11:55" + }, + { + "kind": "number", + "nativeSrc": "12204:1:55", + "nodeType": "YulLiteral", + "src": "12204:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12187:3:55", + "nodeType": "YulIdentifier", + "src": "12187:3:55" + }, + "nativeSrc": "12187:19:55", + "nodeType": "YulFunctionCall", + "src": "12187:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12175:3:55", + "nodeType": "YulIdentifier", + "src": "12175:3:55" + }, + "nativeSrc": "12175:32:55", + "nodeType": "YulFunctionCall", + "src": "12175:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12157:6:55", + "nodeType": "YulIdentifier", + "src": "12157:6:55" + }, + "nativeSrc": "12157:51:55", + "nodeType": "YulFunctionCall", + "src": "12157:51:55" + }, + "nativeSrc": "12157:51:55", + "nodeType": "YulExpressionStatement", + "src": "12157:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12228:9:55", + "nodeType": "YulIdentifier", + "src": "12228:9:55" + }, + { + "kind": "number", + "nativeSrc": "12239:2:55", + "nodeType": "YulLiteral", + "src": "12239:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12224:3:55", + "nodeType": "YulIdentifier", + "src": "12224:3:55" + }, + "nativeSrc": "12224:18:55", + "nodeType": "YulFunctionCall", + "src": "12224:18:55" + }, + { + "name": "value1", + "nativeSrc": "12244:6:55", + "nodeType": "YulIdentifier", + "src": "12244:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12217:6:55", + "nodeType": "YulIdentifier", + "src": "12217:6:55" + }, + "nativeSrc": "12217:34:55", + "nodeType": "YulFunctionCall", + "src": "12217:34:55" + }, + "nativeSrc": "12217:34:55", + "nodeType": "YulExpressionStatement", + "src": "12217:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "11983:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12073:9:55", + "nodeType": "YulTypedName", + "src": "12073:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12084:6:55", + "nodeType": "YulTypedName", + "src": "12084:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12092:6:55", + "nodeType": "YulTypedName", + "src": "12092:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12103:4:55", + "nodeType": "YulTypedName", + "src": "12103:4:55", + "type": "" + } + ], + "src": "11983:274:55" + }, + { + "body": { + "nativeSrc": "12453:14:55", + "nodeType": "YulBlock", + "src": "12453:14:55", + "statements": [ + { + "nativeSrc": "12455:10:55", + "nodeType": "YulAssignment", + "src": "12455:10:55", + "value": { + "name": "pos", + "nativeSrc": "12462:3:55", + "nodeType": "YulIdentifier", + "src": "12462:3:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "12455:3:55", + "nodeType": "YulIdentifier", + "src": "12455:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12262:205:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "12437:3:55", + "nodeType": "YulTypedName", + "src": "12437:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "12445:3:55", + "nodeType": "YulTypedName", + "src": "12445:3:55", + "type": "" + } + ], + "src": "12262:205:55" + }, + { + "body": { + "nativeSrc": "12521:176:55", + "nodeType": "YulBlock", + "src": "12521:176:55", + "statements": [ + { + "nativeSrc": "12531:17:55", + "nodeType": "YulAssignment", + "src": "12531:17:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "12543:1:55", + "nodeType": "YulIdentifier", + "src": "12543:1:55" + }, + { + "name": "y", + "nativeSrc": "12546:1:55", + "nodeType": "YulIdentifier", + "src": "12546:1:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12539:3:55", + "nodeType": "YulIdentifier", + "src": "12539:3:55" + }, + "nativeSrc": "12539:9:55", + "nodeType": "YulFunctionCall", + "src": "12539:9:55" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "12531:4:55", + "nodeType": "YulIdentifier", + "src": "12531:4:55" + } + ] + }, + { + "body": { + "nativeSrc": "12580:111:55", + "nodeType": "YulBlock", + "src": "12580:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12601:1:55", + "nodeType": "YulLiteral", + "src": "12601:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12608:3:55", + "nodeType": "YulLiteral", + "src": "12608:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12613:10:55", + "nodeType": "YulLiteral", + "src": "12613:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12604:3:55", + "nodeType": "YulIdentifier", + "src": "12604:3:55" + }, + "nativeSrc": "12604:20:55", + "nodeType": "YulFunctionCall", + "src": "12604:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12594:6:55", + "nodeType": "YulIdentifier", + "src": "12594:6:55" + }, + "nativeSrc": "12594:31:55", + "nodeType": "YulFunctionCall", + "src": "12594:31:55" + }, + "nativeSrc": "12594:31:55", + "nodeType": "YulExpressionStatement", + "src": "12594:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12645:1:55", + "nodeType": "YulLiteral", + "src": "12645:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "12648:4:55", + "nodeType": "YulLiteral", + "src": "12648:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12638:6:55", + "nodeType": "YulIdentifier", + "src": "12638:6:55" + }, + "nativeSrc": "12638:15:55", + "nodeType": "YulFunctionCall", + "src": "12638:15:55" + }, + "nativeSrc": "12638:15:55", + "nodeType": "YulExpressionStatement", + "src": "12638:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12673:1:55", + "nodeType": "YulLiteral", + "src": "12673:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12676:4:55", + "nodeType": "YulLiteral", + "src": "12676:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12666:6:55", + "nodeType": "YulIdentifier", + "src": "12666:6:55" + }, + "nativeSrc": "12666:15:55", + "nodeType": "YulFunctionCall", + "src": "12666:15:55" + }, + "nativeSrc": "12666:15:55", + "nodeType": "YulExpressionStatement", + "src": "12666:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "12563:4:55", + "nodeType": "YulIdentifier", + "src": "12563:4:55" + }, + { + "name": "x", + "nativeSrc": "12569:1:55", + "nodeType": "YulIdentifier", + "src": "12569:1:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12560:2:55", + "nodeType": "YulIdentifier", + "src": "12560:2:55" + }, + "nativeSrc": "12560:11:55", + "nodeType": "YulFunctionCall", + "src": "12560:11:55" + }, + "nativeSrc": "12557:134:55", + "nodeType": "YulIf", + "src": "12557:134:55" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "12472:225:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "12503:1:55", + "nodeType": "YulTypedName", + "src": "12503:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "12506:1:55", + "nodeType": "YulTypedName", + "src": "12506:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "12512:4:55", + "nodeType": "YulTypedName", + "src": "12512:4:55", + "type": "" + } + ], + "src": "12472:225:55" + }, + { + "body": { + "nativeSrc": "12734:95:55", + "nodeType": "YulBlock", + "src": "12734:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12751:1:55", + "nodeType": "YulLiteral", + "src": "12751:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12758:3:55", + "nodeType": "YulLiteral", + "src": "12758:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12763:10:55", + "nodeType": "YulLiteral", + "src": "12763:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12754:3:55", + "nodeType": "YulIdentifier", + "src": "12754:3:55" + }, + "nativeSrc": "12754:20:55", + "nodeType": "YulFunctionCall", + "src": "12754:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12744:6:55", + "nodeType": "YulIdentifier", + "src": "12744:6:55" + }, + "nativeSrc": "12744:31:55", + "nodeType": "YulFunctionCall", + "src": "12744:31:55" + }, + "nativeSrc": "12744:31:55", + "nodeType": "YulExpressionStatement", + "src": "12744:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12791:1:55", + "nodeType": "YulLiteral", + "src": "12791:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "12794:4:55", + "nodeType": "YulLiteral", + "src": "12794:4:55", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12784:6:55", + "nodeType": "YulIdentifier", + "src": "12784:6:55" + }, + "nativeSrc": "12784:15:55", + "nodeType": "YulFunctionCall", + "src": "12784:15:55" + }, + "nativeSrc": "12784:15:55", + "nodeType": "YulExpressionStatement", + "src": "12784:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12815:1:55", + "nodeType": "YulLiteral", + "src": "12815:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12818:4:55", + "nodeType": "YulLiteral", + "src": "12818:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12808:6:55", + "nodeType": "YulIdentifier", + "src": "12808:6:55" + }, + "nativeSrc": "12808:15:55", + "nodeType": "YulFunctionCall", + "src": "12808:15:55" + }, + "nativeSrc": "12808:15:55", + "nodeType": "YulExpressionStatement", + "src": "12808:15:55" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "12702:127:55", + "nodeType": "YulFunctionDefinition", + "src": "12702:127:55" + }, + { + "body": { + "nativeSrc": "12971:150:55", + "nodeType": "YulBlock", + "src": "12971:150:55", + "statements": [ + { + "nativeSrc": "12981:27:55", + "nodeType": "YulVariableDeclaration", + "src": "12981:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13001:6:55", + "nodeType": "YulIdentifier", + "src": "13001:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12995:5:55", + "nodeType": "YulIdentifier", + "src": "12995:5:55" + }, + "nativeSrc": "12995:13:55", + "nodeType": "YulFunctionCall", + "src": "12995:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "12985:6:55", + "nodeType": "YulTypedName", + "src": "12985:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13056:6:55", + "nodeType": "YulIdentifier", + "src": "13056:6:55" + }, + { + "kind": "number", + "nativeSrc": "13064:4:55", + "nodeType": "YulLiteral", + "src": "13064:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13052:3:55", + "nodeType": "YulIdentifier", + "src": "13052:3:55" + }, + "nativeSrc": "13052:17:55", + "nodeType": "YulFunctionCall", + "src": "13052:17:55" + }, + { + "name": "pos", + "nativeSrc": "13071:3:55", + "nodeType": "YulIdentifier", + "src": "13071:3:55" + }, + { + "name": "length", + "nativeSrc": "13076:6:55", + "nodeType": "YulIdentifier", + "src": "13076:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "13017:34:55", + "nodeType": "YulIdentifier", + "src": "13017:34:55" + }, + "nativeSrc": "13017:66:55", + "nodeType": "YulFunctionCall", + "src": "13017:66:55" + }, + "nativeSrc": "13017:66:55", + "nodeType": "YulExpressionStatement", + "src": "13017:66:55" + }, + { + "nativeSrc": "13092:23:55", + "nodeType": "YulAssignment", + "src": "13092:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13103:3:55", + "nodeType": "YulIdentifier", + "src": "13103:3:55" + }, + { + "name": "length", + "nativeSrc": "13108:6:55", + "nodeType": "YulIdentifier", + "src": "13108:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13099:3:55", + "nodeType": "YulIdentifier", + "src": "13099:3:55" + }, + "nativeSrc": "13099:16:55", + "nodeType": "YulFunctionCall", + "src": "13099:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13092:3:55", + "nodeType": "YulIdentifier", + "src": "13092:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12834:287:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "12947:3:55", + "nodeType": "YulTypedName", + "src": "12947:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12952:6:55", + "nodeType": "YulTypedName", + "src": "12952:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "12963:3:55", + "nodeType": "YulTypedName", + "src": "12963:3:55", + "type": "" + } + ], + "src": "12834:287:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_available_length_string(src, length, end) -> array\n {\n let _1 := sub(shl(64, 1), 1)\n if gt(length, _1) { panic_error_0x41() }\n let _2 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value0 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := abi_decode_address(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let tail_2 := add(add(headStart, shl(5, length)), 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(63)))\n tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_string(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), 64)\n mstore(add(headStart, 64), 0)\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "837": [ + { + "length": 32, + "start": 5567 + }, + { + "length": 32, + "start": 5609 + }, + { + "length": 32, + "start": 5956 + } + ] + }, + "linkReferences": {}, + "object": "608060405260043610620002185760003560e01c806301601d2f146200021d57806301ffc9a714620002555780630470d3ac146200028b57806309766da214620002b25780630d6115d014620002d957806312b357b514620002fe5780631c2b3afc1462000323578063248a9ca314620003485780632cec1a06146200036d5780632f2ff15d1462000392578063352af39a14620003b757806336568abe14620003dc5780633c55593814620004015780633f4ba83a146200041957806340df8d8414620004315780634cba593a14620004565780634f1ef286146200047b5780634f3f4639146200049257806352d1902d14620004aa5780635a81a62614620004c25780635c975abb14620004f65780635e818619146200050e5780636cd5687814620005335780637fa3465714620005585780638127f465146200057d5780638456cb5914620005a45780639010d07c14620005bc57806391d1485414620005e157806392cf833f146200060657806395b6ef0c146200062b5780639d825bc51462000650578063a217fddf1462000668578063ad3cb1cc146200067f578063b289819c14620006b2578063c17e30bf14620006d7578063c2a1db7814620006fc578063c39409e11462000723578063ca15c873146200073b578063d547741f1462000760578063e63ab1e91462000785578063f72c0d8b14620007aa578063f85b4a9c14620007cf578063fd2fbd5214620007f4575b600080fd5b3480156200022a57600080fd5b506200024260008051602062002e1f83398151915281565b6040519081526020015b60405180910390f35b3480156200026257600080fd5b506200027a620002743660046200241c565b6200080b565b60405190151581526020016200024c565b3480156200029857600080fd5b50620002a362000839565b6040516200024c919062002448565b348015620002bf57600080fd5b50620002d7620002d136600462002479565b62000859565b005b348015620002e657600080fd5b50620002d7620002f836600462002529565b6200090b565b3480156200030b57600080fd5b506200027a6200031d36600462002479565b62000935565b3480156200033057600080fd5b50620002d76200034236600462002576565b62000967565b3480156200035557600080fd5b50620002426200036736600462002576565b62000999565b3480156200037a57600080fd5b50620002a36200038c36600462002479565b620009bb565b3480156200039f57600080fd5b50620002d7620003b136600462002590565b620009f3565b348015620003c457600080fd5b5062000242620003d636600462002529565b62000a1b565b348015620003e957600080fd5b50620002d7620003fb36600462002590565b62000aaa565b3480156200040e57600080fd5b506200024262000ae5565b3480156200042657600080fd5b50620002d762000afc565b3480156200043e57600080fd5b506200024260008051602062002eff83398151915281565b3480156200046357600080fd5b506200024260008051602062002e5f83398151915281565b620002d76200048c366004620025bf565b62000b24565b3480156200049f57600080fd5b50620002a362000b45565b348015620004b757600080fd5b506200024262000b65565b348015620004cf57600080fd5b50620004e7620004e136600462002576565b62000b85565b6040516200024c91906200267b565b3480156200050357600080fd5b506200027a62000c68565b3480156200051b57600080fd5b50620002d76200052d36600462002529565b62000c7f565b3480156200054057600080fd5b50620002d76200055236600462002479565b62000ca5565b3480156200056557600080fd5b506200024260008051602062002f1f83398151915281565b3480156200058a57600080fd5b506200059562000d4a565b6040516200024c919062002690565b348015620005b157600080fd5b50620002d762000d6b565b348015620005c957600080fd5b50620002a3620005db366004620026d6565b62000d90565b348015620005ee57600080fd5b506200027a6200060036600462002590565b62000dc2565b3480156200061357600080fd5b506200024260008051602062002e3f83398151915281565b3480156200063857600080fd5b50620002d76200064a366004620026f9565b62000dfa565b3480156200065d57600080fd5b50620002a362000fb8565b3480156200067557600080fd5b5062000242600081565b3480156200068c57600080fd5b50620004e7604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006bf57600080fd5b506200024260008051602062002e7f83398151915281565b348015620006e457600080fd5b50620002d7620006f636600462002479565b62000fd5565b3480156200070957600080fd5b50620007146200107e565b6040516200024c919062002771565b3480156200073057600080fd5b5062000242620011f3565b3480156200074857600080fd5b50620002426200075a36600462002576565b6200120a565b3480156200076d57600080fd5b50620002d76200077f36600462002590565b6200123a565b3480156200079257600080fd5b506200024260008051602062002edf83398151915281565b348015620007b757600080fd5b506200024260008051602062002e9f83398151915281565b348015620007dc57600080fd5b50620002d7620007ee36600462002576565b6200125c565b620002a362000805366004620027d9565b620012c2565b60006001600160e01b03198216635a05180f60e01b14806200083357506200083382620012f0565b92915050565b6000806200084662001327565b600201546001600160a01b031692915050565b60008051602062002e7f83398151915262000874816200134b565b816001600160a01b03163b600003620008ad57816040516337766f4360e11b8152600401620008a4919062002448565b60405180910390fd5b6000620008b962000fb8565b9050620008c68362001357565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002e3f83398151915262000926816200134b565b620009318262001385565b5050565b6000806200094262001327565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002e1f83398151915262000982816200134b565b60006200098e62001327565b600101929092555050565b600080620009a662001478565b60009384526020525050604090206001015490565b600080620009c862001327565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b620009fe8262000999565b62000a09816200134b565b62000a1583836200149c565b50505050565b60008062000a28620014e5565b905062000a618360405160200162000a41919062002808565b60408051601f198184030181529190528051602090910120829062001509565b62000a7f5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000a93919062002808565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000ad45760405163334bd91960e11b815260040160405180910390fd5b62000ae0828262001517565b505050565b60008062000af262001327565b6003015492915050565b60008051602062002edf83398151915262000b17816200134b565b62000b2162001557565b50565b62000b2e620015b4565b62000b39826200165f565b6200093182826200167a565b60008062000b5262001327565b600401546001600160a01b031692915050565b600062000b7162001739565b5060008051602062002ebf83398151915290565b6060600062000b93620014e5565b905062000ba1818462001509565b62000bbf5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000bdc9062002826565b80601f016020809104026020016040519081016040528092919081815260200182805462000c0a9062002826565b801562000c5b5780601f1062000c2f5761010080835404028352916020019162000c5b565b820191906000526020600020905b81548152906001019060200180831162000c3d57829003601f168201915b5050505050915050919050565b60008062000c7562001783565b5460ff1692915050565b60008051602062002e3f83398151915262000c9a816200134b565b6200093182620017a7565b60008051602062002eff83398151915262000cc0816200134b565b6001600160a01b03821662000cec578160405163220b4f1160e11b8152600401620008a4919062002448565b600062000cf862000839565b905062000d058362001885565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d58620014e5565b905062000d6581620018b6565b91505090565b60008051602062002edf83398151915262000d86816200134b565b62000b21620018c5565b60008062000d9d62001911565b600085815260208290526040902090915062000dba908462001935565b949350505050565b60008062000dcf62001478565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e0662001943565b805490915060ff600160401b82041615906001600160401b031660008115801562000e2e5750825b90506000826001600160401b0316600114801562000e4b5750303b155b90508115801562000e5a575080155b1562000e795760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ea357845460ff60401b1916600160401b1785555b62000ead62001967565b62000eb76200197b565b62000ec16200197b565b62000ece60008c6200149c565b5062000eea60008051602062002edf8339815191528b6200149c565b5062000f0660008051602062002e9f8339815191528a6200149c565b5062000f2260008051602062002e7f833981519152896200149c565b50600062000f2f62001327565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000fab57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b60008062000fc562001327565b546001600160a01b031692915050565b60008051602062002e7f83398151915262000ff0816200134b565b816001600160a01b03163b60000362001020578160405163c9c10a6160e01b8152600401620008a4919062002448565b60006200102c62000b45565b9050620010398362001985565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b606060006200108c620014e5565b905060006200109b82620018b6565b9050600081516001600160401b03811115620010bb57620010bb62002497565b604051908082528060200260200182016040528015620010f057816020015b6060815260200190600190039081620010da5790505b50905060005b8251811015620011eb578360020160008483815181106200111b576200111b62002862565b6020026020010151815260200190815260200160002080546200113e9062002826565b80601f01602080910402602001604051908101604052809291908181526020018280546200116c9062002826565b8015620011bd5780601f106200119157610100808354040283529160200191620011bd565b820191906000526020600020905b8154815290600101906020018083116200119f57829003601f168201915b5050505050828281518110620011d757620011d762002862565b6020908102919091010152600101620010f6565b509392505050565b6000806200120062001327565b6001015492915050565b6000806200121762001911565b60008481526020829052604090209091506200123390620019b6565b9392505050565b620012458262000999565b62001250816200134b565b62000a15838362001517565b60008051602062002e5f83398151915262001277816200134b565b60006200128362000ae5565b90506200129083620019c1565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b6000620012ce620019d7565b620012d862001a10565b620012e4838362001a39565b90506200083362001c79565b60006001600160e01b03198216637965db0b60e01b14806200083357506301ffc9a760e01b6001600160e01b031983161462000833565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b21813362001c8c565b60006200136362001327565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b6000816040516020016200139a919062002808565b6040516020818303038152906040528051906020012090506000620013be620014e5565b90506000620013ce828462001cc9565b905080620013f35783604051633dad0df560e11b8152600401620008a491906200267b565b600083815260028301602052604090206200140f8582620028cc565b5082826003018560405162001425919062002808565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200146a92919062002998565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620014a962001911565b90506000620014b9858562001cd7565b9050801562000dba576000858152602083905260409020620014dc908562001d80565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001233838362001d97565b6000806200152462001911565b9050600062001534858562001daf565b9050801562000dba576000858152602083905260409020620014dc908562001e2d565b6200156162001e44565b60006200156d62001783565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620015a9919062002448565b60405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806200163e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200163260008051602062002ebf833981519152546001600160a01b031690565b6001600160a01b031614155b156200165d5760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002e9f83398151915262000931816200134b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620016d7575060408051601f3d908101601f19168201909252620016d491810190620029bc565b60015b620016f95781604051634c9c8ce360e01b8152600401620008a4919062002448565b60008051602062002ebf83398151915281146200172d57604051632a87526960e21b815260048101829052602401620008a4565b62000ae0838362001e6c565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146200165d5760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620017bc919062002808565b6040516020818303038152906040528051906020012090506000620017e0620014e5565b90506000620017f0828462001ec9565b905080620018115760405163162e926760e11b815260040160405180910390fd5b600083815260028301602052604081206200182c91620023b4565b816003018460405162001840919062002808565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200146a92919062002998565b60006200189162001327565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620012338362001ed7565b620018cf62001a10565b6000620018db62001783565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200159a3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001233838362001f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6200197162001f62565b6200165d62001f8a565b6200165d62001f62565b60006200199162001327565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000833825490565b6000620019cd62001327565b6003019190915550565b6000620019e362001fab565b80549091506001190162001a0a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a1a62000c68565b156200165d5760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001a67578260405163715397cd60e11b8152600401620008a4919062002448565b600062001a73620011f3565b90508034101562001aa1576040516353f01c6360e11b815260048101829052346024820152604401620008a4565b600062001aad62000fb8565b9050806001600160a01b03163b60000362001adf57806040516337766f4360e11b8152600401620008a4919062002448565b600062001aeb62000b45565b9050806001600160a01b03163b60000362001b1d578060405163c9c10a6160e01b8152600401620008a4919062002448565b60008260405162001b2e90620023f3565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001b6a573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001bd057600080fd5b505af115801562001be5573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c0a925083915062001fcf565b62001c2560008051602062002f1f833981519152826200149c565b5062001c3b6001600160a01b0382163462002032565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001c8562001fab565b6001905550565b62001c98828262000dc2565b620009315760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008a4565b6000620012338383620020cf565b60008062001ce462001478565b905062001cf2848462000dc2565b62001d75576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d2a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000833565b600091505062000833565b600062001233836001600160a01b038416620020cf565b60009081526001919091016020526040902054151590565b60008062001dbc62001478565b905062001dca848462000dc2565b1562001d75576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000833565b600062001233836001600160a01b0384166200211e565b62001e4e62000c68565b6200165d57604051638dfc202b60e01b815260040160405180910390fd5b62001e778262002217565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001ebf5762000ae0828262002277565b62000931620022f3565b60006200123383836200211e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f2957602002820191906000526020600020905b81548152602001906001019080831162001f14575b50505050509050919050565b600082600001828154811062001f4f5762001f4f62002862565b9060005260206000200154905092915050565b62001f6c62002313565b6200165d57604051631afcd79f60e31b815260040160405180910390fd5b62001f9462001f62565b600062001fa062001783565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600062001fdb62001327565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b8047101562002058573060405163cd78605960e01b8152600401620008a4919062002448565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620020a7576040519150601f19603f3d011682016040523d82523d6000602084013e620020ac565b606091505b505090508062000ae057604051630a12f52160e11b815260040160405180910390fd5b6000620020dd838362001d97565b620021155750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000833565b50600062000833565b6000818152600183016020526040812054801562001d7557600062002145600183620029d6565b85549091506000906200215b90600190620029d6565b9050808214620021c75760008660000182815481106200217f576200217f62002862565b9060005260206000200154905080876000018481548110620021a557620021a562002862565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620021db57620021db620029f8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000833565b806001600160a01b03163b600003620022475780604051634c9c8ce360e01b8152600401620008a4919062002448565b60008051602062002ebf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405162002296919062002808565b600060405180830381855af49150503d8060008114620022d3576040519150601f19603f3d011682016040523d82523d6000602084013e620022d8565b606091505b5091509150620022ea8583836200232f565b95945050505050565b34156200165d5760405163b398979f60e01b815260040160405180910390fd5b60006200231f62001943565b54600160401b900460ff16919050565b606082620023485762002342826200238a565b62001233565b81511580156200236057506001600160a01b0384163b155b15620023835783604051639996b31560e01b8152600401620008a4919062002448565b5092915050565b8051156200239b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054620023c29062002826565b6000825580601f10620023d3575050565b601f01602090049060005260206000209081019062000b21919062002401565b6104108062002a0f83390190565b5b8082111562002418576000815560010162002402565b5090565b6000602082840312156200242f57600080fd5b81356001600160e01b0319811681146200123357600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146200247457600080fd5b919050565b6000602082840312156200248c57600080fd5b62001233826200245c565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115620024ca57620024ca62002497565b604051601f8501601f19908116603f01168101908282118183101715620024f557620024f562002497565b816040528093508581528686860111156200250f57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156200253c57600080fd5b81356001600160401b038111156200255357600080fd5b8201601f810184136200256557600080fd5b62000dba84823560208401620024ad565b6000602082840312156200258957600080fd5b5035919050565b60008060408385031215620025a457600080fd5b82359150620025b6602084016200245c565b90509250929050565b60008060408385031215620025d357600080fd5b620025de836200245c565b915060208301356001600160401b03811115620025fa57600080fd5b8301601f810185136200260c57600080fd5b6200261d85823560208401620024ad565b9150509250929050565b60005b83811015620026445781810151838201526020016200262a565b50506000910152565b600081518084526200266781602086016020860162002627565b601f01601f19169290920160200192915050565b6020815260006200123360208301846200264d565b6020808252825182820181905260009190848201906040850190845b81811015620026ca57835183529284019291840191600101620026ac565b50909695505050505050565b60008060408385031215620026ea57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200271357600080fd5b6200271e876200245c565b95506200272e602088016200245c565b94506200273e604088016200245c565b93506200274e606088016200245c565b92506200275e608088016200245c565b915060a087013590509295509295509295565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015620027cc57603f19888603018452620027b98583516200264d565b945092850192908501906001016200279a565b5092979650505050505050565b60008060408385031215620027ed57600080fd5b620027f8836200245c565b9150620025b6602084016200245c565b600082516200281c81846020870162002627565b9190910192915050565b600181811c908216806200283b57607f821691505b6020821081036200285c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000ae0576000816000526020600020601f850160051c81016020861015620028a35750805b601f850160051c820191505b81811015620028c457828155600101620028af565b505050505050565b81516001600160401b03811115620028e857620028e862002497565b6200290081620028f9845462002826565b8462002878565b602080601f8311600181146200293857600084156200291f5750858301515b600019600386901b1c1916600185901b178555620028c4565b600085815260208120601f198616915b82811015620029695788860151825594840194600190910190840162002948565b5085821015620029885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000620029ad60408301856200264d565b90508260208301529392505050565b600060208284031215620029cf57600080fd5b5051919050565b818103818111156200083357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212204a7231d4ccf265a64d1dfd7340f540b8a8e32f79618d47ebe892505b2da3fab164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x218 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x21D JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x255 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x28B JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2D9 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x2FE JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x323 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x348 JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x36D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x392 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3B7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x3DC JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x401 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x419 JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x431 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x456 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x47B JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x492 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4AA JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x4C2 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x4F6 JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x50E JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x533 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x558 JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x57D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5A4 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5BC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x5E1 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x606 JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x62B JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x650 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x668 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x67F JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6B2 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x6D7 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x6FC JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x723 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x73B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x760 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x785 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7AA JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x7CF JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x7F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x274 CALLDATASIZE PUSH1 0x4 PUSH3 0x241C JUMP JUMPDEST PUSH3 0x80B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x24C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x859 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x2F8 CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x31D CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x342 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x967 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x367 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x38C CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0x9BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x3D6 CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0xA1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x3FB CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0xAAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0xAE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0xAFC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2D7 PUSH3 0x48C CALLDATASIZE PUSH1 0x4 PUSH3 0x25BF JUMP JUMPDEST PUSH3 0xB24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0xB45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0xB65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4E7 PUSH3 0x4E1 CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x267B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0xC68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x52D CALLDATASIZE PUSH1 0x4 PUSH3 0x2529 JUMP JUMPDEST PUSH3 0xC7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x552 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0xCA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x595 PUSH3 0xD4A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2690 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0xD6B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0x5DB CALLDATASIZE PUSH1 0x4 PUSH3 0x26D6 JUMP JUMPDEST PUSH3 0xD90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27A PUSH3 0x600 CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0xDC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x638 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x64A CALLDATASIZE PUSH1 0x4 PUSH3 0x26F9 JUMP JUMPDEST PUSH3 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x65D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2A3 PUSH3 0xFB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4E7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x6F6 CALLDATASIZE PUSH1 0x4 PUSH3 0x2479 JUMP JUMPDEST PUSH3 0xFD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x714 PUSH3 0x107E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x24C SWAP2 SWAP1 PUSH3 0x2771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x11F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH3 0x75A CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x120A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x76D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x77F CALLDATASIZE PUSH1 0x4 PUSH3 0x2590 JUMP JUMPDEST PUSH3 0x123A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x242 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2D7 PUSH3 0x7EE CALLDATASIZE PUSH1 0x4 PUSH3 0x2576 JUMP JUMPDEST PUSH3 0x125C JUMP JUMPDEST PUSH3 0x2A3 PUSH3 0x805 CALLDATASIZE PUSH1 0x4 PUSH3 0x27D9 JUMP JUMPDEST PUSH3 0x12C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x833 JUMPI POP PUSH3 0x833 DUP3 PUSH3 0x12F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x846 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x874 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8AD JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8B9 PUSH3 0xFB8 JUMP JUMPDEST SWAP1 POP PUSH3 0x8C6 DUP4 PUSH3 0x1357 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x926 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0x931 DUP3 PUSH3 0x1385 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x942 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x982 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x98E PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9A6 PUSH3 0x1478 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9C8 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x9FE DUP3 PUSH3 0x999 JUMP JUMPDEST PUSH3 0xA09 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xA15 DUP4 DUP4 PUSH3 0x149C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA28 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xA61 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA41 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x1509 JUMP JUMPDEST PUSH3 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xA93 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xAD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xAE0 DUP3 DUP3 PUSH3 0x1517 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xAF2 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB17 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xB21 PUSH3 0x1557 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB2E PUSH3 0x15B4 JUMP JUMPDEST PUSH3 0xB39 DUP3 PUSH3 0x165F JUMP JUMPDEST PUSH3 0x931 DUP3 DUP3 PUSH3 0x167A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB52 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xB71 PUSH3 0x1739 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xB93 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xBA1 DUP2 DUP5 PUSH3 0x1509 JUMP JUMPDEST PUSH3 0xBBF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xBDC SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC0A SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC5B JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC2F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC5B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC3D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xC75 PUSH3 0x1783 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xC9A DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0x931 DUP3 PUSH3 0x17A7 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCC0 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xCEC JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCF8 PUSH3 0x839 JUMP JUMPDEST SWAP1 POP PUSH3 0xD05 DUP4 PUSH3 0x1885 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD58 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH3 0xD65 DUP2 PUSH3 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD86 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xB21 PUSH3 0x18C5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xD9D PUSH3 0x1911 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDBA SWAP1 DUP5 PUSH3 0x1935 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDCF PUSH3 0x1478 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE06 PUSH3 0x1943 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE2E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE4B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE5A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xE79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xEA3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEAD PUSH3 0x1967 JUMP JUMPDEST PUSH3 0xEB7 PUSH3 0x197B JUMP JUMPDEST PUSH3 0xEC1 PUSH3 0x197B JUMP JUMPDEST PUSH3 0xECE PUSH1 0x0 DUP13 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xEEA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xF06 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0xF22 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x149C JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF2F PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFAB JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xFC5 PUSH3 0x1327 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xFF0 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1020 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x102C PUSH3 0xB45 JUMP JUMPDEST SWAP1 POP PUSH3 0x1039 DUP4 PUSH3 0x1985 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x108C PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x109B DUP3 PUSH3 0x18B6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x10BB JUMPI PUSH3 0x10BB PUSH3 0x2497 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x10F0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x10DA JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x11EB JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x111B JUMPI PUSH3 0x111B PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x113E SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x116C SWAP1 PUSH3 0x2826 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x11BD JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x1191 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x11BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x119F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x11D7 JUMPI PUSH3 0x11D7 PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x10F6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1200 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1217 PUSH3 0x1911 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1233 SWAP1 PUSH3 0x19B6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x1245 DUP3 PUSH3 0x999 JUMP JUMPDEST PUSH3 0x1250 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH3 0xA15 DUP4 DUP4 PUSH3 0x1517 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1277 DUP2 PUSH3 0x134B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1283 PUSH3 0xAE5 JUMP JUMPDEST SWAP1 POP PUSH3 0x1290 DUP4 PUSH3 0x19C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12CE PUSH3 0x19D7 JUMP JUMPDEST PUSH3 0x12D8 PUSH3 0x1A10 JUMP JUMPDEST PUSH3 0x12E4 DUP4 DUP4 PUSH3 0x1A39 JUMP JUMPDEST SWAP1 POP PUSH3 0x833 PUSH3 0x1C79 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x833 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x833 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB21 DUP2 CALLER PUSH3 0x1C8C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1363 PUSH3 0x1327 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x139A SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x13BE PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x13CE DUP3 DUP5 PUSH3 0x1CC9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x13F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x267B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x140F DUP6 DUP3 PUSH3 0x28CC JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x1425 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x146A SWAP3 SWAP2 SWAP1 PUSH3 0x2998 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x14A9 PUSH3 0x1911 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x14B9 DUP6 DUP6 PUSH3 0x1CD7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDBA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14DC SWAP1 DUP6 PUSH3 0x1D80 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x1D97 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1524 PUSH3 0x1911 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1534 DUP6 DUP6 PUSH3 0x1DAF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDBA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14DC SWAP1 DUP6 PUSH3 0x1E2D JUMP JUMPDEST PUSH3 0x1561 PUSH3 0x1E44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x156D PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x15A9 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x163E JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1632 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x931 DUP2 PUSH3 0x134B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x16D7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x16D4 SWAP2 DUP2 ADD SWAP1 PUSH3 0x29BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x16F9 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x172D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH3 0xAE0 DUP4 DUP4 PUSH3 0x1E6C JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17BC SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x17E0 PUSH3 0x14E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x17F0 DUP3 DUP5 PUSH3 0x1EC9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1811 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x182C SWAP2 PUSH3 0x23B4 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x1840 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x146A SWAP3 SWAP2 SWAP1 PUSH3 0x2998 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1891 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH3 0x1ED7 JUMP JUMPDEST PUSH3 0x18CF PUSH3 0x1A10 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18DB PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x159A CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x1F35 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x1971 PUSH3 0x1F62 JUMP JUMPDEST PUSH3 0x165D PUSH3 0x1F8A JUMP JUMPDEST PUSH3 0x165D PUSH3 0x1F62 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1991 PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x833 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19CD PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19E3 PUSH3 0x1FAB JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A0A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A1A PUSH3 0xC68 JUMP JUMPDEST ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1A67 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A73 PUSH3 0x11F3 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1AA1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AAD PUSH3 0xFB8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1ADF JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AEB PUSH3 0xB45 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B1D JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B2E SWAP1 PUSH3 0x23F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1B6A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1BD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1BE5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C0A SWAP3 POP DUP4 SWAP2 POP PUSH3 0x1FCF JUMP JUMPDEST PUSH3 0x1C25 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x149C JUMP JUMPDEST POP PUSH3 0x1C3B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x2032 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C85 PUSH3 0x1FAB JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1C98 DUP3 DUP3 PUSH3 0xDC2 JUMP JUMPDEST PUSH3 0x931 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8A4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x20CF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1CE4 PUSH3 0x1478 JUMP JUMPDEST SWAP1 POP PUSH3 0x1CF2 DUP5 DUP5 PUSH3 0xDC2 JUMP JUMPDEST PUSH3 0x1D75 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D2A CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x20CF JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1DBC PUSH3 0x1478 JUMP JUMPDEST SWAP1 POP PUSH3 0x1DCA DUP5 DUP5 PUSH3 0xDC2 JUMP JUMPDEST ISZERO PUSH3 0x1D75 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x211E JUMP JUMPDEST PUSH3 0x1E4E PUSH3 0xC68 JUMP JUMPDEST PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1E77 DUP3 PUSH3 0x2217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1EBF JUMPI PUSH3 0xAE0 DUP3 DUP3 PUSH3 0x2277 JUMP JUMPDEST PUSH3 0x931 PUSH3 0x22F3 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1233 DUP4 DUP4 PUSH3 0x211E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F29 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F14 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1F4F JUMPI PUSH3 0x1F4F PUSH3 0x2862 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1F6C PUSH3 0x2313 JUMP JUMPDEST PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1F94 PUSH3 0x1F62 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FA0 PUSH3 0x1783 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FDB PUSH3 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x2058 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x20A7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x20AC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xAE0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x20DD DUP4 DUP4 PUSH3 0x1D97 JUMP JUMPDEST PUSH3 0x2115 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x833 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x833 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1D75 JUMPI PUSH1 0x0 PUSH3 0x2145 PUSH1 0x1 DUP4 PUSH3 0x29D6 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x215B SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x29D6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x21C7 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x217F JUMPI PUSH3 0x217F PUSH3 0x2862 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x21A5 JUMPI PUSH3 0x21A5 PUSH3 0x2862 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x21DB JUMPI PUSH3 0x21DB PUSH3 0x29F8 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x833 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x2247 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x2296 SWAP2 SWAP1 PUSH3 0x2808 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x22D3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x22D8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x22EA DUP6 DUP4 DUP4 PUSH3 0x232F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x165D JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x231F PUSH3 0x1943 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x2348 JUMPI PUSH3 0x2342 DUP3 PUSH3 0x238A JUMP JUMPDEST PUSH3 0x1233 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2360 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x2383 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8A4 SWAP2 SWAP1 PUSH3 0x2448 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x239B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x23C2 SWAP1 PUSH3 0x2826 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x23D3 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB21 SWAP2 SWAP1 PUSH3 0x2401 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2A0F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2418 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2402 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x242F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x248C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1233 DUP3 PUSH3 0x245C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x24CA JUMPI PUSH3 0x24CA PUSH3 0x2497 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x24F5 JUMPI PUSH3 0x24F5 PUSH3 0x2497 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x250F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x253C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x2565 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDBA DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x25A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x25B6 PUSH1 0x20 DUP5 ADD PUSH3 0x245C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x25D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x25DE DUP4 PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x260C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x261D DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24AD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x2644 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x262A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x2667 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x2627 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1233 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x264D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x26CA JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x26AC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2713 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x271E DUP8 PUSH3 0x245C JUMP JUMPDEST SWAP6 POP PUSH3 0x272E PUSH1 0x20 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP5 POP PUSH3 0x273E PUSH1 0x40 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP4 POP PUSH3 0x274E PUSH1 0x60 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP3 POP PUSH3 0x275E PUSH1 0x80 DUP9 ADD PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x27CC JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x27B9 DUP6 DUP4 MLOAD PUSH3 0x264D JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x279A JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x27ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x27F8 DUP4 PUSH3 0x245C JUMP JUMPDEST SWAP2 POP PUSH3 0x25B6 PUSH1 0x20 DUP5 ADD PUSH3 0x245C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x281C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x2627 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x283B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x285C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xAE0 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x28A3 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x28C4 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28AF JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x28E8 JUMPI PUSH3 0x28E8 PUSH3 0x2497 JUMP JUMPDEST PUSH3 0x2900 DUP2 PUSH3 0x28F9 DUP5 SLOAD PUSH3 0x2826 JUMP JUMPDEST DUP5 PUSH3 0x2878 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x2938 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x291F JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x28C4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2969 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2948 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2988 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x29AD PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x264D JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x29CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x833 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C6343000818003330F3325E23B502DCE693B1 SELFBALANCE 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOBBASEFEE PUSH19 0x31D4CCF265A64D1DFD7340F540B8A8E32F7961 DUP14 SELFBALANCE 0xEB 0xE8 SWAP3 POP JUMPDEST 0x2D LOG3 STATICCALL 0xB1 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "2316:18022:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4047:76;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4047:76:47;;;;;160:25:55;;;148:2;133:18;4047:76:47;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;652:14:55;;645:22;627:41;;615:2;600:18;1695:212:1;487:187:55;17651:193:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15062:432::-;;;;;;;;;;-1:-1:-1;15062:432:47;;;;;:::i;:::-;;:::i;:::-;;19845:147;;;;;;;;;;-1:-1:-1;19845:147:47;;;;;:::i;:::-;;:::i;14266:201::-;;;;;;;;;;-1:-1:-1;14266:201:47;;;;;:::i;:::-;;:::i;16186:215::-;;;;;;;;;;-1:-1:-1;16186:215:47;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;13913:208:47:-;;;;;;;;;;-1:-1:-1;13913:208:47;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;5423:426:51:-;;;;;;;;;;-1:-1:-1;5423:426:51;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;18584:190:47:-;;;;;;;;;;;;;:::i;10893:75::-;;;;;;;;;;;;;:::i;3825:94::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3825:94:47;;3603:68;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3603:68:47;;4158:214:3;;;;;;:::i;:::-;;:::i;16646:178:47:-;;;;;;;;;;;;;:::i;3705:134:3:-;;;;;;;;;;;;;:::i;4894:396:51:-;;;;;;;;;;-1:-1:-1;4894:396:51;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2692:145:8:-;;;;;;;;;;;;;:::i;20185:151:47:-;;;;;;;;;;-1:-1:-1;20185:151:47;;;;;:::i;:::-;;:::i;17912:400::-;;;;;;;;;;-1:-1:-1;17912:400:47;;;;;:::i;:::-;;:::i;4542:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4542:68:47;;5990:213:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10745:71:47:-;;;;;;;;;;;;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;4300:94:47:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4300:94:47;;9591:975;;;;;;;;;;-1:-1:-1;9591:975:47;;;;;:::i;:::-;;:::i;14723:195::-;;;;;;;;;;;;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;1819:58:3;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;3353:68:47;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3353:68:47;;16889:340;;;;;;;;;;-1:-1:-1;16889:340:47;;;;;:::i;:::-;;:::i;6342:592:51:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15951:173:47:-;;;;;;;;;;;;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;2721:62:47:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2721:62:47;;2885:66;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2885:66:47;;19057:202;;;;;;;;;;-1:-1:-1;19057:202:47;;;;;:::i;:::-;;:::i;11738:199::-;;;;;;:::i;:::-;;:::i;1695:212:1:-;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;17651:193:47:-;17702:23;17737:33;17773:29;:27;:29::i;:::-;17819:18;;;-1:-1:-1;;;;;17819:18:47;;17651:193;-1:-1:-1;;17651:193:47:o;15062:432::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15169:17:47::1;-1:-1:-1::0;;;;;15169:29:47::1;;15202:1;15169:34:::0;15165:121:::1;;15257:17;15226:49;;-1:-1:-1::0;;;15226:49:47::1;;;;;;;;:::i;:::-;;;;;;;;15165:121;15296:25;15324:26;:24;:26::i;:::-;15296:54;;15360:44;15386:17;15360:25;:44::i;:::-;15469:17;-1:-1:-1::0;;;;;15419:68:47::1;15450:17;-1:-1:-1::0;;;;;15419:68:47::1;;;;;;;;;;;15155:339;15062:432:::0;;:::o;19845:147::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19952:33:47::1;19973:11;19952:20;:33::i;:::-;19845:147:::0;;:::o;14266:201::-;14325:4;14341:33;14377:29;:27;:29::i;:::-;-1:-1:-1;;;;;14423:25:47;;;;;;;:16;;;;:25;;-1:-1:-1;;14423:25:47;;;:37;;;;14266:201::o;16186:215::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16284:33:47::1;16320:29;:27;:29::i;:::-;16359:16;;:35:::0;;;;-1:-1:-1;;16186:215:47:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;13913:208:47:-;13980:7;13999:33;14035:29;:27;:29::i;:::-;-1:-1:-1;;;;;14081:25:47;;;;;;;:16;;;;:25;;;;;:33;;;;;;;;13913:208;-1:-1:-1;;13913:208:47:o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;5423:426:51:-;5511:19;5542:32;5577:28;:26;:28::i;:::-;5542:63;;5667:69;5722:11;5705:29;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5705:29:51;;;;;;;;;5695:40;;5705:29;5695:40;;;;5667:1;;:27;:69::i;:::-;5662:130;;5759:22;;-1:-1:-1;;;5759:22:51;;;;;;;;;;;5662:130;5809:1;:20;;5830:11;5809:33;;;;;;:::i;:::-;;;;;;;;;;;;;;5802:40;;;5423:426;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;18584:190:47:-;18634:22;18668:33;18704:29;:27;:29::i;:::-;18750:17;;;;18584:190;-1:-1:-1;;18584:190:47:o;10893:75::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10951:10:47::1;:8;:10::i;:::-;10893:75:::0;:::o;4158:214:3:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;16646:178:47:-:0;16701:7;16720:33;16756:29;:27;:29::i;:::-;16802:15;;;-1:-1:-1;;;;;16802:15:47;;16646:178;-1:-1:-1;;16646:178:47:o;3705:134:3:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:3;:::o;4894:396:51:-;4976:25;5013:32;5048:28;:26;:28::i;:::-;5013:63;-1:-1:-1;5138:40:51;5013:63;5166:11;5138:27;:40::i;:::-;5133:101;;5201:22;;-1:-1:-1;;;5201:22:51;;;;;;;;;;;5133:101;5250:33;;;;:20;;;:33;;;;;5243:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4894:396;;;:::o;2692:145:8:-;2739:4;2755:25;2783:21;:19;:21::i;:::-;2821:9;;;;2692:145;-1:-1:-1;;2692:145:8:o;20185:151:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20294:35:47::1;20317:11;20294:22;:35::i;17912:400::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;18024:29:47;::::1;18020:106;;18099:15;18076:39;;-1:-1:-1::0;;;18076:39:47::1;;;;;;;;:::i;18020:106::-;18136:26;18165:20;:18;:20::i;:::-;18136:49;;18195:36;18215:15;18195:19;:36::i;:::-;18289:15;-1:-1:-1::0;;;;;18246:59:47::1;18269:18;-1:-1:-1::0;;;;;18246:59:47::1;;;;;;;;;;;18010:302;17912:400:::0;;:::o;5990:213:51:-;6052:25;6089:32;6124:28;:26;:28::i;:::-;6089:63;-1:-1:-1;6169:27:51;6089:63;6169:25;:27::i;:::-;6162:34;;;5990:213;:::o;10745:71:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10801:8:47::1;:6;:8::i;2492:233:1:-:0;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;9591:975:47:-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;10033:17:47::1;:15;:17::i;:::-;10060:22;:20;:22::i;:::-;10092:24;:22;:24::i;:::-;10127:44;2362:4:0;10158:12:47::0;10127:10:::1;:44::i;:::-;;10181:31;-1:-1:-1::0;;;;;;;;;;;10205:6:47::1;10181:10;:31::i;:::-;;10222:35;-1:-1:-1::0;;;;;;;;;;;10248:8:47::1;10222:10;:35::i;:::-;;10267:37;-1:-1:-1::0;;;;;;;;;;;10294:9:47::1;10267:10;:37::i;:::-;;10315:33;10351:29;:27;:29::i;:::-;10391:18;::::0;::::1;:36:::0;;-1:-1:-1;;;;;;10391:36:47::1;-1:-1:-1::0;;;;;10391:36:47;::::1;;::::0;;10437:17:::1;::::0;::::1;:34:::0;;;10550:9:::1;-1:-1:-1::0;10531:16:47;;::::1;:28:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;7930:50:55;;5142:14:2;;7918:2:55;7903:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;9591:975:47;;;;;;:::o;14723:195::-;14780:7;14799:33;14835:29;:27;:29::i;:::-;14881:30;-1:-1:-1;;;;;14881:30:47;;14723:195;-1:-1:-1;;14723:195:47:o;16889:340::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16982:5:47::1;-1:-1:-1::0;;;;;16982:17:47::1;;17003:1;16982:22:::0;16978:93:::1;;17054:5;17027:33;;-1:-1:-1::0;;;17027:33:47::1;;;;;;;;:::i;16978:93::-;17081:16;17100:24;:22;:24::i;:::-;17081:43;;17134:30;17158:5;17134:23;:30::i;:::-;17216:5;-1:-1:-1::0;;;;;17179:43:47::1;17206:8;-1:-1:-1::0;;;;;17179:43:47::1;;;;;;;;;;;16968:261;16889:340:::0;;:::o;6342:592:51:-;6403:24;6439:32;6474:28;:26;:28::i;:::-;6439:63;-1:-1:-1;6580:30:51;6613:27;6439:63;6613:25;:27::i;:::-;6580:60;;6650:28;6694:13;:20;-1:-1:-1;;;;;6681:34:51;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:65;;6771:9;6766:132;6790:13;:20;6786:1;:24;6766:132;;;6849:1;:20;;:38;6870:13;6884:1;6870:16;;;;;;;;:::i;:::-;;;;;;;6849:38;;;;;;;;;;;6831:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;6844:1;6831:15;;;;;;;;:::i;:::-;;;;;;;;;;:56;6812:3;;6766:132;;;-1:-1:-1;6915:12:51;6342:592;-1:-1:-1;;;6342:592:51:o;15951:173:47:-;16000:7;16019:33;16055:29;:27;:29::i;:::-;16101:16;;;;15951:173;-1:-1:-1;;15951:173:47:o;2893:222:1:-;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;:::-;3072:36;2893:222;-1:-1:-1;;;2893:222:1:o;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;19057:202:47:-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19138:13:47::1;19154:19;:17;:19::i;:::-;19138:35;;19183:22;19202:2;19183:18;:22::i;:::-;19220:32;::::0;19249:2;;19242:5;;19220:32:::1;::::0;;;::::1;19128:131;19057:202:::0;;:::o;11738:199::-;11871:7;3251:21:9;:19;:21::i;:::-;2316:19:8::1;:17;:19::i;:::-;11897:33:47::2;11914:5;11921:8;11897:16;:33::i;:::-;11890:40;;3293:20:9::0;:18;:20::i;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1133:40:10;;;3602:36:0;1034:146:10;6470:186:47;6609:31;;6470:186::o;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;15500:213:47:-;15581:33;15617:29;:27;:29::i;:::-;15656:50;;-1:-1:-1;;;;;;15656:50:47;-1:-1:-1;;;;;15656:50:47;;;;;;;;;;;-1:-1:-1;15500:213:47:o;3358:601:51:-;3442:19;3491:11;3474:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;3464:40;;;;;;3442:62;;3515:32;3550:28;:26;:28::i;:::-;3515:63;-1:-1:-1;3639:10:51;3652:35;3515:63;3675:11;3652:22;:35::i;:::-;3639:48;;3703:5;3698:81;;3756:11;3731:37;;-1:-1:-1;;;3731:37:51;;;;;;;;:::i;3698:81::-;3789:33;;;;:20;;;:33;;;;;:47;3825:11;3789:33;:47;:::i;:::-;;3882:11;3846:1;:20;;3867:11;3846:33;;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;3909:43;3927:11;3940;3909:43;;;;;;;:::i;:::-;;;;;;;;3432:527;;;3358:601;:::o;2787:177:0:-;2920:28;;2787:177::o;3217:348:1:-;3303:4;3319:40;3362:36;:34;:36::i;:::-;3319:79;;3408:12;3423:31;3440:4;3446:7;3423:16;:31::i;:::-;3408:46;;3468:7;3464:71;;;3491:14;:20;;;;;;;;;;:33;;3516:7;3491:24;:33::i;:::-;;3551:7;3217:348;-1:-1:-1;;;;3217:348:1:o;1474:183:51:-;1611:30;;1474:183::o;6431:138:39:-;6511:4;6534:28;6544:3;6556:5;6534:9;:28::i;3668:353:1:-;3755:4;3771:40;3814:36;:34;:36::i;:::-;3771:79;;3860:12;3875:32;3893:4;3899:7;3875:17;:32::i;:::-;3860:47;;3921:7;3917:74;;;3944:14;:20;;;;;;;;;;:36;;3972:7;3944:27;:36::i;3674:178:8:-;2563:16;:14;:16::i;:::-;3732:25:::1;3760:21;:19;:21::i;:::-;3791:17:::0;;-1:-1:-1;;3791:17:8::1;::::0;;;-1:-1:-1;3823:22:8::1;966:10:7::0;3832:12:8::1;3823:22;;;;;;:::i;:::-;;;;;;;;3722:130;3674:178::o:0;4599:312:3:-;4679:4;-1:-1:-1;;;;;4688:6:3;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:3;:32;-1:-1:-1;;;;;;;;;;;2035:53:19;-1:-1:-1;;;;;2035:53:19;;1957:138;4749:32:3;-1:-1:-1;;;;;4749:42:3;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:3;;;;;;;;;;;4654:251;4599:312::o;11062:98:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6052:538:3:-;6169:17;-1:-1:-1;;;;;6151:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:3;;;;;;;;-1:-1:-1;;6151:52:3;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:3;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:3;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:3;;;;;160:25:55;;;133:18;;6312:34:3;14:177:55;6241:120:3;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:3;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:3;;;;;;;;;;;1147:162:8;1270:23;;1147:162::o;4175:586:51:-;4261:19;4310:11;4293:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;4283:40;;;;;;4261:62;;4334:32;4369:28;:26;:28::i;:::-;4334:63;-1:-1:-1;4461:12:51;4476:38;4334:63;4502:11;4476:25;:38::i;:::-;4461:53;;4530:7;4525:68;;4560:22;;-1:-1:-1;;;4560:22:51;;;;;;;;;;;4525:68;4610:33;;;;:20;;;:33;;;;;4603:40;;;:::i;:::-;4660:1;:20;;4681:11;4660:33;;;;;;:::i;:::-;;;;;;;;;;;;;4653:40;;;4709:45;4729:11;4742;4709:45;;;;;;;:::i;18318:190:47:-;18390:33;18426:29;:27;:29::i;:::-;18465:18;;:36;;-1:-1:-1;;;;;;18465:36:47;-1:-1:-1;;;;;18465:36:47;;;;;;;;;;;-1:-1:-1;18318:190:47:o;7776:300:39:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;3366:176:8:-;2316:19;:17;:19::i;:::-;3425:25:::1;3453:21;:19;:21::i;:::-;3484:16:::0;;-1:-1:-1;;3484:16:8::1;3496:4;3484:16;::::0;;3425:49;-1:-1:-1;3515:20:8::1;3522:12;966:10:7::0;;887:96;1250:207:1;1403:38;;1250:207::o;9574:156:39:-;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;8737:170:2:-;8870:21;;8737:170::o;1836:97:8:-;6931:20:2;:18;:20::i;:::-;1899:27:8::1;:25;:27::i;3231:65:0:-:0;6931:20:2;:18;:20::i;17235:172:47:-;17302:33;17338:29;:27;:29::i;:::-;17377:15;;:23;;-1:-1:-1;;;;;;17377:23:47;-1:-1:-1;;;;;17377:23:47;;;;;;;;;;;-1:-1:-1;17235:172:47:o;9117:115:39:-;9180:7;9206:19;9214:3;4556:18;;4474:107;19265:162:47;19323:33;19359:29;:27;:29::i;:::-;19398:17;;:22;;;;-1:-1:-1;19265:162:47:o;3326:384:9:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:9;3522:88;;3569:30;;-1:-1:-1;;;3569:30:9;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;2905:128:8:-;2970:8;:6;:8::i;:::-;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:8;;;;;;;;;;;12016:1571:47;12092:7;-1:-1:-1;;;;;12133:19:47;;12129:85;;12197:5;12175:28;;-1:-1:-1;;;12175:28:47;;;;;;;;:::i;12129:85::-;12224:21;12248:18;:16;:18::i;:::-;12224:42;;12326:13;12314:9;:25;12310:111;;;12362:48;;-1:-1:-1;;;12362:48:47;;;;;10977:25:55;;;12400:9:47;11018:18:55;;;11011:34;10950:18;;12362:48:47;10803:248:55;12310:111:47;12431:35;12469:26;:24;:26::i;:::-;12431:64;;12509:27;-1:-1:-1;;;;;12509:39:47;;12552:1;12509:44;12505:141;;12607:27;12576:59;;-1:-1:-1;;;12576:59:47;;;;;;;;:::i;12505:141::-;12656:20;12679:24;:22;:24::i;:::-;12656:47;;12717:12;-1:-1:-1;;;;;12717:24:47;;12745:1;12717:29;12713:107;;12796:12;12769:40;;-1:-1:-1;;;12769:40:47;;;;;;;;:::i;12713:107::-;12899:27;12946;12929:49;;;;;:::i;:::-;-1:-1:-1;;;;;11285:32:55;;;11267:51;;11354:2;11349;11334:18;;11327:30;;;-1:-1:-1;11373:18:55;;;11366:29;11427:2;11412:18;12929:49:47;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13025:107:47;;-1:-1:-1;;;13025:107:47;;13080:4;13025:107;;;11738:34:55;-1:-1:-1;;;;;11808:15:55;;;11788:18;;;11781:43;11840:18;;;11833:34;;;11903:15;;;11883:18;;;11876:43;11956:15;;;11935:19;;;11928:44;12899:79:47;;-1:-1:-1;13025:46:47;;;;;;11672:19:55;;13025:107:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13229:57:47;;;;;;;;;13258:4;13229:57;;13273:10;13229:57;;;;13186:101;;-1:-1:-1;13212:14:47;;-1:-1:-1;13186:17:47;:101::i;:::-;13330:51;-1:-1:-1;;;;;;;;;;;13365:14:47;13330:10;:51::i;:::-;-1:-1:-1;13438:44:47;-1:-1:-1;;;;;13438:33:47;;13472:9;13438:33;:44::i;:::-;13498:41;;-1:-1:-1;;;;;13498:41:47;;;;;;;;13565:14;12016:1571;-1:-1:-1;;;;;;12016:1571:47:o;3716:283:9:-;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:9:o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:0;;-1:-1:-1;;;;;12175:32:55;;4514:47:0;;;12157:51:55;12224:18;;;12217:34;;;12130:18;;4514:47:0;11983:274:55;5930:123:39;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8316:150:39;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:39;;8409:4;:50::i;4264:129::-;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8634:156:39;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:39;;8730:7;:53::i;3105:126:8:-;3168:8;:6;:8::i;:::-;3163:62;;3199:15;;-1:-1:-1;;;3199:15:8;;;;;;;;;;;2779:335:19;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:19;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;6221:129:39:-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;1939:156:8;6931:20:2;:18;:20::i;:::-;2012:25:8::1;2040:21;:19;:21::i;:::-;2071:17:::0;;-1:-1:-1;;2071:17:8::1;::::0;;-1:-1:-1;1939:156:8:o;2251:183:9:-;2388:30;;2251:183::o;13593:204:47:-;13683:33;13719:29;:27;:29::i;:::-;-1:-1:-1;;;;;13758:25:47;;;;;;;:16;;;;:25;;;;;;;;:32;;;;;;;;;;;;;;-1:-1:-1;;;;;;13758:32:47;;;;;;;-1:-1:-1;;;;;;13758:32:47;;;;;;;;;;;-1:-1:-1;13593:204:47:o;1531:331:31:-;1640:6;1616:21;:30;1612:109;;;1704:4;1669:41;;-1:-1:-1;;;1669:41:31;;;;;;;;:::i;1612:109::-;1732:12;1750:9;-1:-1:-1;;;;;1750:14:31;1772:6;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:52;;;1798:7;1793:63;;1828:17;;-1:-1:-1;;;1828:17:31;;;;;;;;;;;2241:406:39;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:39;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:39;2618:12;;2815:1368;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:39;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;2186:281:19;2263:17;-1:-1:-1;;;;;2263:29:19;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:19;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:19;;-1:-1:-1;;;;;;2387:73:19;-1:-1:-1;;;;;2387:73:19;;;;;;;;;;2186:281::o;4106:253:31:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:31;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:31:o;6598:122:19:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:19;;;;;;;;;;;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;4625:582:31:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:31;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:31;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:31;4625:582;-1:-1:-1;;4625:582:31:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:31;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;196:286:55:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:55;;391:43;;381:71;;448:1;445;438:12;679:203;-1:-1:-1;;;;;843:32:55;;;;825:51;;813:2;798:18;;679:203::o;887:173::-;955:20;;-1:-1:-1;;;;;1004:31:55;;994:42;;984:70;;1050:1;1047;1040:12;984:70;887:173;;;:::o;1065:186::-;1124:6;1177:2;1165:9;1156:7;1152:23;1148:32;1145:52;;;1193:1;1190;1183:12;1145:52;1216:29;1235:9;1216:29;:::i;1256:127::-;1317:10;1312:3;1308:20;1305:1;1298:31;1348:4;1345:1;1338:15;1372:4;1369:1;1362:15;1388:632;1453:5;-1:-1:-1;;;;;1513:14:55;;;1510:40;;;1530:18;;:::i;:::-;1605:2;1599:9;1573:2;1659:15;;-1:-1:-1;;1655:24:55;;;1681:2;1651:33;1647:42;1635:55;;;1705:18;;;1725:22;;;1702:46;1699:72;;;1751:18;;:::i;:::-;1791:10;1787:2;1780:22;1820:6;1811:15;;1850:6;1842;1835:22;1890:3;1881:6;1876:3;1872:16;1869:25;1866:45;;;1907:1;1904;1897:12;1866:45;1957:6;1952:3;1945:4;1937:6;1933:17;1920:44;2012:1;2005:4;1996:6;1988;1984:19;1980:30;1973:41;;;;1388:632;;;;;:::o;2025:451::-;2094:6;2147:2;2135:9;2126:7;2122:23;2118:32;2115:52;;;2163:1;2160;2153:12;2115:52;2190:23;;-1:-1:-1;;;;;2225:30:55;;2222:50;;;2268:1;2265;2258:12;2222:50;2291:22;;2344:4;2336:13;;2332:27;-1:-1:-1;2322:55:55;;2373:1;2370;2363:12;2322:55;2396:74;2462:7;2457:2;2444:16;2439:2;2435;2431:11;2396:74;:::i;2481:180::-;2540:6;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;-1:-1:-1;2632:23:55;;2481:180;-1:-1:-1;2481:180:55:o;2851:254::-;2919:6;2927;2980:2;2968:9;2959:7;2955:23;2951:32;2948:52;;;2996:1;2993;2986:12;2948:52;3032:9;3019:23;3009:33;;3061:38;3095:2;3084:9;3080:18;3061:38;:::i;:::-;3051:48;;2851:254;;;;;:::o;3292:524::-;3369:6;3377;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;3469:29;3488:9;3469:29;:::i;:::-;3459:39;-1:-1:-1;3549:2:55;3534:18;;3521:32;-1:-1:-1;;;;;3565:30:55;;3562:50;;;3608:1;3605;3598:12;3562:50;3631:22;;3684:4;3676:13;;3672:27;-1:-1:-1;3662:55:55;;3713:1;3710;3703:12;3662:55;3736:74;3802:7;3797:2;3784:16;3779:2;3775;3771:11;3736:74;:::i;:::-;3726:84;;;3292:524;;;;;:::o;3821:250::-;3906:1;3916:113;3930:6;3927:1;3924:13;3916:113;;;4006:11;;;4000:18;3987:11;;;3980:39;3952:2;3945:10;3916:113;;;-1:-1:-1;;4063:1:55;4045:16;;4038:27;3821:250::o;4076:271::-;4118:3;4156:5;4150:12;4183:6;4178:3;4171:19;4199:76;4268:6;4261:4;4256:3;4252:14;4245:4;4238:5;4234:16;4199:76;:::i;:::-;4329:2;4308:15;-1:-1:-1;;4304:29:55;4295:39;;;;4336:4;4291:50;;4076:271;-1:-1:-1;;4076:271:55:o;4352:220::-;4501:2;4490:9;4483:21;4464:4;4521:45;4562:2;4551:9;4547:18;4539:6;4521:45;:::i;4577:632::-;4748:2;4800:21;;;4870:13;;4773:18;;;4892:22;;;4719:4;;4748:2;4971:15;;;;4945:2;4930:18;;;4719:4;5014:169;5028:6;5025:1;5022:13;5014:169;;;5089:13;;5077:26;;5158:15;;;;5123:12;;;;5050:1;5043:9;5014:169;;;-1:-1:-1;5200:3:55;;4577:632;-1:-1:-1;;;;;;4577:632:55:o;5214:248::-;5282:6;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;-1:-1:-1;;5382:23:55;;;5452:2;5437:18;;;5424:32;;-1:-1:-1;5214:248:55:o;5467:553::-;5571:6;5579;5587;5595;5603;5611;5664:3;5652:9;5643:7;5639:23;5635:33;5632:53;;;5681:1;5678;5671:12;5632:53;5704:29;5723:9;5704:29;:::i;:::-;5694:39;;5752:38;5786:2;5775:9;5771:18;5752:38;:::i;:::-;5742:48;;5809:38;5843:2;5832:9;5828:18;5809:38;:::i;:::-;5799:48;;5866:38;5900:2;5889:9;5885:18;5866:38;:::i;:::-;5856:48;;5923:39;5957:3;5946:9;5942:19;5923:39;:::i;:::-;5913:49;;6009:3;5998:9;5994:19;5981:33;5971:43;;5467:553;;;;;;;;:::o;6025:803::-;6187:4;6216:2;6256;6245:9;6241:18;6286:2;6275:9;6268:21;6309:6;6344;6338:13;6375:6;6367;6360:22;6413:2;6402:9;6398:18;6391:25;;6475:2;6465:6;6462:1;6458:14;6447:9;6443:30;6439:39;6425:53;;6513:2;6505:6;6501:15;6534:1;6544:255;6558:6;6555:1;6552:13;6544:255;;;6651:2;6647:7;6635:9;6627:6;6623:22;6619:36;6614:3;6607:49;6679:40;6712:6;6703;6697:13;6679:40;:::i;:::-;6669:50;-1:-1:-1;6777:12:55;;;;6742:15;;;;6580:1;6573:9;6544:255;;;-1:-1:-1;6816:6:55;;6025:803;-1:-1:-1;;;;;;;6025:803:55:o;6833:260::-;6901:6;6909;6962:2;6950:9;6941:7;6937:23;6933:32;6930:52;;;6978:1;6975;6968:12;6930:52;7001:29;7020:9;7001:29;:::i;:::-;6991:39;;7049:38;7083:2;7072:9;7068:18;7049:38;:::i;7098:289::-;7229:3;7267:6;7261:13;7283:66;7342:6;7337:3;7330:4;7322:6;7318:17;7283:66;:::i;:::-;7365:16;;;;;7098:289;-1:-1:-1;;7098:289:55:o;7392:380::-;7471:1;7467:12;;;;7514;;;7535:61;;7589:4;7581:6;7577:17;7567:27;;7535:61;7642:2;7634:6;7631:14;7611:18;7608:38;7605:161;;7688:10;7683:3;7679:20;7676:1;7669:31;7723:4;7720:1;7713:15;7751:4;7748:1;7741:15;7605:161;;7392:380;;;:::o;7991:127::-;8052:10;8047:3;8043:20;8040:1;8033:31;8083:4;8080:1;8073:15;8107:4;8104:1;8097:15;8249:543;8351:2;8346:3;8343:11;8340:446;;;8387:1;8411:5;8408:1;8401:16;8455:4;8452:1;8442:18;8525:2;8513:10;8509:19;8506:1;8502:27;8496:4;8492:38;8561:4;8549:10;8546:20;8543:47;;;-1:-1:-1;8584:4:55;8543:47;8639:2;8634:3;8630:12;8627:1;8623:20;8617:4;8613:31;8603:41;;8694:82;8712:2;8705:5;8702:13;8694:82;;;8757:17;;;8738:1;8727:13;8694:82;;;8698:3;;;8249:543;;;:::o;8968:1345::-;9088:10;;-1:-1:-1;;;;;9110:30:55;;9107:56;;;9143:18;;:::i;:::-;9172:97;9262:6;9222:38;9254:4;9248:11;9222:38;:::i;:::-;9216:4;9172:97;:::i;:::-;9324:4;;9381:2;9370:14;;9398:1;9393:663;;;;10100:1;10117:6;10114:89;;;-1:-1:-1;10169:19:55;;;10163:26;10114:89;-1:-1:-1;;8925:1:55;8921:11;;;8917:24;8913:29;8903:40;8949:1;8945:11;;;8900:57;10216:81;;9363:944;;9393:663;8196:1;8189:14;;;8233:4;8220:18;;-1:-1:-1;;9429:20:55;;;9547:236;9561:7;9558:1;9555:14;9547:236;;;9650:19;;;9644:26;9629:42;;9742:27;;;;9710:1;9698:14;;;;9577:19;;9547:236;;;9551:3;9811:6;9802:7;9799:19;9796:201;;;9872:19;;;9866:26;-1:-1:-1;;9955:1:55;9951:14;;;9967:3;9947:24;9943:37;9939:42;9924:58;9909:74;;9796:201;-1:-1:-1;;;;;10043:1:55;10027:14;;;10023:22;10010:36;;-1:-1:-1;8968:1345:55:o;10318:291::-;10495:2;10484:9;10477:21;10458:4;10515:45;10556:2;10545:9;10541:18;10533:6;10515:45;:::i;:::-;10507:53;;10596:6;10591:2;10580:9;10576:18;10569:34;10318:291;;;;;:::o;10614:184::-;10684:6;10737:2;10725:9;10716:7;10712:23;10708:32;10705:52;;;10753:1;10750;10743:12;10705:52;-1:-1:-1;10776:16:55;;10614:184;-1:-1:-1;10614:184:55:o;12472:225::-;12539:9;;;12560:11;;;12557:134;;;12613:10;12608:3;12604:20;12601:1;12594:31;12648:4;12645:1;12638:15;12676:4;12673:1;12666:15;12702:127;12763:10;12758:3;12754:20;12751:1;12744:31;12794:4;12791:1;12784:15;12818:4;12815:1;12808:15" + }, + "methodIdentifiers": { + "CMACCOUNT_ROLE()": "7fa34657", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DEVELOPER_WALLET_ADMIN_ROLE()": "40df8d84", + "FEE_ADMIN_ROLE()": "4cba593a", + "PAUSER_ROLE()": "e63ab1e9", + "PREFUND_ADMIN_ROLE()": "01601d2f", + "SERVICE_REGISTRY_ADMIN_ROLE()": "92cf833f", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "VERSIONER_ROLE()": "b289819c", + "createCMAccount(address,address)": "fd2fbd52", + "getAccountImplementation()": "9d825bc5", + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getBookingTokenAddress()": "4f3f4639", + "getCMAccountCreator(address)": "2cec1a06", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getPrefundAmount()": "c39409e1", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address,address,address,uint256)": "95b6ef0c", + "isCMAccount(address)": "12b357b5", + "pause()": "8456cb59", + "paused()": "5c975abb", + "proxiableUUID()": "52d1902d", + "registerService(string)": "0d6115d0", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setAccountImplementation(address)": "09766da2", + "setBookingTokenAddress(address)": "c17e30bf", + "setDeveloperFeeBp(uint256)": "f85b4a9c", + "setDeveloperWallet(address)": "6cd56878", + "setPrefundAmount(uint256)": "1c2b3afc", + "supportsInterface(bytes4)": "01ffc9a7", + "unpause()": "3f4ba83a", + "unregisterService(string)": "5e818619", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sended\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"}],\"name\":\"InvalidBookingTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"InvalidDeveloperWallet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldBookingToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBookingToken\",\"type\":\"address\"}],\"name\":\"BookingTokenAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"CMAccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldDeveloperFeeBp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDeveloperFeeBp\",\"type\":\"uint256\"}],\"name\":\"DeveloperFeeBpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDeveloperWallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeveloperWallet\",\"type\":\"address\"}],\"name\":\"DeveloperWalletUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"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\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CMACCOUNT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEVELOPER_WALLET_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREFUND_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_REGISTRY_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSIONER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"createCMAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCMAccountCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"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\":\"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\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"versioner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"registerService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"setAccountImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setBookingTokenAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bp\",\"type\":\"uint256\"}],\"name\":\"setDeveloperFeeBp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"setDeveloperWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrefundAmount\",\"type\":\"uint256\"}],\"name\":\"setPrefundAmount\",\"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\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"unregisterService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"https://r.xyz/program/camino-network\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CMAccountInvalidAdmin(address)\":[{\"params\":{\"admin\":\"The admin address\"}}],\"CMAccountInvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The implementation address of the CMAccount\"}}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"params\":{\"expected\":\"The expected pre fund amount\"}}],\"InvalidBookingTokenAddress(address)\":[{\"params\":{\"bookingToken\":\"The booking token address\"}}],\"InvalidDeveloperWallet(address)\":[{\"params\":{\"developerWallet\":\"The developer wallet address\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"params\":{\"newBookingToken\":\"The new booking token address\",\"oldBookingToken\":\"The old booking token address\"}},\"CMAccountCreated(address)\":{\"params\":{\"account\":\"The address of the new CMAccount\"}},\"CMAccountImplementationUpdated(address,address)\":{\"params\":{\"newImplementation\":\"The new implementation address\",\"oldImplementation\":\"The old implementation address\"}},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"params\":{\"newDeveloperFeeBp\":\"The new developer fee basis points\",\"oldDeveloperFeeBp\":\"The old developer fee basis points\"}},\"DeveloperWalletUpdated(address,address)\":{\"params\":{\"newDeveloperWallet\":\"The new developer wallet address\",\"oldDeveloperWallet\":\"The old developer wallet address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createCMAccount(address,address)\":{\"details\":\"Emits a {CMAccountCreated} event.\"},\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getCMAccountCreator(address)\":{\"params\":{\"account\":\"The account address\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The account address to check\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAccountImplementation(address)\":{\"params\":{\"newImplementation\":\"The new implementation address\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unregisterService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Camino Messenger Account Manager\",\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountInvalidAdmin(address)\":[{\"notice\":\"The admin address is invalid.\"}],\"CMAccountInvalidImplementation(address)\":[{\"notice\":\"The implementation of the CMAccount is invalid.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"notice\":\"Incorrect pre fund amount.\"}],\"InvalidBookingTokenAddress(address)\":[{\"notice\":\"Invalid booking token address.\"}],\"InvalidDeveloperWallet(address)\":[{\"notice\":\"Invalid developer address.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"notice\":\"Booking token address updated event.\"},\"CMAccountCreated(address)\":{\"notice\":\"CM Account created event.\"},\"CMAccountImplementationUpdated(address,address)\":{\"notice\":\"CM Account implementation address updated event.\"},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"notice\":\"Developer fee basis points updated event.\"},\"DeveloperWalletUpdated(address,address)\":{\"notice\":\"Developer wallet address updated event.\"}},\"kind\":\"user\",\"methods\":{\"CMACCOUNT_ROLE()\":{\"notice\":\"This role is granted to the created CM Accounts. It is used to keep an enumerable list of CM Accounts.\"},\"DEVELOPER_WALLET_ADMIN_ROLE()\":{\"notice\":\"Developer wallet admin role can set the developer wallet address which is used to receive the developer fee.\"},\"FEE_ADMIN_ROLE()\":{\"notice\":\"Fee admin role can set the developer fee basis points which used for calculating the developer fee that is cut from the cheque payments.\"},\"PAUSER_ROLE()\":{\"notice\":\"Pauser role can pause the contract. Currently this only affects the creation of CM Accounts. When paused, account creation is stopped.\"},\"PREFUND_ADMIN_ROLE()\":{\"notice\":\"Prefund admin role can set the mandatory prefund amount for {CMAccount} contracts.\"},\"SERVICE_REGISTRY_ADMIN_ROLE()\":{\"notice\":\"Service registry admin role can add and remove services to the service registry mapping. Implemented by {ServiceRegistry} contract.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"VERSIONER_ROLE()\":{\"notice\":\"Versioner role can set new {CMAccount} implementation address. When a new implementation address is set, it is used for the new {CMAccount} creations. The old {CMAccount} contracts are not affected by this. Owners of those should do the upgrade manually by calling the `upgradeToAndCall(address)` function on the account.\"},\"createCMAccount(address,address)\":{\"notice\":\"Creates CMAccount by deploying a ERC1967Proxy with the CMAccount implementation from the manager. Because this function is deploying a contract, it reverts if the caller is not KYC or KYB verified. (For EOAs only) Caller must send the pre-fund amount with the transaction.\"},\"getAccountImplementation()\":{\"notice\":\"Returns the CMAccount implementation address.\"},\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getCMAccountCreator(address)\":{\"notice\":\"Returns the given account's creator.\"},\"getDeveloperFeeBp()\":{\"notice\":\"Returns developer fee in basis points.\"},\"getDeveloperWallet()\":{\"notice\":\"Returns developer wallet address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"},\"isCMAccount(address)\":{\"notice\":\"Check if an address is CMAccount created by the manager.\"},\"pause()\":{\"notice\":\"Pauses the CMAccountManager contract. Currently this only affects the creation of CMAccount. When paused, account creation is stopped.\"},\"registerService(string)\":{\"notice\":\"Registers a given service name. CM Accounts can only register services if they are also registered in the service registry on the manager contract.\"},\"setAccountImplementation(address)\":{\"notice\":\"Set a new CMAccount implementation address.\"},\"setBookingTokenAddress(address)\":{\"notice\":\"Sets booking token address.\"},\"setDeveloperFeeBp(uint256)\":{\"notice\":\"Sets developer fee in basis points. A basis point (bp) is one hundredth of 1 percentage point. 1 bp = 0.01%, 1/10,000\\u2060, or 0.0001. 10 bp = 0.1%, 1/1,000\\u2060, or 0.001. 100 bp = 1%, \\u20601/100\\u2060, or 0.01.\"},\"setDeveloperWallet(address)\":{\"notice\":\"Sets developer wallet address.\"},\"setPrefundAmount(uint256)\":{\"notice\":\"Sets the prefund amount.\"},\"unpause()\":{\"notice\":\"Unpauses the CMAccountManager contract.\"},\"unregisterService(string)\":{\"notice\":\"Unregisters a given service name. CM Accounts will not be able to register the service anymore.\"}},\"notice\":\"This contract manages the creation of the Camino Messenger accounts by deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation address. Create CM Account: Users who want to create an account should call `createCMAccount(address admin, address upgrader)` function with addresses of the accounts admin and upgrader roles and also send the pre fund amount, which is currently set as 100 CAMs. When the manager contract is paused, account creation is stopped. Developer Fee: This contracts also keeps the info about the developer wallet and fee basis points. Which are used during the cheque cash in to pay for the developer fee. Service Registry: {CMAccountManager} also acts as a registry for the services that {CMAccount} contracts add as a supported or wanted service. Registry works by hashing (keccak256) the service name (string) and creating a mapping as keccak256(serviceName) => serviceName. And provides functions that {CMAccount} function uses to register services. The {CMAccount} only keeps the hashes (byte32) of the registered services.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/CMAccountManager.sol\":\"CMAccountManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0x95dc0274f6c1574ab3cabaa226954bdffb2b2bef1c49946bccc54c7f33f38c38\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f558dafbd05517ae04495df2e38fc10dc3453bf94992aa946da76ba0f7192a18\",\"dweb:/ipfs/QmemMRVzK2y9dedXEquuPfEvLSm4gTrGC8nzgM53m2bVc7\"]},\"contracts/manager/CMAccountManager.sol\":{\"keccak256\":\"0x8e734c5a49d18eda71876dd93c0aaf5543ddf667c16bc9008143b087be3d1c31\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5acc8f7404bb36bd63ae7dc8f6ab4d30e0318c498ce213c0400fdd23bfb99c82\",\"dweb:/ipfs/QmeGgW7XjyEXx7XTynFZqJJC5LPih4iYP9HfrsCPiU5uGF\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0x804054c0aba93f14476df8cb285607c0d237384e8c4b0e27da12c761ba825e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e1aabe23091166c25d92953149f9d1192b354394509e51c1600bf09ecdbb5fc\",\"dweb:/ipfs/QmWKvc1DhmMEBeemGSZiAxKjFpzfQemcP4AQXyo3TBjLab\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/ICMAccountManager.sol": { + "ICMAccountManager": { + "abi": [ + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAccountImplementation()": "9d825bc5", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "isCMAccount(address)": "12b357b5" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/ICMAccountManager.sol\":\"ICMAccountManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/test/CMAccountManagerV2.sol": { + "CMAccountManagerV2": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "CMAccountInvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "CMAccountInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sended", + "type": "uint256" + } + ], + "name": "IncorrectPrefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + } + ], + "name": "InvalidBookingTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "InvalidDeveloperWallet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldBookingToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newBookingToken", + "type": "address" + } + ], + "name": "BookingTokenAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CMAccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldDeveloperFeeBp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newDeveloperFeeBp", + "type": "uint256" + } + ], + "name": "DeveloperFeeBpUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldDeveloperWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDeveloperWallet", + "type": "address" + } + ], + "name": "DeveloperWalletUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "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": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CMACCOUNT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FEE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PREFUND_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSIONER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "createCMAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCMAccountCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "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": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "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": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "pauser", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + }, + { + "internalType": "address", + "name": "versioner", + "type": "address" + }, + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "registerService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "newImplementation", + "type": "address" + } + ], + "name": "setAccountImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setBookingTokenAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bp", + "type": "uint256" + } + ], + "name": "setDeveloperFeeBp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "setDeveloperWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrefundAmount", + "type": "uint256" + } + ], + "name": "setPrefundAmount", + "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": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "unregisterService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_11171": { + "entryPoint": null, + "id": 11171, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_785": { + "entryPoint": 38, + "id": 785, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_816": { + "entryPoint": null, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:55", + "nodeType": "YulBlock", + "src": "0:216:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:55", + "nodeType": "YulBlock", + "src": "113:101:55", + "statements": [ + { + "nativeSrc": "123:26:55", + "nodeType": "YulAssignment", + "src": "123:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:55", + "nodeType": "YulIdentifier", + "src": "135:9:55" + }, + { + "kind": "number", + "nativeSrc": "146:2:55", + "nodeType": "YulLiteral", + "src": "146:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:55", + "nodeType": "YulIdentifier", + "src": "131:3:55" + }, + "nativeSrc": "131:18:55", + "nodeType": "YulFunctionCall", + "src": "131:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:55", + "nodeType": "YulIdentifier", + "src": "123:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:55", + "nodeType": "YulIdentifier", + "src": "165:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:55", + "nodeType": "YulIdentifier", + "src": "180:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:55", + "nodeType": "YulLiteral", + "src": "196:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:55", + "nodeType": "YulLiteral", + "src": "200:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:55", + "nodeType": "YulIdentifier", + "src": "192:3:55" + }, + "nativeSrc": "192:10:55", + "nodeType": "YulFunctionCall", + "src": "192:10:55" + }, + { + "kind": "number", + "nativeSrc": "204:1:55", + "nodeType": "YulLiteral", + "src": "204:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:55", + "nodeType": "YulIdentifier", + "src": "188:3:55" + }, + "nativeSrc": "188:18:55", + "nodeType": "YulFunctionCall", + "src": "188:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:55", + "nodeType": "YulIdentifier", + "src": "176:3:55" + }, + "nativeSrc": "176:31:55", + "nodeType": "YulFunctionCall", + "src": "176:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:55", + "nodeType": "YulIdentifier", + "src": "158:6:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulFunctionCall", + "src": "158:50:55" + }, + "nativeSrc": "158:50:55", + "nodeType": "YulExpressionStatement", + "src": "158:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:55", + "nodeType": "YulTypedName", + "src": "82:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:55", + "nodeType": "YulTypedName", + "src": "93:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:55", + "nodeType": "YulTypedName", + "src": "104:4:55", + "type": "" + } + ], + "src": "14:200:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612fa862000104600039600081816115f30152818161161d01526117780152612fa86000f3fe608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e55780630d8e6e2c146200030a57806312b357b514620003415780631c2b3afc1462000366578063248a9ca3146200038b5780632cec1a0614620003b05780632f2ff15d14620003d5578063352af39a14620003fa57806336568abe146200041f5780633c55593814620004445780633f4ba83a146200045c57806340df8d8414620004745780634cba593a14620004995780634f1ef28614620004be5780634f3f463914620004d557806352d1902d14620004ed5780635a81a62614620005055780635c975abb146200052a5780635e81861914620005425780636cd5687814620005675780637fa34657146200058c5780638127f46514620005b15780638456cb5914620005d85780639010d07c14620005f057806391d14854146200061557806392cf833f146200063a57806395b6ef0c146200065f5780639d825bc51462000684578063a217fddf146200069c578063ad3cb1cc14620006b3578063b289819c14620006e6578063c17e30bf146200070b578063c2a1db781462000730578063c39409e11462000757578063ca15c873146200076f578063d547741f1462000794578063e63ab1e914620007b9578063f72c0d8b14620007de578063f85b4a9c1462000803578063fd2fbd521462000828575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002e5383398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b50620002866200028036600462002450565b6200083f565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af6200086d565b6040516200025891906200247c565b348015620002cb57600080fd5b50620002e3620002dd366004620024ad565b6200088d565b005b348015620002f257600080fd5b50620002e3620003043660046200255d565b6200093f565b3480156200031757600080fd5b506040805180820190915260028152612b1960f11b60208201525b604051620002589190620025fe565b3480156200034e57600080fd5b506200028662000360366004620024ad565b62000969565b3480156200037357600080fd5b50620002e36200038536600462002613565b6200099b565b3480156200039857600080fd5b506200024e620003aa36600462002613565b620009cd565b348015620003bd57600080fd5b50620002af620003cf366004620024ad565b620009ef565b348015620003e257600080fd5b50620002e3620003f43660046200262d565b62000a27565b3480156200040757600080fd5b506200024e620004193660046200255d565b62000a4f565b3480156200042c57600080fd5b50620002e36200043e3660046200262d565b62000ade565b3480156200045157600080fd5b506200024e62000b19565b3480156200046957600080fd5b50620002e362000b30565b3480156200048157600080fd5b506200024e60008051602062002f3383398151915281565b348015620004a657600080fd5b506200024e60008051602062002e9383398151915281565b620002e3620004cf3660046200265c565b62000b58565b348015620004e257600080fd5b50620002af62000b79565b348015620004fa57600080fd5b506200024e62000b99565b3480156200051257600080fd5b50620003326200052436600462002613565b62000bb9565b3480156200053757600080fd5b506200028662000c9c565b3480156200054f57600080fd5b50620002e3620005613660046200255d565b62000cb3565b3480156200057457600080fd5b50620002e362000586366004620024ad565b62000cd9565b3480156200059957600080fd5b506200024e60008051602062002f5383398151915281565b348015620005be57600080fd5b50620005c962000d7e565b604051620002589190620026c4565b348015620005e557600080fd5b50620002e362000d9f565b348015620005fd57600080fd5b50620002af6200060f3660046200270a565b62000dc4565b3480156200062257600080fd5b5062000286620006343660046200262d565b62000df6565b3480156200064757600080fd5b506200024e60008051602062002e7383398151915281565b3480156200066c57600080fd5b50620002e36200067e3660046200272d565b62000e2e565b3480156200069157600080fd5b50620002af62000fec565b348015620006a957600080fd5b506200024e600081565b348015620006c057600080fd5b5062000332604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006f357600080fd5b506200024e60008051602062002eb383398151915281565b3480156200071857600080fd5b50620002e36200072a366004620024ad565b62001009565b3480156200073d57600080fd5b5062000748620010b2565b604051620002589190620027a5565b3480156200076457600080fd5b506200024e62001227565b3480156200077c57600080fd5b506200024e6200078e36600462002613565b6200123e565b348015620007a157600080fd5b50620002e3620007b33660046200262d565b6200126e565b348015620007c657600080fd5b506200024e60008051602062002f1383398151915281565b348015620007eb57600080fd5b506200024e60008051602062002ed383398151915281565b3480156200081057600080fd5b50620002e36200082236600462002613565b62001290565b620002af620008393660046200280d565b620012f6565b60006001600160e01b03198216635a05180f60e01b1480620008675750620008678262001324565b92915050565b6000806200087a6200135b565b600201546001600160a01b031692915050565b60008051602062002eb3833981519152620008a8816200137f565b816001600160a01b03163b600003620008e157816040516337766f4360e11b8152600401620008d891906200247c565b60405180910390fd5b6000620008ed62000fec565b9050620008fa836200138b565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002e738339815191526200095a816200137f565b6200096582620013b9565b5050565b600080620009766200135b565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002e53833981519152620009b6816200137f565b6000620009c26200135b565b600101929092555050565b600080620009da620014ac565b60009384526020525050604090206001015490565b600080620009fc6200135b565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3282620009cd565b62000a3d816200137f565b62000a498383620014d0565b50505050565b60008062000a5c62001519565b905062000a958360405160200162000a7591906200283c565b60408051601f19818403018152919052805160209091012082906200153d565b62000ab35760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ac791906200283c565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b085760405163334bd91960e11b815260040160405180910390fd5b62000b1482826200154b565b505050565b60008062000b266200135b565b6003015492915050565b60008051602062002f1383398151915262000b4b816200137f565b62000b556200158b565b50565b62000b62620015e8565b62000b6d8262001693565b620009658282620016ae565b60008062000b866200135b565b600401546001600160a01b031692915050565b600062000ba56200176d565b5060008051602062002ef383398151915290565b6060600062000bc762001519565b905062000bd581846200153d565b62000bf35760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c10906200285a565b80601f016020809104026020016040519081016040528092919081815260200182805462000c3e906200285a565b801562000c8f5780601f1062000c635761010080835404028352916020019162000c8f565b820191906000526020600020905b81548152906001019060200180831162000c7157829003601f168201915b5050505050915050919050565b60008062000ca9620017b7565b5460ff1692915050565b60008051602062002e7383398151915262000cce816200137f565b6200096582620017db565b60008051602062002f3383398151915262000cf4816200137f565b6001600160a01b03821662000d20578160405163220b4f1160e11b8152600401620008d891906200247c565b600062000d2c6200086d565b905062000d3983620018b9565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d8c62001519565b905062000d9981620018ea565b91505090565b60008051602062002f1383398151915262000dba816200137f565b62000b55620018f9565b60008062000dd162001945565b600085815260208290526040902090915062000dee908462001969565b949350505050565b60008062000e03620014ac565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e3a62001977565b805490915060ff600160401b82041615906001600160401b031660008115801562000e625750825b90506000826001600160401b0316600114801562000e7f5750303b155b90508115801562000e8e575080155b1562000ead5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ed757845460ff60401b1916600160401b1785555b62000ee16200199b565b62000eeb620019af565b62000ef5620019af565b62000f0260008c620014d0565b5062000f1e60008051602062002f138339815191528b620014d0565b5062000f3a60008051602062002ed38339815191528a620014d0565b5062000f5660008051602062002eb383398151915289620014d0565b50600062000f636200135b565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000fdf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b60008062000ff96200135b565b546001600160a01b031692915050565b60008051602062002eb383398151915262001024816200137f565b816001600160a01b03163b60000362001054578160405163c9c10a6160e01b8152600401620008d891906200247c565b60006200106062000b79565b90506200106d83620019b9565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010c062001519565b90506000620010cf82620018ea565b9050600081516001600160401b03811115620010ef57620010ef620024cb565b6040519080825280602002602001820160405280156200112457816020015b60608152602001906001900390816200110e5790505b50905060005b82518110156200121f578360020160008483815181106200114f576200114f62002896565b60200260200101518152602001908152602001600020805462001172906200285a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011a0906200285a565b8015620011f15780601f10620011c557610100808354040283529160200191620011f1565b820191906000526020600020905b815481529060010190602001808311620011d357829003601f168201915b50505050508282815181106200120b576200120b62002896565b60209081029190910101526001016200112a565b509392505050565b600080620012346200135b565b6001015492915050565b6000806200124b62001945565b60008481526020829052604090209091506200126790620019ea565b9392505050565b6200127982620009cd565b62001284816200137f565b62000a4983836200154b565b60008051602062002e93833981519152620012ab816200137f565b6000620012b762000b19565b9050620012c483620019f5565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200130262001a0b565b6200130c62001a44565b62001318838362001a6d565b90506200086762001cad565b60006001600160e01b03198216637965db0b60e01b14806200086757506301ffc9a760e01b6001600160e01b031983161462000867565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b55813362001cc0565b6000620013976200135b565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620013ce91906200283c565b6040516020818303038152906040528051906020012090506000620013f262001519565b9050600062001402828462001cfd565b905080620014275783604051633dad0df560e11b8152600401620008d89190620025fe565b6000838152600283016020526040902062001443858262002900565b508282600301856040516200145991906200283c565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200149e929190620029cc565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620014dd62001945565b90506000620014ed858562001d0b565b9050801562000dee57600085815260208390526040902062001510908562001db4565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001267838362001dcb565b6000806200155862001945565b9050600062001568858562001de3565b9050801562000dee57600085815260208390526040902062001510908562001e61565b6200159562001e78565b6000620015a1620017b7565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620015dd91906200247c565b60405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806200167257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200166660008051602062002ef3833981519152546001600160a01b031690565b6001600160a01b031614155b15620016915760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002ed383398151915262000965816200137f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200170b575060408051601f3d908101601f191682019092526200170891810190620029f0565b60015b6200172d5781604051634c9c8ce360e01b8152600401620008d891906200247c565b60008051602062002ef383398151915281146200176157604051632a87526960e21b815260048101829052602401620008d8565b62000b14838362001ea0565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016915760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620017f091906200283c565b60405160208183030381529060405280519060200120905060006200181462001519565b9050600062001824828462001efd565b905080620018455760405163162e926760e11b815260040160405180910390fd5b600083815260028301602052604081206200186091620023e8565b81600301846040516200187491906200283c565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200149e929190620029cc565b6000620018c56200135b565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620012678362001f0b565b6200190362001a44565b60006200190f620017b7565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620015ce3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001267838362001f69565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019a562001f96565b6200169162001fbe565b6200169162001f96565b6000620019c56200135b565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000867825490565b600062001a016200135b565b6003019190915550565b600062001a1762001fdf565b80549091506001190162001a3e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a4e62000c9c565b15620016915760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001a9b578260405163715397cd60e11b8152600401620008d891906200247c565b600062001aa762001227565b90508034101562001ad5576040516353f01c6360e11b815260048101829052346024820152604401620008d8565b600062001ae162000fec565b9050806001600160a01b03163b60000362001b1357806040516337766f4360e11b8152600401620008d891906200247c565b600062001b1f62000b79565b9050806001600160a01b03163b60000362001b51578060405163c9c10a6160e01b8152600401620008d891906200247c565b60008260405162001b629062002427565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001b9e573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c0457600080fd5b505af115801562001c19573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c3e925083915062002003565b62001c5960008051602062002f5383398151915282620014d0565b5062001c6f6001600160a01b0382163462002066565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cb962001fdf565b6001905550565b62001ccc828262000df6565b620009655760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008d8565b600062001267838362002103565b60008062001d18620014ac565b905062001d26848462000df6565b62001da9576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d5e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000867565b600091505062000867565b600062001267836001600160a01b03841662002103565b60009081526001919091016020526040902054151590565b60008062001df0620014ac565b905062001dfe848462000df6565b1562001da9576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000867565b600062001267836001600160a01b03841662002152565b62001e8262000c9c565b6200169157604051638dfc202b60e01b815260040160405180910390fd5b62001eab826200224b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001ef35762000b148282620022ab565b6200096562002327565b600062001267838362002152565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f5d57602002820191906000526020600020905b81548152602001906001019080831162001f48575b50505050509050919050565b600082600001828154811062001f835762001f8362002896565b9060005260206000200154905092915050565b62001fa062002347565b6200169157604051631afcd79f60e31b815260040160405180910390fd5b62001fc862001f96565b600062001fd4620017b7565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200200f6200135b565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b804710156200208c573060405163cd78605960e01b8152600401620008d891906200247c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620020db576040519150601f19603f3d011682016040523d82523d6000602084013e620020e0565b606091505b505090508062000b1457604051630a12f52160e11b815260040160405180910390fd5b600062002111838362001dcb565b620021495750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000867565b50600062000867565b6000818152600183016020526040812054801562001da95760006200217960018362002a0a565b85549091506000906200218f9060019062002a0a565b9050808214620021fb576000866000018281548110620021b357620021b362002896565b9060005260206000200154905080876000018481548110620021d957620021d962002896565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200220f576200220f62002a2c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000867565b806001600160a01b03163b6000036200227b5780604051634c9c8ce360e01b8152600401620008d891906200247c565b60008051602062002ef383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620022ca91906200283c565b600060405180830381855af49150503d806000811462002307576040519150601f19603f3d011682016040523d82523d6000602084013e6200230c565b606091505b50915091506200231e85838362002363565b95945050505050565b3415620016915760405163b398979f60e01b815260040160405180910390fd5b60006200235362001977565b54600160401b900460ff16919050565b6060826200237c576200237682620023be565b62001267565b81511580156200239457506001600160a01b0384163b155b15620023b75783604051639996b31560e01b8152600401620008d891906200247c565b5092915050565b805115620023cf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054620023f6906200285a565b6000825580601f1062002407575050565b601f01602090049060005260206000209081019062000b55919062002435565b6104108062002a4383390190565b5b808211156200244c576000815560010162002436565b5090565b6000602082840312156200246357600080fd5b81356001600160e01b0319811681146200126757600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024a857600080fd5b919050565b600060208284031215620024c057600080fd5b620012678262002490565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115620024fe57620024fe620024cb565b604051601f8501601f19908116603f01168101908282118183101715620025295762002529620024cb565b816040528093508581528686860111156200254357600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156200257057600080fd5b81356001600160401b038111156200258757600080fd5b8201601f810184136200259957600080fd5b62000dee84823560208401620024e1565b60005b83811015620025c7578181015183820152602001620025ad565b50506000910152565b60008151808452620025ea816020860160208601620025aa565b601f01601f19169290920160200192915050565b602081526000620012676020830184620025d0565b6000602082840312156200262657600080fd5b5035919050565b600080604083850312156200264157600080fd5b82359150620026536020840162002490565b90509250929050565b600080604083850312156200267057600080fd5b6200267b8362002490565b915060208301356001600160401b038111156200269757600080fd5b8301601f81018513620026a957600080fd5b620026ba85823560208401620024e1565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620026fe57835183529284019291840191600101620026e0565b50909695505050505050565b600080604083850312156200271e57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200274757600080fd5b620027528762002490565b9550620027626020880162002490565b9450620027726040880162002490565b9350620027826060880162002490565b9250620027926080880162002490565b915060a087013590509295509295509295565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200280057603f19888603018452620027ed858351620025d0565b94509285019290850190600101620027ce565b5092979650505050505050565b600080604083850312156200282157600080fd5b6200282c8362002490565b9150620026536020840162002490565b6000825162002850818460208701620025aa565b9190910192915050565b600181811c908216806200286f57607f821691505b6020821081036200289057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b14576000816000526020600020601f850160051c81016020861015620028d75750805b601f850160051c820191505b81811015620028f857828155600101620028e3565b505050505050565b81516001600160401b038111156200291c576200291c620024cb565b62002934816200292d84546200285a565b84620028ac565b602080601f8311600181146200296c5760008415620029535750858301515b600019600386901b1c1916600185901b178555620028f8565b600085815260208120601f198616915b828110156200299d578886015182559484019460019091019084016200297c565b5085821015620029bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000620029e16040830185620025d0565b90508260208301529392505050565b60006020828403121562002a0357600080fd5b5051919050565b818103818111156200086757634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa2646970667358221220a8c4fc74c011b6d62344fbd5064132d54f21b9e6ba377c4522ffd3f18fb4e93d64736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x2FA8 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15F3 ADD MSTORE DUP2 DUP2 PUSH2 0x161D ADD MSTORE PUSH2 0x1778 ADD MSTORE PUSH2 0x2FA8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x224 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x229 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x261 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x297 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2BE JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2E5 JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x341 JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x366 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x38B JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x3B0 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x3D5 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3FA JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x41F JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x444 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x45C JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x474 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x499 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x4BE JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x4D5 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4ED JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x505 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x52A JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x542 JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x567 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x58C JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x5B1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5D8 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5F0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x615 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x63A JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x65F JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x684 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x69C JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6B3 JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6E6 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x70B JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x730 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x757 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x76F JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x794 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7B9 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7DE JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x803 JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x828 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x280 CALLDATASIZE PUSH1 0x4 PUSH3 0x2450 JUMP JUMPDEST PUSH3 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x258 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x86D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x2DD CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x88D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x304 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0x93F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x2B19 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x25FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x360 CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x385 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x99B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x3AA CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x9CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x3CF CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x9EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x3F4 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xA27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x419 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0xA4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x43E CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xB30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F33 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E93 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2E3 PUSH3 0x4CF CALLDATASIZE PUSH1 0x4 PUSH3 0x265C JUMP JUMPDEST PUSH3 0xB58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xB79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x332 PUSH3 0x524 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0xBB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0xC9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x561 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0xCB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x586 CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0xCD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5C9 PUSH3 0xD7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x26C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xD9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x60F CALLDATASIZE PUSH1 0x4 PUSH3 0x270A JUMP JUMPDEST PUSH3 0xDC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x634 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xDF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x67E CALLDATASIZE PUSH1 0x4 PUSH3 0x272D JUMP JUMPDEST PUSH3 0xE2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xFEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x332 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x72A CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x1009 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x748 PUSH3 0x10B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x27A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x78E CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x7B3 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0x126E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x822 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x1290 JUMP JUMPDEST PUSH3 0x2AF PUSH3 0x839 CALLDATASIZE PUSH1 0x4 PUSH3 0x280D JUMP JUMPDEST PUSH3 0x12F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x867 JUMPI POP PUSH3 0x867 DUP3 PUSH3 0x1324 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x87A PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8A8 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8E1 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8ED PUSH3 0xFEC JUMP JUMPDEST SWAP1 POP PUSH3 0x8FA DUP4 PUSH3 0x138B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x95A DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0x965 DUP3 PUSH3 0x13B9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x976 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9B6 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x9C2 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9DA PUSH3 0x14AC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9FC PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA32 DUP3 PUSH3 0x9CD JUMP JUMPDEST PUSH3 0xA3D DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xA49 DUP4 DUP4 PUSH3 0x14D0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA5C PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xA95 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA75 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x153D JUMP JUMPDEST PUSH3 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xAC7 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB14 DUP3 DUP3 PUSH3 0x154B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB26 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB4B DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xB55 PUSH3 0x158B JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB62 PUSH3 0x15E8 JUMP JUMPDEST PUSH3 0xB6D DUP3 PUSH3 0x1693 JUMP JUMPDEST PUSH3 0x965 DUP3 DUP3 PUSH3 0x16AE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB86 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBA5 PUSH3 0x176D JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xBC7 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xBD5 DUP2 DUP5 PUSH3 0x153D JUMP JUMPDEST PUSH3 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC10 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC3E SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC8F JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC63 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC8F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC71 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCA9 PUSH3 0x17B7 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCCE DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0x965 DUP3 PUSH3 0x17DB JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F33 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCF4 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD20 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD2C PUSH3 0x86D JUMP JUMPDEST SWAP1 POP PUSH3 0xD39 DUP4 PUSH3 0x18B9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD8C PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xD99 DUP2 PUSH3 0x18EA JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDBA DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xB55 PUSH3 0x18F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDD1 PUSH3 0x1945 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDEE SWAP1 DUP5 PUSH3 0x1969 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE03 PUSH3 0x14AC JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE3A PUSH3 0x1977 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE62 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE7F JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE8E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEAD JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xED7 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEE1 PUSH3 0x199B JUMP JUMPDEST PUSH3 0xEEB PUSH3 0x19AF JUMP JUMPDEST PUSH3 0xEF5 PUSH3 0x19AF JUMP JUMPDEST PUSH3 0xF02 PUSH1 0x0 DUP13 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF1E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF3A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF56 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF63 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFDF JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xFF9 PUSH3 0x135B JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1024 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1054 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1060 PUSH3 0xB79 JUMP JUMPDEST SWAP1 POP PUSH3 0x106D DUP4 PUSH3 0x19B9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x10C0 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x10CF DUP3 PUSH3 0x18EA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x10EF JUMPI PUSH3 0x10EF PUSH3 0x24CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1124 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x110E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x121F JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x114F JUMPI PUSH3 0x114F PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x1172 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x11A0 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 ISZERO PUSH3 0x11F1 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x11C5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x11F1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x11D3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x120B JUMPI PUSH3 0x120B PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x112A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1234 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x124B PUSH3 0x1945 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1267 SWAP1 PUSH3 0x19EA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x1279 DUP3 PUSH3 0x9CD JUMP JUMPDEST PUSH3 0x1284 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xA49 DUP4 DUP4 PUSH3 0x154B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E93 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x12AB DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12B7 PUSH3 0xB19 JUMP JUMPDEST SWAP1 POP PUSH3 0x12C4 DUP4 PUSH3 0x19F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1302 PUSH3 0x1A0B JUMP JUMPDEST PUSH3 0x130C PUSH3 0x1A44 JUMP JUMPDEST PUSH3 0x1318 DUP4 DUP4 PUSH3 0x1A6D JUMP JUMPDEST SWAP1 POP PUSH3 0x867 PUSH3 0x1CAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x867 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x867 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB55 DUP2 CALLER PUSH3 0x1CC0 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1397 PUSH3 0x135B JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x13CE SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x13F2 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1402 DUP3 DUP5 PUSH3 0x1CFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1427 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x25FE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1443 DUP6 DUP3 PUSH3 0x2900 JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x1459 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x149E SWAP3 SWAP2 SWAP1 PUSH3 0x29CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x14DD PUSH3 0x1945 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x14ED DUP6 DUP6 PUSH3 0x1D0B JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1510 SWAP1 DUP6 PUSH3 0x1DB4 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x1DCB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1558 PUSH3 0x1945 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1568 DUP6 DUP6 PUSH3 0x1DE3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1510 SWAP1 DUP6 PUSH3 0x1E61 JUMP JUMPDEST PUSH3 0x1595 PUSH3 0x1E78 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15A1 PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x15DD SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x1672 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1666 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x965 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x170B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x1708 SWAP2 DUP2 ADD SWAP1 PUSH3 0x29F0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x172D JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x1761 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH3 0xB14 DUP4 DUP4 PUSH3 0x1EA0 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17F0 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1814 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1824 DUP3 DUP5 PUSH3 0x1EFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1845 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x1860 SWAP2 PUSH3 0x23E8 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x1874 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x149E SWAP3 SWAP2 SWAP1 PUSH3 0x29CC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18C5 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH3 0x1F0B JUMP JUMPDEST PUSH3 0x1903 PUSH3 0x1A44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x190F PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x15CE CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x1F69 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x19A5 PUSH3 0x1F96 JUMP JUMPDEST PUSH3 0x1691 PUSH3 0x1FBE JUMP JUMPDEST PUSH3 0x1691 PUSH3 0x1F96 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19C5 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x867 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A01 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A17 PUSH3 0x1FDF JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A4E PUSH3 0xC9C JUMP JUMPDEST ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1A9B JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AA7 PUSH3 0x1227 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1AD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AE1 PUSH3 0xFEC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B13 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B1F PUSH3 0xB79 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B51 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B62 SWAP1 PUSH3 0x2427 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1B9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C3E SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2003 JUMP JUMPDEST PUSH3 0x1C59 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0x1C6F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x2066 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1CB9 PUSH3 0x1FDF JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1CCC DUP3 DUP3 PUSH3 0xDF6 JUMP JUMPDEST PUSH3 0x965 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x2103 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D18 PUSH3 0x14AC JUMP JUMPDEST SWAP1 POP PUSH3 0x1D26 DUP5 DUP5 PUSH3 0xDF6 JUMP JUMPDEST PUSH3 0x1DA9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D5E CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2103 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1DF0 PUSH3 0x14AC JUMP JUMPDEST SWAP1 POP PUSH3 0x1DFE DUP5 DUP5 PUSH3 0xDF6 JUMP JUMPDEST ISZERO PUSH3 0x1DA9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2152 JUMP JUMPDEST PUSH3 0x1E82 PUSH3 0xC9C JUMP JUMPDEST PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1EAB DUP3 PUSH3 0x224B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1EF3 JUMPI PUSH3 0xB14 DUP3 DUP3 PUSH3 0x22AB JUMP JUMPDEST PUSH3 0x965 PUSH3 0x2327 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x2152 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F5D JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F48 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1F83 JUMPI PUSH3 0x1F83 PUSH3 0x2896 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1FA0 PUSH3 0x2347 JUMP JUMPDEST PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1FC8 PUSH3 0x1F96 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FD4 PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x200F PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x208C JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x20DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x20E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2111 DUP4 DUP4 PUSH3 0x1DCB JUMP JUMPDEST PUSH3 0x2149 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x867 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1DA9 JUMPI PUSH1 0x0 PUSH3 0x2179 PUSH1 0x1 DUP4 PUSH3 0x2A0A JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x218F SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x21FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x21B3 JUMPI PUSH3 0x21B3 PUSH3 0x2896 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x21D9 JUMPI PUSH3 0x21D9 PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x220F JUMPI PUSH3 0x220F PUSH3 0x2A2C JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x867 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x227B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x22CA SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2307 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x230C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x231E DUP6 DUP4 DUP4 PUSH3 0x2363 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2353 PUSH3 0x1977 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x237C JUMPI PUSH3 0x2376 DUP3 PUSH3 0x23BE JUMP JUMPDEST PUSH3 0x1267 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2394 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x23B7 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x23CF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x23F6 SWAP1 PUSH3 0x285A JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x2407 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB55 SWAP2 SWAP1 PUSH3 0x2435 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2A43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x244C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2436 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1267 DUP3 PUSH3 0x2490 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x24FE JUMPI PUSH3 0x24FE PUSH3 0x24CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x2529 JUMPI PUSH3 0x2529 PUSH3 0x24CB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x2599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDEE DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24E1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x25C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x25AD JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x25EA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x25AA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1267 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x25D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x2653 PUSH1 0x20 DUP5 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x267B DUP4 PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x26A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x26BA DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x26FE JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x26E0 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2752 DUP8 PUSH3 0x2490 JUMP JUMPDEST SWAP6 POP PUSH3 0x2762 PUSH1 0x20 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP5 POP PUSH3 0x2772 PUSH1 0x40 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP4 POP PUSH3 0x2782 PUSH1 0x60 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP3 POP PUSH3 0x2792 PUSH1 0x80 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2800 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x27ED DUP6 DUP4 MLOAD PUSH3 0x25D0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x27CE JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x282C DUP4 PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH3 0x2653 PUSH1 0x20 DUP5 ADD PUSH3 0x2490 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x2850 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x25AA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x286F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2890 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB14 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x28D7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x28F8 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28E3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x291C JUMPI PUSH3 0x291C PUSH3 0x24CB JUMP JUMPDEST PUSH3 0x2934 DUP2 PUSH3 0x292D DUP5 SLOAD PUSH3 0x285A JUMP JUMPDEST DUP5 PUSH3 0x28AC JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x296C JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2953 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x28F8 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x299D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x297C JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x29BC JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x29E1 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x25D0 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2A03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x867 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C6343000818003330F3325E23B502DCE693B1 SELFBALANCE 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xC4 0xFC PUSH21 0xC011B6D62344FBD5064132D54F21B9E6BA377C4522 SELFDESTRUCT 0xD3 CALL DUP16 0xB4 0xE9 RETURNDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "236:142:49:-:0;;;1171:4:3;1128:48;;236:142:49;;;;;;;;;-1:-1:-1;9556:22:47;:20;:22::i;:::-;236:142:49;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:55;;;8087:29:2;;146:2:55;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:55:-;236:142:49;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@CMACCOUNT_ROLE_11063": { + "entryPoint": null, + "id": 11063, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEVELOPER_WALLET_ADMIN_ROLE_11045": { + "entryPoint": null, + "id": 11045, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@FEE_ADMIN_ROLE_11039": { + "entryPoint": null, + "id": 11039, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PAUSER_ROLE_11021": { + "entryPoint": null, + "id": 11021, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PREFUND_ADMIN_ROLE_11051": { + "entryPoint": null, + "id": 11051, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_REGISTRY_ADMIN_ROLE_11057": { + "entryPoint": null, + "id": 11057, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_11027": { + "entryPoint": null, + "id": 11027, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_841": { + "entryPoint": null, + "id": 841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@VERSIONER_ROLE_11033": { + "entryPoint": null, + "id": 11033, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 6575, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_2884": { + "entryPoint": 6555, + "id": 2884, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_unchained_2902": { + "entryPoint": 8126, + "id": 2902, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_871": { + "entryPoint": null, + "id": 871, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_7212": { + "entryPoint": 8451, + "id": 7212, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_7346": { + "entryPoint": 8041, + "id": 7346, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_11275": { + "entryPoint": 5779, + "id": 11275, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkInitializing_739": { + "entryPoint": 8086, + "id": 739, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3805": { + "entryPoint": 8999, + "id": 3805, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_947": { + "entryPoint": 5997, + "id": 947, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkProxy_931": { + "entryPoint": 5608, + "id": 931, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 4991, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 7360, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_7315": { + "entryPoint": 7627, + "id": 7315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_createCMAccount_11435": { + "entryPoint": 6765, + "id": 11435, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 6469, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 5292, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountManagerStorage_11103": { + "entryPoint": 4955, + "id": 11103, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_816": { + "entryPoint": 6519, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPausableStorage_2858": { + "entryPoint": 6071, + "id": 2858, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3036": { + "entryPoint": 8159, + "id": 3036, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getServiceRegistryStorage_12909": { + "entryPoint": 5401, + "id": 12909, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 7435, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_522": { + "entryPoint": 5328, + "id": 522, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_807": { + "entryPoint": 9031, + "id": 807, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_7329": { + "entryPoint": null, + "id": 7329, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2814": { + "entryPoint": null, + "id": 2814, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3118": { + "entryPoint": 7341, + "id": 3118, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3102": { + "entryPoint": 6667, + "id": 3102, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_pause_2983": { + "entryPoint": 6393, + "id": 2983, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_registerServiceName_12998": { + "entryPoint": 5049, + "id": 12998, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_7296": { + "entryPoint": 8530, + "id": 7296, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_requireNotPaused_2946": { + "entryPoint": 6724, + "id": 2946, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_2959": { + "entryPoint": 7800, + "id": 2959, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5244": { + "entryPoint": 9150, + "id": 5244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 7651, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_562": { + "entryPoint": 5451, + "id": 562, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setAccountImplementation_11569": { + "entryPoint": 5003, + "id": 11569, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBookingTokenAddress_11676": { + "entryPoint": 6585, + "id": 11676, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setCMAccountInfo_11458": { + "entryPoint": 8195, + "id": 11458, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setDeveloperFeeBp_11804": { + "entryPoint": 6645, + "id": 11804, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setDeveloperWallet_11746": { + "entryPoint": 6329, + "id": 11746, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3591": { + "entryPoint": 8779, + "id": 3591, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_unpause_3007": { + "entryPoint": 5515, + "id": 3007, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_unregisterServiceName_13052": { + "entryPoint": 6107, + "id": 13052, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_998": { + "entryPoint": 5806, + "id": 998, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_7360": { + "entryPoint": 7947, + "id": 7360, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@add_7382": { + "entryPoint": 7421, + "id": 7382, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_7512": { + "entryPoint": 7604, + "id": 7512, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_7608": { + "entryPoint": 6505, + "id": 7608, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_7418": { + "entryPoint": 5437, + "id": 7418, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@createCMAccount_11295": { + "entryPoint": 4854, + "id": 11295, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5164": { + "entryPoint": 8875, + "id": 5164, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAccountImplementation_11516": { + "entryPoint": 4076, + "id": 11516, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5307": { + "entryPoint": null, + "id": 5307, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllRegisteredServiceHashes_13138": { + "entryPoint": 3454, + "id": 13138, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAllRegisteredServiceNames_13200": { + "entryPoint": 4274, + "id": 13200, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_11623": { + "entryPoint": 2937, + "id": 11623, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getCMAccountCreator_11479": { + "entryPoint": 2543, + "id": 11479, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getDeveloperFeeBp_11762": { + "entryPoint": 2841, + "id": 11762, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDeveloperWallet_11692": { + "entryPoint": 2157, + "id": 11692, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getImplementation_3564": { + "entryPoint": null, + "id": 3564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_11585": { + "entryPoint": 4647, + "id": 11585, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRegisteredServiceHashByName_13119": { + "entryPoint": 2639, + "id": 13119, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRegisteredServiceNameByHash_13083": { + "entryPoint": 3001, + "id": 13083, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 2509, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 4670, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 3524, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getVersion_11886": { + "entryPoint": null, + "id": 11886, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 2599, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 3574, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_11242": { + "entryPoint": 3630, + "id": 11242, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@isCMAccount_11500": { + "entryPoint": 2409, + "id": 11500, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_7581": { + "entryPoint": 6634, + "id": 7581, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@pause_11253": { + "entryPoint": 3487, + "id": 11253, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_2934": { + "entryPoint": 3228, + "id": 2934, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@proxiableUUID_889": { + "entryPoint": 2969, + "id": 889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@registerService_11818": { + "entryPoint": 2367, + "id": 11818, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_7400": { + "entryPoint": 7933, + "id": 7400, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_7539": { + "entryPoint": 7777, + "id": 7539, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 2782, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 4718, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@sendValue_5049": { + "entryPoint": 8294, + "id": 5049, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setAccountImplementation_11551": { + "entryPoint": 2189, + "id": 11551, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setBookingTokenAddress_11658": { + "entryPoint": 4105, + "id": 11658, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperFeeBp_11786": { + "entryPoint": 4752, + "id": 11786, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperWallet_11728": { + "entryPoint": 3289, + "id": 11728, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setPrefundAmount_11607": { + "entryPoint": 2459, + "id": 11607, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_3176": { + "entryPoint": null, + "id": 3176, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 2111, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 4900, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@unpause_11264": { + "entryPoint": 2864, + "id": 11264, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unregisterService_11832": { + "entryPoint": 3251, + "id": 11832, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@upgradeToAndCall_3625": { + "entryPoint": 7840, + "id": 3625, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_909": { + "entryPoint": 2904, + "id": 909, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_7481": { + "entryPoint": 6378, + "id": 7481, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5204": { + "entryPoint": 9059, + "id": 5204, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 9360, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_available_length_string": { + "entryPoint": 9441, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 9389, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 10253, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256": { + "entryPoint": 10029, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 9820, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 10736, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 9773, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 9994, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 9296, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 9565, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 9747, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 9680, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 10300, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 9340, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 9924, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10149, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 9726, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed": { + "entryPoint": 10700, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 10762, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 10412, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 10496, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 9642, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 10330, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x31": { + "entryPoint": 10796, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 10390, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 9419, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:13123:55", + "nodeType": "YulBlock", + "src": "0:13123:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "115:76:55", + "nodeType": "YulBlock", + "src": "115:76:55", + "statements": [ + { + "nativeSrc": "125:26:55", + "nodeType": "YulAssignment", + "src": "125:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "137:9:55", + "nodeType": "YulIdentifier", + "src": "137:9:55" + }, + { + "kind": "number", + "nativeSrc": "148:2:55", + "nodeType": "YulLiteral", + "src": "148:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "133:3:55", + "nodeType": "YulIdentifier", + "src": "133:3:55" + }, + "nativeSrc": "133:18:55", + "nodeType": "YulFunctionCall", + "src": "133:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "125:4:55", + "nodeType": "YulIdentifier", + "src": "125:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "167:9:55", + "nodeType": "YulIdentifier", + "src": "167:9:55" + }, + { + "name": "value0", + "nativeSrc": "178:6:55", + "nodeType": "YulIdentifier", + "src": "178:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "160:6:55", + "nodeType": "YulIdentifier", + "src": "160:6:55" + }, + "nativeSrc": "160:25:55", + "nodeType": "YulFunctionCall", + "src": "160:25:55" + }, + "nativeSrc": "160:25:55", + "nodeType": "YulExpressionStatement", + "src": "160:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "14:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "84:9:55", + "nodeType": "YulTypedName", + "src": "84:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "95:6:55", + "nodeType": "YulTypedName", + "src": "95:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "106:4:55", + "nodeType": "YulTypedName", + "src": "106:4:55", + "type": "" + } + ], + "src": "14:177:55" + }, + { + "body": { + "nativeSrc": "265:217:55", + "nodeType": "YulBlock", + "src": "265:217:55", + "statements": [ + { + "body": { + "nativeSrc": "311:16:55", + "nodeType": "YulBlock", + "src": "311:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "320:1:55", + "nodeType": "YulLiteral", + "src": "320:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "323:1:55", + "nodeType": "YulLiteral", + "src": "323:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "313:6:55", + "nodeType": "YulIdentifier", + "src": "313:6:55" + }, + "nativeSrc": "313:12:55", + "nodeType": "YulFunctionCall", + "src": "313:12:55" + }, + "nativeSrc": "313:12:55", + "nodeType": "YulExpressionStatement", + "src": "313:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "286:7:55", + "nodeType": "YulIdentifier", + "src": "286:7:55" + }, + { + "name": "headStart", + "nativeSrc": "295:9:55", + "nodeType": "YulIdentifier", + "src": "295:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "282:3:55", + "nodeType": "YulIdentifier", + "src": "282:3:55" + }, + "nativeSrc": "282:23:55", + "nodeType": "YulFunctionCall", + "src": "282:23:55" + }, + { + "kind": "number", + "nativeSrc": "307:2:55", + "nodeType": "YulLiteral", + "src": "307:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "278:3:55", + "nodeType": "YulIdentifier", + "src": "278:3:55" + }, + "nativeSrc": "278:32:55", + "nodeType": "YulFunctionCall", + "src": "278:32:55" + }, + "nativeSrc": "275:52:55", + "nodeType": "YulIf", + "src": "275:52:55" + }, + { + "nativeSrc": "336:36:55", + "nodeType": "YulVariableDeclaration", + "src": "336:36:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "362:9:55", + "nodeType": "YulIdentifier", + "src": "362:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "349:12:55", + "nodeType": "YulIdentifier", + "src": "349:12:55" + }, + "nativeSrc": "349:23:55", + "nodeType": "YulFunctionCall", + "src": "349:23:55" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "340:5:55", + "nodeType": "YulTypedName", + "src": "340:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "436:16:55", + "nodeType": "YulBlock", + "src": "436:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "445:1:55", + "nodeType": "YulLiteral", + "src": "445:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "448:1:55", + "nodeType": "YulLiteral", + "src": "448:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "438:6:55", + "nodeType": "YulIdentifier", + "src": "438:6:55" + }, + "nativeSrc": "438:12:55", + "nodeType": "YulFunctionCall", + "src": "438:12:55" + }, + "nativeSrc": "438:12:55", + "nodeType": "YulExpressionStatement", + "src": "438:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "394:5:55", + "nodeType": "YulIdentifier", + "src": "394:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "405:5:55", + "nodeType": "YulIdentifier", + "src": "405:5:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "416:3:55", + "nodeType": "YulLiteral", + "src": "416:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "421:10:55", + "nodeType": "YulLiteral", + "src": "421:10:55", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "412:3:55", + "nodeType": "YulIdentifier", + "src": "412:3:55" + }, + "nativeSrc": "412:20:55", + "nodeType": "YulFunctionCall", + "src": "412:20:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "401:3:55", + "nodeType": "YulIdentifier", + "src": "401:3:55" + }, + "nativeSrc": "401:32:55", + "nodeType": "YulFunctionCall", + "src": "401:32:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "391:2:55", + "nodeType": "YulIdentifier", + "src": "391:2:55" + }, + "nativeSrc": "391:43:55", + "nodeType": "YulFunctionCall", + "src": "391:43:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "384:6:55", + "nodeType": "YulIdentifier", + "src": "384:6:55" + }, + "nativeSrc": "384:51:55", + "nodeType": "YulFunctionCall", + "src": "384:51:55" + }, + "nativeSrc": "381:71:55", + "nodeType": "YulIf", + "src": "381:71:55" + }, + { + "nativeSrc": "461:15:55", + "nodeType": "YulAssignment", + "src": "461:15:55", + "value": { + "name": "value", + "nativeSrc": "471:5:55", + "nodeType": "YulIdentifier", + "src": "471:5:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "461:6:55", + "nodeType": "YulIdentifier", + "src": "461:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "196:286:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "231:9:55", + "nodeType": "YulTypedName", + "src": "231:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "242:7:55", + "nodeType": "YulTypedName", + "src": "242:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "254:6:55", + "nodeType": "YulTypedName", + "src": "254:6:55", + "type": "" + } + ], + "src": "196:286:55" + }, + { + "body": { + "nativeSrc": "582:92:55", + "nodeType": "YulBlock", + "src": "582:92:55", + "statements": [ + { + "nativeSrc": "592:26:55", + "nodeType": "YulAssignment", + "src": "592:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "604:9:55", + "nodeType": "YulIdentifier", + "src": "604:9:55" + }, + { + "kind": "number", + "nativeSrc": "615:2:55", + "nodeType": "YulLiteral", + "src": "615:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "600:3:55", + "nodeType": "YulIdentifier", + "src": "600:3:55" + }, + "nativeSrc": "600:18:55", + "nodeType": "YulFunctionCall", + "src": "600:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "592:4:55", + "nodeType": "YulIdentifier", + "src": "592:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "634:9:55", + "nodeType": "YulIdentifier", + "src": "634:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "659:6:55", + "nodeType": "YulIdentifier", + "src": "659:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "652:6:55", + "nodeType": "YulIdentifier", + "src": "652:6:55" + }, + "nativeSrc": "652:14:55", + "nodeType": "YulFunctionCall", + "src": "652:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "645:6:55", + "nodeType": "YulIdentifier", + "src": "645:6:55" + }, + "nativeSrc": "645:22:55", + "nodeType": "YulFunctionCall", + "src": "645:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "627:6:55", + "nodeType": "YulIdentifier", + "src": "627:6:55" + }, + "nativeSrc": "627:41:55", + "nodeType": "YulFunctionCall", + "src": "627:41:55" + }, + "nativeSrc": "627:41:55", + "nodeType": "YulExpressionStatement", + "src": "627:41:55" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "487:187:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "551:9:55", + "nodeType": "YulTypedName", + "src": "551:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "562:6:55", + "nodeType": "YulTypedName", + "src": "562:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "573:4:55", + "nodeType": "YulTypedName", + "src": "573:4:55", + "type": "" + } + ], + "src": "487:187:55" + }, + { + "body": { + "nativeSrc": "780:102:55", + "nodeType": "YulBlock", + "src": "780:102:55", + "statements": [ + { + "nativeSrc": "790:26:55", + "nodeType": "YulAssignment", + "src": "790:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "802:9:55", + "nodeType": "YulIdentifier", + "src": "802:9:55" + }, + { + "kind": "number", + "nativeSrc": "813:2:55", + "nodeType": "YulLiteral", + "src": "813:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "798:3:55", + "nodeType": "YulIdentifier", + "src": "798:3:55" + }, + "nativeSrc": "798:18:55", + "nodeType": "YulFunctionCall", + "src": "798:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "790:4:55", + "nodeType": "YulIdentifier", + "src": "790:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "832:9:55", + "nodeType": "YulIdentifier", + "src": "832:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "847:6:55", + "nodeType": "YulIdentifier", + "src": "847:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "863:3:55", + "nodeType": "YulLiteral", + "src": "863:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "868:1:55", + "nodeType": "YulLiteral", + "src": "868:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "859:3:55", + "nodeType": "YulIdentifier", + "src": "859:3:55" + }, + "nativeSrc": "859:11:55", + "nodeType": "YulFunctionCall", + "src": "859:11:55" + }, + { + "kind": "number", + "nativeSrc": "872:1:55", + "nodeType": "YulLiteral", + "src": "872:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "855:3:55", + "nodeType": "YulIdentifier", + "src": "855:3:55" + }, + "nativeSrc": "855:19:55", + "nodeType": "YulFunctionCall", + "src": "855:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "843:3:55", + "nodeType": "YulIdentifier", + "src": "843:3:55" + }, + "nativeSrc": "843:32:55", + "nodeType": "YulFunctionCall", + "src": "843:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "825:6:55", + "nodeType": "YulIdentifier", + "src": "825:6:55" + }, + "nativeSrc": "825:51:55", + "nodeType": "YulFunctionCall", + "src": "825:51:55" + }, + "nativeSrc": "825:51:55", + "nodeType": "YulExpressionStatement", + "src": "825:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "679:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "749:9:55", + "nodeType": "YulTypedName", + "src": "749:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "760:6:55", + "nodeType": "YulTypedName", + "src": "760:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "771:4:55", + "nodeType": "YulTypedName", + "src": "771:4:55", + "type": "" + } + ], + "src": "679:203:55" + }, + { + "body": { + "nativeSrc": "936:124:55", + "nodeType": "YulBlock", + "src": "936:124:55", + "statements": [ + { + "nativeSrc": "946:29:55", + "nodeType": "YulAssignment", + "src": "946:29:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "968:6:55", + "nodeType": "YulIdentifier", + "src": "968:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "955:12:55", + "nodeType": "YulIdentifier", + "src": "955:12:55" + }, + "nativeSrc": "955:20:55", + "nodeType": "YulFunctionCall", + "src": "955:20:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "946:5:55", + "nodeType": "YulIdentifier", + "src": "946:5:55" + } + ] + }, + { + "body": { + "nativeSrc": "1038:16:55", + "nodeType": "YulBlock", + "src": "1038:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1047:1:55", + "nodeType": "YulLiteral", + "src": "1047:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1050:1:55", + "nodeType": "YulLiteral", + "src": "1050:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1040:6:55", + "nodeType": "YulIdentifier", + "src": "1040:6:55" + }, + "nativeSrc": "1040:12:55", + "nodeType": "YulFunctionCall", + "src": "1040:12:55" + }, + "nativeSrc": "1040:12:55", + "nodeType": "YulExpressionStatement", + "src": "1040:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "997:5:55", + "nodeType": "YulIdentifier", + "src": "997:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1008:5:55", + "nodeType": "YulIdentifier", + "src": "1008:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1023:3:55", + "nodeType": "YulLiteral", + "src": "1023:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1028:1:55", + "nodeType": "YulLiteral", + "src": "1028:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1019:3:55", + "nodeType": "YulIdentifier", + "src": "1019:3:55" + }, + "nativeSrc": "1019:11:55", + "nodeType": "YulFunctionCall", + "src": "1019:11:55" + }, + { + "kind": "number", + "nativeSrc": "1032:1:55", + "nodeType": "YulLiteral", + "src": "1032:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1015:3:55", + "nodeType": "YulIdentifier", + "src": "1015:3:55" + }, + "nativeSrc": "1015:19:55", + "nodeType": "YulFunctionCall", + "src": "1015:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1004:3:55", + "nodeType": "YulIdentifier", + "src": "1004:3:55" + }, + "nativeSrc": "1004:31:55", + "nodeType": "YulFunctionCall", + "src": "1004:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "994:2:55", + "nodeType": "YulIdentifier", + "src": "994:2:55" + }, + "nativeSrc": "994:42:55", + "nodeType": "YulFunctionCall", + "src": "994:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "987:6:55", + "nodeType": "YulIdentifier", + "src": "987:6:55" + }, + "nativeSrc": "987:50:55", + "nodeType": "YulFunctionCall", + "src": "987:50:55" + }, + "nativeSrc": "984:70:55", + "nodeType": "YulIf", + "src": "984:70:55" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "887:173:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "915:6:55", + "nodeType": "YulTypedName", + "src": "915:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "926:5:55", + "nodeType": "YulTypedName", + "src": "926:5:55", + "type": "" + } + ], + "src": "887:173:55" + }, + { + "body": { + "nativeSrc": "1135:116:55", + "nodeType": "YulBlock", + "src": "1135:116:55", + "statements": [ + { + "body": { + "nativeSrc": "1181:16:55", + "nodeType": "YulBlock", + "src": "1181:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1190:1:55", + "nodeType": "YulLiteral", + "src": "1190:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1193:1:55", + "nodeType": "YulLiteral", + "src": "1193:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1183:6:55", + "nodeType": "YulIdentifier", + "src": "1183:6:55" + }, + "nativeSrc": "1183:12:55", + "nodeType": "YulFunctionCall", + "src": "1183:12:55" + }, + "nativeSrc": "1183:12:55", + "nodeType": "YulExpressionStatement", + "src": "1183:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1156:7:55", + "nodeType": "YulIdentifier", + "src": "1156:7:55" + }, + { + "name": "headStart", + "nativeSrc": "1165:9:55", + "nodeType": "YulIdentifier", + "src": "1165:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1152:3:55", + "nodeType": "YulIdentifier", + "src": "1152:3:55" + }, + "nativeSrc": "1152:23:55", + "nodeType": "YulFunctionCall", + "src": "1152:23:55" + }, + { + "kind": "number", + "nativeSrc": "1177:2:55", + "nodeType": "YulLiteral", + "src": "1177:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1148:3:55", + "nodeType": "YulIdentifier", + "src": "1148:3:55" + }, + "nativeSrc": "1148:32:55", + "nodeType": "YulFunctionCall", + "src": "1148:32:55" + }, + "nativeSrc": "1145:52:55", + "nodeType": "YulIf", + "src": "1145:52:55" + }, + { + "nativeSrc": "1206:39:55", + "nodeType": "YulAssignment", + "src": "1206:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1235:9:55", + "nodeType": "YulIdentifier", + "src": "1235:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1216:18:55", + "nodeType": "YulIdentifier", + "src": "1216:18:55" + }, + "nativeSrc": "1216:29:55", + "nodeType": "YulFunctionCall", + "src": "1216:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1206:6:55", + "nodeType": "YulIdentifier", + "src": "1206:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1065:186:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1101:9:55", + "nodeType": "YulTypedName", + "src": "1101:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1112:7:55", + "nodeType": "YulTypedName", + "src": "1112:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1124:6:55", + "nodeType": "YulTypedName", + "src": "1124:6:55", + "type": "" + } + ], + "src": "1065:186:55" + }, + { + "body": { + "nativeSrc": "1288:95:55", + "nodeType": "YulBlock", + "src": "1288:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1305:1:55", + "nodeType": "YulLiteral", + "src": "1305:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1312:3:55", + "nodeType": "YulLiteral", + "src": "1312:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "1317:10:55", + "nodeType": "YulLiteral", + "src": "1317:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1308:3:55", + "nodeType": "YulIdentifier", + "src": "1308:3:55" + }, + "nativeSrc": "1308:20:55", + "nodeType": "YulFunctionCall", + "src": "1308:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1298:6:55", + "nodeType": "YulIdentifier", + "src": "1298:6:55" + }, + "nativeSrc": "1298:31:55", + "nodeType": "YulFunctionCall", + "src": "1298:31:55" + }, + "nativeSrc": "1298:31:55", + "nodeType": "YulExpressionStatement", + "src": "1298:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1345:1:55", + "nodeType": "YulLiteral", + "src": "1345:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1348:4:55", + "nodeType": "YulLiteral", + "src": "1348:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1338:6:55", + "nodeType": "YulIdentifier", + "src": "1338:6:55" + }, + "nativeSrc": "1338:15:55", + "nodeType": "YulFunctionCall", + "src": "1338:15:55" + }, + "nativeSrc": "1338:15:55", + "nodeType": "YulExpressionStatement", + "src": "1338:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1369:1:55", + "nodeType": "YulLiteral", + "src": "1369:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1372:4:55", + "nodeType": "YulLiteral", + "src": "1372:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1362:6:55", + "nodeType": "YulIdentifier", + "src": "1362:6:55" + }, + "nativeSrc": "1362:15:55", + "nodeType": "YulFunctionCall", + "src": "1362:15:55" + }, + "nativeSrc": "1362:15:55", + "nodeType": "YulExpressionStatement", + "src": "1362:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "1256:127:55", + "nodeType": "YulFunctionDefinition", + "src": "1256:127:55" + }, + { + "body": { + "nativeSrc": "1463:557:55", + "nodeType": "YulBlock", + "src": "1463:557:55", + "statements": [ + { + "nativeSrc": "1473:28:55", + "nodeType": "YulVariableDeclaration", + "src": "1473:28:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1491:2:55", + "nodeType": "YulLiteral", + "src": "1491:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1495:1:55", + "nodeType": "YulLiteral", + "src": "1495:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1487:3:55", + "nodeType": "YulIdentifier", + "src": "1487:3:55" + }, + "nativeSrc": "1487:10:55", + "nodeType": "YulFunctionCall", + "src": "1487:10:55" + }, + { + "kind": "number", + "nativeSrc": "1499:1:55", + "nodeType": "YulLiteral", + "src": "1499:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1483:3:55", + "nodeType": "YulIdentifier", + "src": "1483:3:55" + }, + "nativeSrc": "1483:18:55", + "nodeType": "YulFunctionCall", + "src": "1483:18:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1477:2:55", + "nodeType": "YulTypedName", + "src": "1477:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1528:22:55", + "nodeType": "YulBlock", + "src": "1528:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1530:16:55", + "nodeType": "YulIdentifier", + "src": "1530:16:55" + }, + "nativeSrc": "1530:18:55", + "nodeType": "YulFunctionCall", + "src": "1530:18:55" + }, + "nativeSrc": "1530:18:55", + "nodeType": "YulExpressionStatement", + "src": "1530:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1516:6:55", + "nodeType": "YulIdentifier", + "src": "1516:6:55" + }, + { + "name": "_1", + "nativeSrc": "1524:2:55", + "nodeType": "YulIdentifier", + "src": "1524:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1513:2:55", + "nodeType": "YulIdentifier", + "src": "1513:2:55" + }, + "nativeSrc": "1513:14:55", + "nodeType": "YulFunctionCall", + "src": "1513:14:55" + }, + "nativeSrc": "1510:40:55", + "nodeType": "YulIf", + "src": "1510:40:55" + }, + { + "nativeSrc": "1559:17:55", + "nodeType": "YulVariableDeclaration", + "src": "1559:17:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1573:2:55", + "nodeType": "YulLiteral", + "src": "1573:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1569:3:55", + "nodeType": "YulIdentifier", + "src": "1569:3:55" + }, + "nativeSrc": "1569:7:55", + "nodeType": "YulFunctionCall", + "src": "1569:7:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1563:2:55", + "nodeType": "YulTypedName", + "src": "1563:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1585:23:55", + "nodeType": "YulVariableDeclaration", + "src": "1585:23:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1605:2:55", + "nodeType": "YulLiteral", + "src": "1605:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1599:5:55", + "nodeType": "YulIdentifier", + "src": "1599:5:55" + }, + "nativeSrc": "1599:9:55", + "nodeType": "YulFunctionCall", + "src": "1599:9:55" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1589:6:55", + "nodeType": "YulTypedName", + "src": "1589:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1617:73:55", + "nodeType": "YulVariableDeclaration", + "src": "1617:73:55", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1639:6:55", + "nodeType": "YulIdentifier", + "src": "1639:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1663:6:55", + "nodeType": "YulIdentifier", + "src": "1663:6:55" + }, + { + "kind": "number", + "nativeSrc": "1671:2:55", + "nodeType": "YulLiteral", + "src": "1671:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1659:3:55", + "nodeType": "YulIdentifier", + "src": "1659:3:55" + }, + "nativeSrc": "1659:15:55", + "nodeType": "YulFunctionCall", + "src": "1659:15:55" + }, + { + "name": "_2", + "nativeSrc": "1676:2:55", + "nodeType": "YulIdentifier", + "src": "1676:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1655:3:55", + "nodeType": "YulIdentifier", + "src": "1655:3:55" + }, + "nativeSrc": "1655:24:55", + "nodeType": "YulFunctionCall", + "src": "1655:24:55" + }, + { + "kind": "number", + "nativeSrc": "1681:2:55", + "nodeType": "YulLiteral", + "src": "1681:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1651:3:55", + "nodeType": "YulIdentifier", + "src": "1651:3:55" + }, + "nativeSrc": "1651:33:55", + "nodeType": "YulFunctionCall", + "src": "1651:33:55" + }, + { + "name": "_2", + "nativeSrc": "1686:2:55", + "nodeType": "YulIdentifier", + "src": "1686:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1647:3:55", + "nodeType": "YulIdentifier", + "src": "1647:3:55" + }, + "nativeSrc": "1647:42:55", + "nodeType": "YulFunctionCall", + "src": "1647:42:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1635:3:55", + "nodeType": "YulIdentifier", + "src": "1635:3:55" + }, + "nativeSrc": "1635:55:55", + "nodeType": "YulFunctionCall", + "src": "1635:55:55" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1621:10:55", + "nodeType": "YulTypedName", + "src": "1621:10:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1749:22:55", + "nodeType": "YulBlock", + "src": "1749:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1751:16:55", + "nodeType": "YulIdentifier", + "src": "1751:16:55" + }, + "nativeSrc": "1751:18:55", + "nodeType": "YulFunctionCall", + "src": "1751:18:55" + }, + "nativeSrc": "1751:18:55", + "nodeType": "YulExpressionStatement", + "src": "1751:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1708:10:55", + "nodeType": "YulIdentifier", + "src": "1708:10:55" + }, + { + "name": "_1", + "nativeSrc": "1720:2:55", + "nodeType": "YulIdentifier", + "src": "1720:2:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1705:2:55", + "nodeType": "YulIdentifier", + "src": "1705:2:55" + }, + "nativeSrc": "1705:18:55", + "nodeType": "YulFunctionCall", + "src": "1705:18:55" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1728:10:55", + "nodeType": "YulIdentifier", + "src": "1728:10:55" + }, + { + "name": "memPtr", + "nativeSrc": "1740:6:55", + "nodeType": "YulIdentifier", + "src": "1740:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1725:2:55", + "nodeType": "YulIdentifier", + "src": "1725:2:55" + }, + "nativeSrc": "1725:22:55", + "nodeType": "YulFunctionCall", + "src": "1725:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1702:2:55", + "nodeType": "YulIdentifier", + "src": "1702:2:55" + }, + "nativeSrc": "1702:46:55", + "nodeType": "YulFunctionCall", + "src": "1702:46:55" + }, + "nativeSrc": "1699:72:55", + "nodeType": "YulIf", + "src": "1699:72:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1787:2:55", + "nodeType": "YulLiteral", + "src": "1787:2:55", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1791:10:55", + "nodeType": "YulIdentifier", + "src": "1791:10:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1780:6:55", + "nodeType": "YulIdentifier", + "src": "1780:6:55" + }, + "nativeSrc": "1780:22:55", + "nodeType": "YulFunctionCall", + "src": "1780:22:55" + }, + "nativeSrc": "1780:22:55", + "nodeType": "YulExpressionStatement", + "src": "1780:22:55" + }, + { + "nativeSrc": "1811:15:55", + "nodeType": "YulAssignment", + "src": "1811:15:55", + "value": { + "name": "memPtr", + "nativeSrc": "1820:6:55", + "nodeType": "YulIdentifier", + "src": "1820:6:55" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "1811:5:55", + "nodeType": "YulIdentifier", + "src": "1811:5:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1842:6:55", + "nodeType": "YulIdentifier", + "src": "1842:6:55" + }, + { + "name": "length", + "nativeSrc": "1850:6:55", + "nodeType": "YulIdentifier", + "src": "1850:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1835:6:55", + "nodeType": "YulIdentifier", + "src": "1835:6:55" + }, + "nativeSrc": "1835:22:55", + "nodeType": "YulFunctionCall", + "src": "1835:22:55" + }, + "nativeSrc": "1835:22:55", + "nodeType": "YulExpressionStatement", + "src": "1835:22:55" + }, + { + "body": { + "nativeSrc": "1895:16:55", + "nodeType": "YulBlock", + "src": "1895:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1904:1:55", + "nodeType": "YulLiteral", + "src": "1904:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1907:1:55", + "nodeType": "YulLiteral", + "src": "1907:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1897:6:55", + "nodeType": "YulIdentifier", + "src": "1897:6:55" + }, + "nativeSrc": "1897:12:55", + "nodeType": "YulFunctionCall", + "src": "1897:12:55" + }, + "nativeSrc": "1897:12:55", + "nodeType": "YulExpressionStatement", + "src": "1897:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1876:3:55", + "nodeType": "YulIdentifier", + "src": "1876:3:55" + }, + { + "name": "length", + "nativeSrc": "1881:6:55", + "nodeType": "YulIdentifier", + "src": "1881:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1872:3:55", + "nodeType": "YulIdentifier", + "src": "1872:3:55" + }, + "nativeSrc": "1872:16:55", + "nodeType": "YulFunctionCall", + "src": "1872:16:55" + }, + { + "name": "end", + "nativeSrc": "1890:3:55", + "nodeType": "YulIdentifier", + "src": "1890:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1869:2:55", + "nodeType": "YulIdentifier", + "src": "1869:2:55" + }, + "nativeSrc": "1869:25:55", + "nodeType": "YulFunctionCall", + "src": "1869:25:55" + }, + "nativeSrc": "1866:45:55", + "nodeType": "YulIf", + "src": "1866:45:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1937:6:55", + "nodeType": "YulIdentifier", + "src": "1937:6:55" + }, + { + "kind": "number", + "nativeSrc": "1945:4:55", + "nodeType": "YulLiteral", + "src": "1945:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1933:3:55", + "nodeType": "YulIdentifier", + "src": "1933:3:55" + }, + "nativeSrc": "1933:17:55", + "nodeType": "YulFunctionCall", + "src": "1933:17:55" + }, + { + "name": "src", + "nativeSrc": "1952:3:55", + "nodeType": "YulIdentifier", + "src": "1952:3:55" + }, + { + "name": "length", + "nativeSrc": "1957:6:55", + "nodeType": "YulIdentifier", + "src": "1957:6:55" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1920:12:55", + "nodeType": "YulIdentifier", + "src": "1920:12:55" + }, + "nativeSrc": "1920:44:55", + "nodeType": "YulFunctionCall", + "src": "1920:44:55" + }, + "nativeSrc": "1920:44:55", + "nodeType": "YulExpressionStatement", + "src": "1920:44:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1988:6:55", + "nodeType": "YulIdentifier", + "src": "1988:6:55" + }, + { + "name": "length", + "nativeSrc": "1996:6:55", + "nodeType": "YulIdentifier", + "src": "1996:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1984:3:55", + "nodeType": "YulIdentifier", + "src": "1984:3:55" + }, + "nativeSrc": "1984:19:55", + "nodeType": "YulFunctionCall", + "src": "1984:19:55" + }, + { + "kind": "number", + "nativeSrc": "2005:4:55", + "nodeType": "YulLiteral", + "src": "2005:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1980:3:55", + "nodeType": "YulIdentifier", + "src": "1980:3:55" + }, + "nativeSrc": "1980:30:55", + "nodeType": "YulFunctionCall", + "src": "1980:30:55" + }, + { + "kind": "number", + "nativeSrc": "2012:1:55", + "nodeType": "YulLiteral", + "src": "2012:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:55", + "nodeType": "YulIdentifier", + "src": "1973:6:55" + }, + "nativeSrc": "1973:41:55", + "nodeType": "YulFunctionCall", + "src": "1973:41:55" + }, + "nativeSrc": "1973:41:55", + "nodeType": "YulExpressionStatement", + "src": "1973:41:55" + } + ] + }, + "name": "abi_decode_available_length_string", + "nativeSrc": "1388:632:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1432:3:55", + "nodeType": "YulTypedName", + "src": "1432:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1437:6:55", + "nodeType": "YulTypedName", + "src": "1437:6:55", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1445:3:55", + "nodeType": "YulTypedName", + "src": "1445:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "1453:5:55", + "nodeType": "YulTypedName", + "src": "1453:5:55", + "type": "" + } + ], + "src": "1388:632:55" + }, + { + "body": { + "nativeSrc": "2105:371:55", + "nodeType": "YulBlock", + "src": "2105:371:55", + "statements": [ + { + "body": { + "nativeSrc": "2151:16:55", + "nodeType": "YulBlock", + "src": "2151:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2160:1:55", + "nodeType": "YulLiteral", + "src": "2160:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2163:1:55", + "nodeType": "YulLiteral", + "src": "2163:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2153:6:55", + "nodeType": "YulIdentifier", + "src": "2153:6:55" + }, + "nativeSrc": "2153:12:55", + "nodeType": "YulFunctionCall", + "src": "2153:12:55" + }, + "nativeSrc": "2153:12:55", + "nodeType": "YulExpressionStatement", + "src": "2153:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2126:7:55", + "nodeType": "YulIdentifier", + "src": "2126:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2135:9:55", + "nodeType": "YulIdentifier", + "src": "2135:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2122:3:55", + "nodeType": "YulIdentifier", + "src": "2122:3:55" + }, + "nativeSrc": "2122:23:55", + "nodeType": "YulFunctionCall", + "src": "2122:23:55" + }, + { + "kind": "number", + "nativeSrc": "2147:2:55", + "nodeType": "YulLiteral", + "src": "2147:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2118:3:55", + "nodeType": "YulIdentifier", + "src": "2118:3:55" + }, + "nativeSrc": "2118:32:55", + "nodeType": "YulFunctionCall", + "src": "2118:32:55" + }, + "nativeSrc": "2115:52:55", + "nodeType": "YulIf", + "src": "2115:52:55" + }, + { + "nativeSrc": "2176:37:55", + "nodeType": "YulVariableDeclaration", + "src": "2176:37:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2203:9:55", + "nodeType": "YulIdentifier", + "src": "2203:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2190:12:55", + "nodeType": "YulIdentifier", + "src": "2190:12:55" + }, + "nativeSrc": "2190:23:55", + "nodeType": "YulFunctionCall", + "src": "2190:23:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2180:6:55", + "nodeType": "YulTypedName", + "src": "2180:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2256:16:55", + "nodeType": "YulBlock", + "src": "2256:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2265:1:55", + "nodeType": "YulLiteral", + "src": "2265:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2268:1:55", + "nodeType": "YulLiteral", + "src": "2268:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2258:6:55", + "nodeType": "YulIdentifier", + "src": "2258:6:55" + }, + "nativeSrc": "2258:12:55", + "nodeType": "YulFunctionCall", + "src": "2258:12:55" + }, + "nativeSrc": "2258:12:55", + "nodeType": "YulExpressionStatement", + "src": "2258:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2228:6:55", + "nodeType": "YulIdentifier", + "src": "2228:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2244:2:55", + "nodeType": "YulLiteral", + "src": "2244:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "2248:1:55", + "nodeType": "YulLiteral", + "src": "2248:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2240:3:55", + "nodeType": "YulIdentifier", + "src": "2240:3:55" + }, + "nativeSrc": "2240:10:55", + "nodeType": "YulFunctionCall", + "src": "2240:10:55" + }, + { + "kind": "number", + "nativeSrc": "2252:1:55", + "nodeType": "YulLiteral", + "src": "2252:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2236:3:55", + "nodeType": "YulIdentifier", + "src": "2236:3:55" + }, + "nativeSrc": "2236:18:55", + "nodeType": "YulFunctionCall", + "src": "2236:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2225:2:55", + "nodeType": "YulIdentifier", + "src": "2225:2:55" + }, + "nativeSrc": "2225:30:55", + "nodeType": "YulFunctionCall", + "src": "2225:30:55" + }, + "nativeSrc": "2222:50:55", + "nodeType": "YulIf", + "src": "2222:50:55" + }, + { + "nativeSrc": "2281:32:55", + "nodeType": "YulVariableDeclaration", + "src": "2281:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2295:9:55", + "nodeType": "YulIdentifier", + "src": "2295:9:55" + }, + { + "name": "offset", + "nativeSrc": "2306:6:55", + "nodeType": "YulIdentifier", + "src": "2306:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2291:3:55", + "nodeType": "YulIdentifier", + "src": "2291:3:55" + }, + "nativeSrc": "2291:22:55", + "nodeType": "YulFunctionCall", + "src": "2291:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2285:2:55", + "nodeType": "YulTypedName", + "src": "2285:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2361:16:55", + "nodeType": "YulBlock", + "src": "2361:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2370:1:55", + "nodeType": "YulLiteral", + "src": "2370:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2373:1:55", + "nodeType": "YulLiteral", + "src": "2373:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2363:6:55", + "nodeType": "YulIdentifier", + "src": "2363:6:55" + }, + "nativeSrc": "2363:12:55", + "nodeType": "YulFunctionCall", + "src": "2363:12:55" + }, + "nativeSrc": "2363:12:55", + "nodeType": "YulExpressionStatement", + "src": "2363:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2340:2:55", + "nodeType": "YulIdentifier", + "src": "2340:2:55" + }, + { + "kind": "number", + "nativeSrc": "2344:4:55", + "nodeType": "YulLiteral", + "src": "2344:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2336:3:55", + "nodeType": "YulIdentifier", + "src": "2336:3:55" + }, + "nativeSrc": "2336:13:55", + "nodeType": "YulFunctionCall", + "src": "2336:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "2351:7:55", + "nodeType": "YulIdentifier", + "src": "2351:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2332:3:55", + "nodeType": "YulIdentifier", + "src": "2332:3:55" + }, + "nativeSrc": "2332:27:55", + "nodeType": "YulFunctionCall", + "src": "2332:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2325:6:55", + "nodeType": "YulIdentifier", + "src": "2325:6:55" + }, + "nativeSrc": "2325:35:55", + "nodeType": "YulFunctionCall", + "src": "2325:35:55" + }, + "nativeSrc": "2322:55:55", + "nodeType": "YulIf", + "src": "2322:55:55" + }, + { + "nativeSrc": "2386:84:55", + "nodeType": "YulAssignment", + "src": "2386:84:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2435:2:55", + "nodeType": "YulIdentifier", + "src": "2435:2:55" + }, + { + "kind": "number", + "nativeSrc": "2439:2:55", + "nodeType": "YulLiteral", + "src": "2439:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:55", + "nodeType": "YulIdentifier", + "src": "2431:3:55" + }, + "nativeSrc": "2431:11:55", + "nodeType": "YulFunctionCall", + "src": "2431:11:55" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2457:2:55", + "nodeType": "YulIdentifier", + "src": "2457:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2444:12:55", + "nodeType": "YulIdentifier", + "src": "2444:12:55" + }, + "nativeSrc": "2444:16:55", + "nodeType": "YulFunctionCall", + "src": "2444:16:55" + }, + { + "name": "dataEnd", + "nativeSrc": "2462:7:55", + "nodeType": "YulIdentifier", + "src": "2462:7:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "2396:34:55", + "nodeType": "YulIdentifier", + "src": "2396:34:55" + }, + "nativeSrc": "2396:74:55", + "nodeType": "YulFunctionCall", + "src": "2396:74:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2386:6:55", + "nodeType": "YulIdentifier", + "src": "2386:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "2025:451:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2071:9:55", + "nodeType": "YulTypedName", + "src": "2071:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2082:7:55", + "nodeType": "YulTypedName", + "src": "2082:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2094:6:55", + "nodeType": "YulTypedName", + "src": "2094:6:55", + "type": "" + } + ], + "src": "2025:451:55" + }, + { + "body": { + "nativeSrc": "2547:184:55", + "nodeType": "YulBlock", + "src": "2547:184:55", + "statements": [ + { + "nativeSrc": "2557:10:55", + "nodeType": "YulVariableDeclaration", + "src": "2557:10:55", + "value": { + "kind": "number", + "nativeSrc": "2566:1:55", + "nodeType": "YulLiteral", + "src": "2566:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2561:1:55", + "nodeType": "YulTypedName", + "src": "2561:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2626:63:55", + "nodeType": "YulBlock", + "src": "2626:63:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "2651:3:55", + "nodeType": "YulIdentifier", + "src": "2651:3:55" + }, + { + "name": "i", + "nativeSrc": "2656:1:55", + "nodeType": "YulIdentifier", + "src": "2656:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2647:3:55", + "nodeType": "YulIdentifier", + "src": "2647:3:55" + }, + "nativeSrc": "2647:11:55", + "nodeType": "YulFunctionCall", + "src": "2647:11:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2670:3:55", + "nodeType": "YulIdentifier", + "src": "2670:3:55" + }, + { + "name": "i", + "nativeSrc": "2675:1:55", + "nodeType": "YulIdentifier", + "src": "2675:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2666:3:55", + "nodeType": "YulIdentifier", + "src": "2666:3:55" + }, + "nativeSrc": "2666:11:55", + "nodeType": "YulFunctionCall", + "src": "2666:11:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2660:5:55", + "nodeType": "YulIdentifier", + "src": "2660:5:55" + }, + "nativeSrc": "2660:18:55", + "nodeType": "YulFunctionCall", + "src": "2660:18:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2640:6:55", + "nodeType": "YulIdentifier", + "src": "2640:6:55" + }, + "nativeSrc": "2640:39:55", + "nodeType": "YulFunctionCall", + "src": "2640:39:55" + }, + "nativeSrc": "2640:39:55", + "nodeType": "YulExpressionStatement", + "src": "2640:39:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2587:1:55", + "nodeType": "YulIdentifier", + "src": "2587:1:55" + }, + { + "name": "length", + "nativeSrc": "2590:6:55", + "nodeType": "YulIdentifier", + "src": "2590:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2584:2:55", + "nodeType": "YulIdentifier", + "src": "2584:2:55" + }, + "nativeSrc": "2584:13:55", + "nodeType": "YulFunctionCall", + "src": "2584:13:55" + }, + "nativeSrc": "2576:113:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2598:19:55", + "nodeType": "YulBlock", + "src": "2598:19:55", + "statements": [ + { + "nativeSrc": "2600:15:55", + "nodeType": "YulAssignment", + "src": "2600:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2609:1:55", + "nodeType": "YulIdentifier", + "src": "2609:1:55" + }, + { + "kind": "number", + "nativeSrc": "2612:2:55", + "nodeType": "YulLiteral", + "src": "2612:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2605:3:55", + "nodeType": "YulIdentifier", + "src": "2605:3:55" + }, + "nativeSrc": "2605:10:55", + "nodeType": "YulFunctionCall", + "src": "2605:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2600:1:55", + "nodeType": "YulIdentifier", + "src": "2600:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2580:3:55", + "nodeType": "YulBlock", + "src": "2580:3:55", + "statements": [] + }, + "src": "2576:113:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "2709:3:55", + "nodeType": "YulIdentifier", + "src": "2709:3:55" + }, + { + "name": "length", + "nativeSrc": "2714:6:55", + "nodeType": "YulIdentifier", + "src": "2714:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2705:3:55", + "nodeType": "YulIdentifier", + "src": "2705:3:55" + }, + "nativeSrc": "2705:16:55", + "nodeType": "YulFunctionCall", + "src": "2705:16:55" + }, + { + "kind": "number", + "nativeSrc": "2723:1:55", + "nodeType": "YulLiteral", + "src": "2723:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2698:6:55", + "nodeType": "YulIdentifier", + "src": "2698:6:55" + }, + "nativeSrc": "2698:27:55", + "nodeType": "YulFunctionCall", + "src": "2698:27:55" + }, + "nativeSrc": "2698:27:55", + "nodeType": "YulExpressionStatement", + "src": "2698:27:55" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "2481:250:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "2525:3:55", + "nodeType": "YulTypedName", + "src": "2525:3:55", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "2530:3:55", + "nodeType": "YulTypedName", + "src": "2530:3:55", + "type": "" + }, + { + "name": "length", + "nativeSrc": "2535:6:55", + "nodeType": "YulTypedName", + "src": "2535:6:55", + "type": "" + } + ], + "src": "2481:250:55" + }, + { + "body": { + "nativeSrc": "2786:221:55", + "nodeType": "YulBlock", + "src": "2786:221:55", + "statements": [ + { + "nativeSrc": "2796:26:55", + "nodeType": "YulVariableDeclaration", + "src": "2796:26:55", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2816:5:55", + "nodeType": "YulIdentifier", + "src": "2816:5:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2810:5:55", + "nodeType": "YulIdentifier", + "src": "2810:5:55" + }, + "nativeSrc": "2810:12:55", + "nodeType": "YulFunctionCall", + "src": "2810:12:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "2800:6:55", + "nodeType": "YulTypedName", + "src": "2800:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2838:3:55", + "nodeType": "YulIdentifier", + "src": "2838:3:55" + }, + { + "name": "length", + "nativeSrc": "2843:6:55", + "nodeType": "YulIdentifier", + "src": "2843:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2831:6:55", + "nodeType": "YulIdentifier", + "src": "2831:6:55" + }, + "nativeSrc": "2831:19:55", + "nodeType": "YulFunctionCall", + "src": "2831:19:55" + }, + "nativeSrc": "2831:19:55", + "nodeType": "YulExpressionStatement", + "src": "2831:19:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2898:5:55", + "nodeType": "YulIdentifier", + "src": "2898:5:55" + }, + { + "kind": "number", + "nativeSrc": "2905:4:55", + "nodeType": "YulLiteral", + "src": "2905:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2894:3:55", + "nodeType": "YulIdentifier", + "src": "2894:3:55" + }, + "nativeSrc": "2894:16:55", + "nodeType": "YulFunctionCall", + "src": "2894:16:55" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2916:3:55", + "nodeType": "YulIdentifier", + "src": "2916:3:55" + }, + { + "kind": "number", + "nativeSrc": "2921:4:55", + "nodeType": "YulLiteral", + "src": "2921:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2912:3:55", + "nodeType": "YulIdentifier", + "src": "2912:3:55" + }, + "nativeSrc": "2912:14:55", + "nodeType": "YulFunctionCall", + "src": "2912:14:55" + }, + { + "name": "length", + "nativeSrc": "2928:6:55", + "nodeType": "YulIdentifier", + "src": "2928:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "2859:34:55", + "nodeType": "YulIdentifier", + "src": "2859:34:55" + }, + "nativeSrc": "2859:76:55", + "nodeType": "YulFunctionCall", + "src": "2859:76:55" + }, + "nativeSrc": "2859:76:55", + "nodeType": "YulExpressionStatement", + "src": "2859:76:55" + }, + { + "nativeSrc": "2944:57:55", + "nodeType": "YulAssignment", + "src": "2944:57:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2959:3:55", + "nodeType": "YulIdentifier", + "src": "2959:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "2972:6:55", + "nodeType": "YulIdentifier", + "src": "2972:6:55" + }, + { + "kind": "number", + "nativeSrc": "2980:2:55", + "nodeType": "YulLiteral", + "src": "2980:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2968:3:55", + "nodeType": "YulIdentifier", + "src": "2968:3:55" + }, + "nativeSrc": "2968:15:55", + "nodeType": "YulFunctionCall", + "src": "2968:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2989:2:55", + "nodeType": "YulLiteral", + "src": "2989:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2985:3:55", + "nodeType": "YulIdentifier", + "src": "2985:3:55" + }, + "nativeSrc": "2985:7:55", + "nodeType": "YulFunctionCall", + "src": "2985:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2964:3:55", + "nodeType": "YulIdentifier", + "src": "2964:3:55" + }, + "nativeSrc": "2964:29:55", + "nodeType": "YulFunctionCall", + "src": "2964:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2955:3:55", + "nodeType": "YulIdentifier", + "src": "2955:3:55" + }, + "nativeSrc": "2955:39:55", + "nodeType": "YulFunctionCall", + "src": "2955:39:55" + }, + { + "kind": "number", + "nativeSrc": "2996:4:55", + "nodeType": "YulLiteral", + "src": "2996:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2951:3:55", + "nodeType": "YulIdentifier", + "src": "2951:3:55" + }, + "nativeSrc": "2951:50:55", + "nodeType": "YulFunctionCall", + "src": "2951:50:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "2944:3:55", + "nodeType": "YulIdentifier", + "src": "2944:3:55" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "2736:271:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2763:5:55", + "nodeType": "YulTypedName", + "src": "2763:5:55", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "2770:3:55", + "nodeType": "YulTypedName", + "src": "2770:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "2778:3:55", + "nodeType": "YulTypedName", + "src": "2778:3:55", + "type": "" + } + ], + "src": "2736:271:55" + }, + { + "body": { + "nativeSrc": "3133:99:55", + "nodeType": "YulBlock", + "src": "3133:99:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3150:9:55", + "nodeType": "YulIdentifier", + "src": "3150:9:55" + }, + { + "kind": "number", + "nativeSrc": "3161:2:55", + "nodeType": "YulLiteral", + "src": "3161:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3143:6:55", + "nodeType": "YulIdentifier", + "src": "3143:6:55" + }, + "nativeSrc": "3143:21:55", + "nodeType": "YulFunctionCall", + "src": "3143:21:55" + }, + "nativeSrc": "3143:21:55", + "nodeType": "YulExpressionStatement", + "src": "3143:21:55" + }, + { + "nativeSrc": "3173:53:55", + "nodeType": "YulAssignment", + "src": "3173:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3199:6:55", + "nodeType": "YulIdentifier", + "src": "3199:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3211:9:55", + "nodeType": "YulIdentifier", + "src": "3211:9:55" + }, + { + "kind": "number", + "nativeSrc": "3222:2:55", + "nodeType": "YulLiteral", + "src": "3222:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3207:3:55", + "nodeType": "YulIdentifier", + "src": "3207:3:55" + }, + "nativeSrc": "3207:18:55", + "nodeType": "YulFunctionCall", + "src": "3207:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "3181:17:55", + "nodeType": "YulIdentifier", + "src": "3181:17:55" + }, + "nativeSrc": "3181:45:55", + "nodeType": "YulFunctionCall", + "src": "3181:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3173:4:55", + "nodeType": "YulIdentifier", + "src": "3173:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "3012:220:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3102:9:55", + "nodeType": "YulTypedName", + "src": "3102:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3113:6:55", + "nodeType": "YulTypedName", + "src": "3113:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3124:4:55", + "nodeType": "YulTypedName", + "src": "3124:4:55", + "type": "" + } + ], + "src": "3012:220:55" + }, + { + "body": { + "nativeSrc": "3307:110:55", + "nodeType": "YulBlock", + "src": "3307:110:55", + "statements": [ + { + "body": { + "nativeSrc": "3353:16:55", + "nodeType": "YulBlock", + "src": "3353:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3362:1:55", + "nodeType": "YulLiteral", + "src": "3362:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3365:1:55", + "nodeType": "YulLiteral", + "src": "3365:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3355:6:55", + "nodeType": "YulIdentifier", + "src": "3355:6:55" + }, + "nativeSrc": "3355:12:55", + "nodeType": "YulFunctionCall", + "src": "3355:12:55" + }, + "nativeSrc": "3355:12:55", + "nodeType": "YulExpressionStatement", + "src": "3355:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3328:7:55", + "nodeType": "YulIdentifier", + "src": "3328:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3337:9:55", + "nodeType": "YulIdentifier", + "src": "3337:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3324:3:55", + "nodeType": "YulIdentifier", + "src": "3324:3:55" + }, + "nativeSrc": "3324:23:55", + "nodeType": "YulFunctionCall", + "src": "3324:23:55" + }, + { + "kind": "number", + "nativeSrc": "3349:2:55", + "nodeType": "YulLiteral", + "src": "3349:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3320:3:55", + "nodeType": "YulIdentifier", + "src": "3320:3:55" + }, + "nativeSrc": "3320:32:55", + "nodeType": "YulFunctionCall", + "src": "3320:32:55" + }, + "nativeSrc": "3317:52:55", + "nodeType": "YulIf", + "src": "3317:52:55" + }, + { + "nativeSrc": "3378:33:55", + "nodeType": "YulAssignment", + "src": "3378:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3401:9:55", + "nodeType": "YulIdentifier", + "src": "3401:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3388:12:55", + "nodeType": "YulIdentifier", + "src": "3388:12:55" + }, + "nativeSrc": "3388:23:55", + "nodeType": "YulFunctionCall", + "src": "3388:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3378:6:55", + "nodeType": "YulIdentifier", + "src": "3378:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "3237:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3273:9:55", + "nodeType": "YulTypedName", + "src": "3273:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3284:7:55", + "nodeType": "YulTypedName", + "src": "3284:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3296:6:55", + "nodeType": "YulTypedName", + "src": "3296:6:55", + "type": "" + } + ], + "src": "3237:180:55" + }, + { + "body": { + "nativeSrc": "3492:110:55", + "nodeType": "YulBlock", + "src": "3492:110:55", + "statements": [ + { + "body": { + "nativeSrc": "3538:16:55", + "nodeType": "YulBlock", + "src": "3538:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3547:1:55", + "nodeType": "YulLiteral", + "src": "3547:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3550:1:55", + "nodeType": "YulLiteral", + "src": "3550:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3540:6:55", + "nodeType": "YulIdentifier", + "src": "3540:6:55" + }, + "nativeSrc": "3540:12:55", + "nodeType": "YulFunctionCall", + "src": "3540:12:55" + }, + "nativeSrc": "3540:12:55", + "nodeType": "YulExpressionStatement", + "src": "3540:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3513:7:55", + "nodeType": "YulIdentifier", + "src": "3513:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3522:9:55", + "nodeType": "YulIdentifier", + "src": "3522:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3509:3:55", + "nodeType": "YulIdentifier", + "src": "3509:3:55" + }, + "nativeSrc": "3509:23:55", + "nodeType": "YulFunctionCall", + "src": "3509:23:55" + }, + { + "kind": "number", + "nativeSrc": "3534:2:55", + "nodeType": "YulLiteral", + "src": "3534:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3505:3:55", + "nodeType": "YulIdentifier", + "src": "3505:3:55" + }, + "nativeSrc": "3505:32:55", + "nodeType": "YulFunctionCall", + "src": "3505:32:55" + }, + "nativeSrc": "3502:52:55", + "nodeType": "YulIf", + "src": "3502:52:55" + }, + { + "nativeSrc": "3563:33:55", + "nodeType": "YulAssignment", + "src": "3563:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3586:9:55", + "nodeType": "YulIdentifier", + "src": "3586:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3573:12:55", + "nodeType": "YulIdentifier", + "src": "3573:12:55" + }, + "nativeSrc": "3573:23:55", + "nodeType": "YulFunctionCall", + "src": "3573:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3563:6:55", + "nodeType": "YulIdentifier", + "src": "3563:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "3422:180:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3458:9:55", + "nodeType": "YulTypedName", + "src": "3458:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3469:7:55", + "nodeType": "YulTypedName", + "src": "3469:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3481:6:55", + "nodeType": "YulTypedName", + "src": "3481:6:55", + "type": "" + } + ], + "src": "3422:180:55" + }, + { + "body": { + "nativeSrc": "3694:167:55", + "nodeType": "YulBlock", + "src": "3694:167:55", + "statements": [ + { + "body": { + "nativeSrc": "3740:16:55", + "nodeType": "YulBlock", + "src": "3740:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3749:1:55", + "nodeType": "YulLiteral", + "src": "3749:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3752:1:55", + "nodeType": "YulLiteral", + "src": "3752:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3742:6:55", + "nodeType": "YulIdentifier", + "src": "3742:6:55" + }, + "nativeSrc": "3742:12:55", + "nodeType": "YulFunctionCall", + "src": "3742:12:55" + }, + "nativeSrc": "3742:12:55", + "nodeType": "YulExpressionStatement", + "src": "3742:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3715:7:55", + "nodeType": "YulIdentifier", + "src": "3715:7:55" + }, + { + "name": "headStart", + "nativeSrc": "3724:9:55", + "nodeType": "YulIdentifier", + "src": "3724:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3711:3:55", + "nodeType": "YulIdentifier", + "src": "3711:3:55" + }, + "nativeSrc": "3711:23:55", + "nodeType": "YulFunctionCall", + "src": "3711:23:55" + }, + { + "kind": "number", + "nativeSrc": "3736:2:55", + "nodeType": "YulLiteral", + "src": "3736:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3707:3:55", + "nodeType": "YulIdentifier", + "src": "3707:3:55" + }, + "nativeSrc": "3707:32:55", + "nodeType": "YulFunctionCall", + "src": "3707:32:55" + }, + "nativeSrc": "3704:52:55", + "nodeType": "YulIf", + "src": "3704:52:55" + }, + { + "nativeSrc": "3765:33:55", + "nodeType": "YulAssignment", + "src": "3765:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3788:9:55", + "nodeType": "YulIdentifier", + "src": "3788:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3775:12:55", + "nodeType": "YulIdentifier", + "src": "3775:12:55" + }, + "nativeSrc": "3775:23:55", + "nodeType": "YulFunctionCall", + "src": "3775:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3765:6:55", + "nodeType": "YulIdentifier", + "src": "3765:6:55" + } + ] + }, + { + "nativeSrc": "3807:48:55", + "nodeType": "YulAssignment", + "src": "3807:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3840:9:55", + "nodeType": "YulIdentifier", + "src": "3840:9:55" + }, + { + "kind": "number", + "nativeSrc": "3851:2:55", + "nodeType": "YulLiteral", + "src": "3851:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3836:3:55", + "nodeType": "YulIdentifier", + "src": "3836:3:55" + }, + "nativeSrc": "3836:18:55", + "nodeType": "YulFunctionCall", + "src": "3836:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3817:18:55", + "nodeType": "YulIdentifier", + "src": "3817:18:55" + }, + "nativeSrc": "3817:38:55", + "nodeType": "YulFunctionCall", + "src": "3817:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3807:6:55", + "nodeType": "YulIdentifier", + "src": "3807:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "3607:254:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3652:9:55", + "nodeType": "YulTypedName", + "src": "3652:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3663:7:55", + "nodeType": "YulTypedName", + "src": "3663:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3675:6:55", + "nodeType": "YulTypedName", + "src": "3675:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3683:6:55", + "nodeType": "YulTypedName", + "src": "3683:6:55", + "type": "" + } + ], + "src": "3607:254:55" + }, + { + "body": { + "nativeSrc": "3967:76:55", + "nodeType": "YulBlock", + "src": "3967:76:55", + "statements": [ + { + "nativeSrc": "3977:26:55", + "nodeType": "YulAssignment", + "src": "3977:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3989:9:55", + "nodeType": "YulIdentifier", + "src": "3989:9:55" + }, + { + "kind": "number", + "nativeSrc": "4000:2:55", + "nodeType": "YulLiteral", + "src": "4000:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3985:3:55", + "nodeType": "YulIdentifier", + "src": "3985:3:55" + }, + "nativeSrc": "3985:18:55", + "nodeType": "YulFunctionCall", + "src": "3985:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3977:4:55", + "nodeType": "YulIdentifier", + "src": "3977:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4019:9:55", + "nodeType": "YulIdentifier", + "src": "4019:9:55" + }, + { + "name": "value0", + "nativeSrc": "4030:6:55", + "nodeType": "YulIdentifier", + "src": "4030:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4012:6:55", + "nodeType": "YulIdentifier", + "src": "4012:6:55" + }, + "nativeSrc": "4012:25:55", + "nodeType": "YulFunctionCall", + "src": "4012:25:55" + }, + "nativeSrc": "4012:25:55", + "nodeType": "YulExpressionStatement", + "src": "4012:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3866:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3936:9:55", + "nodeType": "YulTypedName", + "src": "3936:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3947:6:55", + "nodeType": "YulTypedName", + "src": "3947:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3958:4:55", + "nodeType": "YulTypedName", + "src": "3958:4:55", + "type": "" + } + ], + "src": "3866:177:55" + }, + { + "body": { + "nativeSrc": "4144:428:55", + "nodeType": "YulBlock", + "src": "4144:428:55", + "statements": [ + { + "body": { + "nativeSrc": "4190:16:55", + "nodeType": "YulBlock", + "src": "4190:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4199:1:55", + "nodeType": "YulLiteral", + "src": "4199:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4202:1:55", + "nodeType": "YulLiteral", + "src": "4202:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4192:6:55", + "nodeType": "YulIdentifier", + "src": "4192:6:55" + }, + "nativeSrc": "4192:12:55", + "nodeType": "YulFunctionCall", + "src": "4192:12:55" + }, + "nativeSrc": "4192:12:55", + "nodeType": "YulExpressionStatement", + "src": "4192:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4165:7:55", + "nodeType": "YulIdentifier", + "src": "4165:7:55" + }, + { + "name": "headStart", + "nativeSrc": "4174:9:55", + "nodeType": "YulIdentifier", + "src": "4174:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4161:3:55", + "nodeType": "YulIdentifier", + "src": "4161:3:55" + }, + "nativeSrc": "4161:23:55", + "nodeType": "YulFunctionCall", + "src": "4161:23:55" + }, + { + "kind": "number", + "nativeSrc": "4186:2:55", + "nodeType": "YulLiteral", + "src": "4186:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4157:3:55", + "nodeType": "YulIdentifier", + "src": "4157:3:55" + }, + "nativeSrc": "4157:32:55", + "nodeType": "YulFunctionCall", + "src": "4157:32:55" + }, + "nativeSrc": "4154:52:55", + "nodeType": "YulIf", + "src": "4154:52:55" + }, + { + "nativeSrc": "4215:39:55", + "nodeType": "YulAssignment", + "src": "4215:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4244:9:55", + "nodeType": "YulIdentifier", + "src": "4244:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "4225:18:55", + "nodeType": "YulIdentifier", + "src": "4225:18:55" + }, + "nativeSrc": "4225:29:55", + "nodeType": "YulFunctionCall", + "src": "4225:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4215:6:55", + "nodeType": "YulIdentifier", + "src": "4215:6:55" + } + ] + }, + { + "nativeSrc": "4263:46:55", + "nodeType": "YulVariableDeclaration", + "src": "4263:46:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4294:9:55", + "nodeType": "YulIdentifier", + "src": "4294:9:55" + }, + { + "kind": "number", + "nativeSrc": "4305:2:55", + "nodeType": "YulLiteral", + "src": "4305:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4290:3:55", + "nodeType": "YulIdentifier", + "src": "4290:3:55" + }, + "nativeSrc": "4290:18:55", + "nodeType": "YulFunctionCall", + "src": "4290:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4277:12:55", + "nodeType": "YulIdentifier", + "src": "4277:12:55" + }, + "nativeSrc": "4277:32:55", + "nodeType": "YulFunctionCall", + "src": "4277:32:55" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4267:6:55", + "nodeType": "YulTypedName", + "src": "4267:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4352:16:55", + "nodeType": "YulBlock", + "src": "4352:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4361:1:55", + "nodeType": "YulLiteral", + "src": "4361:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4364:1:55", + "nodeType": "YulLiteral", + "src": "4364:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4354:6:55", + "nodeType": "YulIdentifier", + "src": "4354:6:55" + }, + "nativeSrc": "4354:12:55", + "nodeType": "YulFunctionCall", + "src": "4354:12:55" + }, + "nativeSrc": "4354:12:55", + "nodeType": "YulExpressionStatement", + "src": "4354:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4324:6:55", + "nodeType": "YulIdentifier", + "src": "4324:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4340:2:55", + "nodeType": "YulLiteral", + "src": "4340:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4344:1:55", + "nodeType": "YulLiteral", + "src": "4344:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4336:3:55", + "nodeType": "YulIdentifier", + "src": "4336:3:55" + }, + "nativeSrc": "4336:10:55", + "nodeType": "YulFunctionCall", + "src": "4336:10:55" + }, + { + "kind": "number", + "nativeSrc": "4348:1:55", + "nodeType": "YulLiteral", + "src": "4348:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4332:3:55", + "nodeType": "YulIdentifier", + "src": "4332:3:55" + }, + "nativeSrc": "4332:18:55", + "nodeType": "YulFunctionCall", + "src": "4332:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4321:2:55", + "nodeType": "YulIdentifier", + "src": "4321:2:55" + }, + "nativeSrc": "4321:30:55", + "nodeType": "YulFunctionCall", + "src": "4321:30:55" + }, + "nativeSrc": "4318:50:55", + "nodeType": "YulIf", + "src": "4318:50:55" + }, + { + "nativeSrc": "4377:32:55", + "nodeType": "YulVariableDeclaration", + "src": "4377:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4391:9:55", + "nodeType": "YulIdentifier", + "src": "4391:9:55" + }, + { + "name": "offset", + "nativeSrc": "4402:6:55", + "nodeType": "YulIdentifier", + "src": "4402:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4387:3:55", + "nodeType": "YulIdentifier", + "src": "4387:3:55" + }, + "nativeSrc": "4387:22:55", + "nodeType": "YulFunctionCall", + "src": "4387:22:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4381:2:55", + "nodeType": "YulTypedName", + "src": "4381:2:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4457:16:55", + "nodeType": "YulBlock", + "src": "4457:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4466:1:55", + "nodeType": "YulLiteral", + "src": "4466:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4469:1:55", + "nodeType": "YulLiteral", + "src": "4469:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4459:6:55", + "nodeType": "YulIdentifier", + "src": "4459:6:55" + }, + "nativeSrc": "4459:12:55", + "nodeType": "YulFunctionCall", + "src": "4459:12:55" + }, + "nativeSrc": "4459:12:55", + "nodeType": "YulExpressionStatement", + "src": "4459:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4436:2:55", + "nodeType": "YulIdentifier", + "src": "4436:2:55" + }, + { + "kind": "number", + "nativeSrc": "4440:4:55", + "nodeType": "YulLiteral", + "src": "4440:4:55", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4432:3:55", + "nodeType": "YulIdentifier", + "src": "4432:3:55" + }, + "nativeSrc": "4432:13:55", + "nodeType": "YulFunctionCall", + "src": "4432:13:55" + }, + { + "name": "dataEnd", + "nativeSrc": "4447:7:55", + "nodeType": "YulIdentifier", + "src": "4447:7:55" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4428:3:55", + "nodeType": "YulIdentifier", + "src": "4428:3:55" + }, + "nativeSrc": "4428:27:55", + "nodeType": "YulFunctionCall", + "src": "4428:27:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4421:6:55", + "nodeType": "YulIdentifier", + "src": "4421:6:55" + }, + "nativeSrc": "4421:35:55", + "nodeType": "YulFunctionCall", + "src": "4421:35:55" + }, + "nativeSrc": "4418:55:55", + "nodeType": "YulIf", + "src": "4418:55:55" + }, + { + "nativeSrc": "4482:84:55", + "nodeType": "YulAssignment", + "src": "4482:84:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4531:2:55", + "nodeType": "YulIdentifier", + "src": "4531:2:55" + }, + { + "kind": "number", + "nativeSrc": "4535:2:55", + "nodeType": "YulLiteral", + "src": "4535:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4527:3:55", + "nodeType": "YulIdentifier", + "src": "4527:3:55" + }, + "nativeSrc": "4527:11:55", + "nodeType": "YulFunctionCall", + "src": "4527:11:55" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4553:2:55", + "nodeType": "YulIdentifier", + "src": "4553:2:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4540:12:55", + "nodeType": "YulIdentifier", + "src": "4540:12:55" + }, + "nativeSrc": "4540:16:55", + "nodeType": "YulFunctionCall", + "src": "4540:16:55" + }, + { + "name": "dataEnd", + "nativeSrc": "4558:7:55", + "nodeType": "YulIdentifier", + "src": "4558:7:55" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "4492:34:55", + "nodeType": "YulIdentifier", + "src": "4492:34:55" + }, + "nativeSrc": "4492:74:55", + "nodeType": "YulFunctionCall", + "src": "4492:74:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4482:6:55", + "nodeType": "YulIdentifier", + "src": "4482:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "4048:524:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4102:9:55", + "nodeType": "YulTypedName", + "src": "4102:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4113:7:55", + "nodeType": "YulTypedName", + "src": "4113:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4125:6:55", + "nodeType": "YulTypedName", + "src": "4125:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4133:6:55", + "nodeType": "YulTypedName", + "src": "4133:6:55", + "type": "" + } + ], + "src": "4048:524:55" + }, + { + "body": { + "nativeSrc": "4728:481:55", + "nodeType": "YulBlock", + "src": "4728:481:55", + "statements": [ + { + "nativeSrc": "4738:12:55", + "nodeType": "YulVariableDeclaration", + "src": "4738:12:55", + "value": { + "kind": "number", + "nativeSrc": "4748:2:55", + "nodeType": "YulLiteral", + "src": "4748:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4742:2:55", + "nodeType": "YulTypedName", + "src": "4742:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4759:32:55", + "nodeType": "YulVariableDeclaration", + "src": "4759:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4777:9:55", + "nodeType": "YulIdentifier", + "src": "4777:9:55" + }, + { + "kind": "number", + "nativeSrc": "4788:2:55", + "nodeType": "YulLiteral", + "src": "4788:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4773:3:55", + "nodeType": "YulIdentifier", + "src": "4773:3:55" + }, + "nativeSrc": "4773:18:55", + "nodeType": "YulFunctionCall", + "src": "4773:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "4763:6:55", + "nodeType": "YulTypedName", + "src": "4763:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4807:9:55", + "nodeType": "YulIdentifier", + "src": "4807:9:55" + }, + { + "kind": "number", + "nativeSrc": "4818:2:55", + "nodeType": "YulLiteral", + "src": "4818:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4800:6:55", + "nodeType": "YulIdentifier", + "src": "4800:6:55" + }, + "nativeSrc": "4800:21:55", + "nodeType": "YulFunctionCall", + "src": "4800:21:55" + }, + "nativeSrc": "4800:21:55", + "nodeType": "YulExpressionStatement", + "src": "4800:21:55" + }, + { + "nativeSrc": "4830:17:55", + "nodeType": "YulVariableDeclaration", + "src": "4830:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "4841:6:55", + "nodeType": "YulIdentifier", + "src": "4841:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "4834:3:55", + "nodeType": "YulTypedName", + "src": "4834:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4856:27:55", + "nodeType": "YulVariableDeclaration", + "src": "4856:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4876:6:55", + "nodeType": "YulIdentifier", + "src": "4876:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4870:5:55", + "nodeType": "YulIdentifier", + "src": "4870:5:55" + }, + "nativeSrc": "4870:13:55", + "nodeType": "YulFunctionCall", + "src": "4870:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4860:6:55", + "nodeType": "YulTypedName", + "src": "4860:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "4899:6:55", + "nodeType": "YulIdentifier", + "src": "4899:6:55" + }, + { + "name": "length", + "nativeSrc": "4907:6:55", + "nodeType": "YulIdentifier", + "src": "4907:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4892:6:55", + "nodeType": "YulIdentifier", + "src": "4892:6:55" + }, + "nativeSrc": "4892:22:55", + "nodeType": "YulFunctionCall", + "src": "4892:22:55" + }, + "nativeSrc": "4892:22:55", + "nodeType": "YulExpressionStatement", + "src": "4892:22:55" + }, + { + "nativeSrc": "4923:25:55", + "nodeType": "YulAssignment", + "src": "4923:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4934:9:55", + "nodeType": "YulIdentifier", + "src": "4934:9:55" + }, + { + "kind": "number", + "nativeSrc": "4945:2:55", + "nodeType": "YulLiteral", + "src": "4945:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4930:3:55", + "nodeType": "YulIdentifier", + "src": "4930:3:55" + }, + "nativeSrc": "4930:18:55", + "nodeType": "YulFunctionCall", + "src": "4930:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "4923:3:55", + "nodeType": "YulIdentifier", + "src": "4923:3:55" + } + ] + }, + { + "nativeSrc": "4957:29:55", + "nodeType": "YulVariableDeclaration", + "src": "4957:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4975:6:55", + "nodeType": "YulIdentifier", + "src": "4975:6:55" + }, + { + "kind": "number", + "nativeSrc": "4983:2:55", + "nodeType": "YulLiteral", + "src": "4983:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4971:3:55", + "nodeType": "YulIdentifier", + "src": "4971:3:55" + }, + "nativeSrc": "4971:15:55", + "nodeType": "YulFunctionCall", + "src": "4971:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "4961:6:55", + "nodeType": "YulTypedName", + "src": "4961:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:10:55", + "nodeType": "YulVariableDeclaration", + "src": "4995:10:55", + "value": { + "kind": "number", + "nativeSrc": "5004:1:55", + "nodeType": "YulLiteral", + "src": "5004:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4999:1:55", + "nodeType": "YulTypedName", + "src": "4999:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5063:120:55", + "nodeType": "YulBlock", + "src": "5063:120:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5084:3:55", + "nodeType": "YulIdentifier", + "src": "5084:3:55" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5095:6:55", + "nodeType": "YulIdentifier", + "src": "5095:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5089:5:55", + "nodeType": "YulIdentifier", + "src": "5089:5:55" + }, + "nativeSrc": "5089:13:55", + "nodeType": "YulFunctionCall", + "src": "5089:13:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5077:6:55", + "nodeType": "YulIdentifier", + "src": "5077:6:55" + }, + "nativeSrc": "5077:26:55", + "nodeType": "YulFunctionCall", + "src": "5077:26:55" + }, + "nativeSrc": "5077:26:55", + "nodeType": "YulExpressionStatement", + "src": "5077:26:55" + }, + { + "nativeSrc": "5116:19:55", + "nodeType": "YulAssignment", + "src": "5116:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5127:3:55", + "nodeType": "YulIdentifier", + "src": "5127:3:55" + }, + { + "name": "_1", + "nativeSrc": "5132:2:55", + "nodeType": "YulIdentifier", + "src": "5132:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5123:3:55", + "nodeType": "YulIdentifier", + "src": "5123:3:55" + }, + "nativeSrc": "5123:12:55", + "nodeType": "YulFunctionCall", + "src": "5123:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "5116:3:55", + "nodeType": "YulIdentifier", + "src": "5116:3:55" + } + ] + }, + { + "nativeSrc": "5148:25:55", + "nodeType": "YulAssignment", + "src": "5148:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5162:6:55", + "nodeType": "YulIdentifier", + "src": "5162:6:55" + }, + { + "name": "_1", + "nativeSrc": "5170:2:55", + "nodeType": "YulIdentifier", + "src": "5170:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5158:3:55", + "nodeType": "YulIdentifier", + "src": "5158:3:55" + }, + "nativeSrc": "5158:15:55", + "nodeType": "YulFunctionCall", + "src": "5158:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "5148:6:55", + "nodeType": "YulIdentifier", + "src": "5148:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5025:1:55", + "nodeType": "YulIdentifier", + "src": "5025:1:55" + }, + { + "name": "length", + "nativeSrc": "5028:6:55", + "nodeType": "YulIdentifier", + "src": "5028:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5022:2:55", + "nodeType": "YulIdentifier", + "src": "5022:2:55" + }, + "nativeSrc": "5022:13:55", + "nodeType": "YulFunctionCall", + "src": "5022:13:55" + }, + "nativeSrc": "5014:169:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5036:18:55", + "nodeType": "YulBlock", + "src": "5036:18:55", + "statements": [ + { + "nativeSrc": "5038:14:55", + "nodeType": "YulAssignment", + "src": "5038:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5047:1:55", + "nodeType": "YulIdentifier", + "src": "5047:1:55" + }, + { + "kind": "number", + "nativeSrc": "5050:1:55", + "nodeType": "YulLiteral", + "src": "5050:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5043:3:55", + "nodeType": "YulIdentifier", + "src": "5043:3:55" + }, + "nativeSrc": "5043:9:55", + "nodeType": "YulFunctionCall", + "src": "5043:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5038:1:55", + "nodeType": "YulIdentifier", + "src": "5038:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5018:3:55", + "nodeType": "YulBlock", + "src": "5018:3:55", + "statements": [] + }, + "src": "5014:169:55" + }, + { + "nativeSrc": "5192:11:55", + "nodeType": "YulAssignment", + "src": "5192:11:55", + "value": { + "name": "pos", + "nativeSrc": "5200:3:55", + "nodeType": "YulIdentifier", + "src": "5200:3:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5192:4:55", + "nodeType": "YulIdentifier", + "src": "5192:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "4577:632:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4697:9:55", + "nodeType": "YulTypedName", + "src": "4697:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4708:6:55", + "nodeType": "YulTypedName", + "src": "4708:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4719:4:55", + "nodeType": "YulTypedName", + "src": "4719:4:55", + "type": "" + } + ], + "src": "4577:632:55" + }, + { + "body": { + "nativeSrc": "5301:161:55", + "nodeType": "YulBlock", + "src": "5301:161:55", + "statements": [ + { + "body": { + "nativeSrc": "5347:16:55", + "nodeType": "YulBlock", + "src": "5347:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5356:1:55", + "nodeType": "YulLiteral", + "src": "5356:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5359:1:55", + "nodeType": "YulLiteral", + "src": "5359:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5349:6:55", + "nodeType": "YulIdentifier", + "src": "5349:6:55" + }, + "nativeSrc": "5349:12:55", + "nodeType": "YulFunctionCall", + "src": "5349:12:55" + }, + "nativeSrc": "5349:12:55", + "nodeType": "YulExpressionStatement", + "src": "5349:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5322:7:55", + "nodeType": "YulIdentifier", + "src": "5322:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5331:9:55", + "nodeType": "YulIdentifier", + "src": "5331:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5318:3:55", + "nodeType": "YulIdentifier", + "src": "5318:3:55" + }, + "nativeSrc": "5318:23:55", + "nodeType": "YulFunctionCall", + "src": "5318:23:55" + }, + { + "kind": "number", + "nativeSrc": "5343:2:55", + "nodeType": "YulLiteral", + "src": "5343:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5314:3:55", + "nodeType": "YulIdentifier", + "src": "5314:3:55" + }, + "nativeSrc": "5314:32:55", + "nodeType": "YulFunctionCall", + "src": "5314:32:55" + }, + "nativeSrc": "5311:52:55", + "nodeType": "YulIf", + "src": "5311:52:55" + }, + { + "nativeSrc": "5372:33:55", + "nodeType": "YulAssignment", + "src": "5372:33:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5395:9:55", + "nodeType": "YulIdentifier", + "src": "5395:9:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5382:12:55", + "nodeType": "YulIdentifier", + "src": "5382:12:55" + }, + "nativeSrc": "5382:23:55", + "nodeType": "YulFunctionCall", + "src": "5382:23:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5372:6:55", + "nodeType": "YulIdentifier", + "src": "5372:6:55" + } + ] + }, + { + "nativeSrc": "5414:42:55", + "nodeType": "YulAssignment", + "src": "5414:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5441:9:55", + "nodeType": "YulIdentifier", + "src": "5441:9:55" + }, + { + "kind": "number", + "nativeSrc": "5452:2:55", + "nodeType": "YulLiteral", + "src": "5452:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5437:3:55", + "nodeType": "YulIdentifier", + "src": "5437:3:55" + }, + "nativeSrc": "5437:18:55", + "nodeType": "YulFunctionCall", + "src": "5437:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5424:12:55", + "nodeType": "YulIdentifier", + "src": "5424:12:55" + }, + "nativeSrc": "5424:32:55", + "nodeType": "YulFunctionCall", + "src": "5424:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5414:6:55", + "nodeType": "YulIdentifier", + "src": "5414:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "5214:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5259:9:55", + "nodeType": "YulTypedName", + "src": "5259:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5270:7:55", + "nodeType": "YulTypedName", + "src": "5270:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5282:6:55", + "nodeType": "YulTypedName", + "src": "5282:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5290:6:55", + "nodeType": "YulTypedName", + "src": "5290:6:55", + "type": "" + } + ], + "src": "5214:248:55" + }, + { + "body": { + "nativeSrc": "5622:398:55", + "nodeType": "YulBlock", + "src": "5622:398:55", + "statements": [ + { + "body": { + "nativeSrc": "5669:16:55", + "nodeType": "YulBlock", + "src": "5669:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5678:1:55", + "nodeType": "YulLiteral", + "src": "5678:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5681:1:55", + "nodeType": "YulLiteral", + "src": "5681:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5671:6:55", + "nodeType": "YulIdentifier", + "src": "5671:6:55" + }, + "nativeSrc": "5671:12:55", + "nodeType": "YulFunctionCall", + "src": "5671:12:55" + }, + "nativeSrc": "5671:12:55", + "nodeType": "YulExpressionStatement", + "src": "5671:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5643:7:55", + "nodeType": "YulIdentifier", + "src": "5643:7:55" + }, + { + "name": "headStart", + "nativeSrc": "5652:9:55", + "nodeType": "YulIdentifier", + "src": "5652:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5639:3:55", + "nodeType": "YulIdentifier", + "src": "5639:3:55" + }, + "nativeSrc": "5639:23:55", + "nodeType": "YulFunctionCall", + "src": "5639:23:55" + }, + { + "kind": "number", + "nativeSrc": "5664:3:55", + "nodeType": "YulLiteral", + "src": "5664:3:55", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5635:3:55", + "nodeType": "YulIdentifier", + "src": "5635:3:55" + }, + "nativeSrc": "5635:33:55", + "nodeType": "YulFunctionCall", + "src": "5635:33:55" + }, + "nativeSrc": "5632:53:55", + "nodeType": "YulIf", + "src": "5632:53:55" + }, + { + "nativeSrc": "5694:39:55", + "nodeType": "YulAssignment", + "src": "5694:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5723:9:55", + "nodeType": "YulIdentifier", + "src": "5723:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5704:18:55", + "nodeType": "YulIdentifier", + "src": "5704:18:55" + }, + "nativeSrc": "5704:29:55", + "nodeType": "YulFunctionCall", + "src": "5704:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5694:6:55", + "nodeType": "YulIdentifier", + "src": "5694:6:55" + } + ] + }, + { + "nativeSrc": "5742:48:55", + "nodeType": "YulAssignment", + "src": "5742:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5775:9:55", + "nodeType": "YulIdentifier", + "src": "5775:9:55" + }, + { + "kind": "number", + "nativeSrc": "5786:2:55", + "nodeType": "YulLiteral", + "src": "5786:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5771:3:55", + "nodeType": "YulIdentifier", + "src": "5771:3:55" + }, + "nativeSrc": "5771:18:55", + "nodeType": "YulFunctionCall", + "src": "5771:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5752:18:55", + "nodeType": "YulIdentifier", + "src": "5752:18:55" + }, + "nativeSrc": "5752:38:55", + "nodeType": "YulFunctionCall", + "src": "5752:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5742:6:55", + "nodeType": "YulIdentifier", + "src": "5742:6:55" + } + ] + }, + { + "nativeSrc": "5799:48:55", + "nodeType": "YulAssignment", + "src": "5799:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5832:9:55", + "nodeType": "YulIdentifier", + "src": "5832:9:55" + }, + { + "kind": "number", + "nativeSrc": "5843:2:55", + "nodeType": "YulLiteral", + "src": "5843:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5828:3:55", + "nodeType": "YulIdentifier", + "src": "5828:3:55" + }, + "nativeSrc": "5828:18:55", + "nodeType": "YulFunctionCall", + "src": "5828:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5809:18:55", + "nodeType": "YulIdentifier", + "src": "5809:18:55" + }, + "nativeSrc": "5809:38:55", + "nodeType": "YulFunctionCall", + "src": "5809:38:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5799:6:55", + "nodeType": "YulIdentifier", + "src": "5799:6:55" + } + ] + }, + { + "nativeSrc": "5856:48:55", + "nodeType": "YulAssignment", + "src": "5856:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5889:9:55", + "nodeType": "YulIdentifier", + "src": "5889:9:55" + }, + { + "kind": "number", + "nativeSrc": "5900:2:55", + "nodeType": "YulLiteral", + "src": "5900:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5885:3:55", + "nodeType": "YulIdentifier", + "src": "5885:3:55" + }, + "nativeSrc": "5885:18:55", + "nodeType": "YulFunctionCall", + "src": "5885:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5866:18:55", + "nodeType": "YulIdentifier", + "src": "5866:18:55" + }, + "nativeSrc": "5866:38:55", + "nodeType": "YulFunctionCall", + "src": "5866:38:55" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "5856:6:55", + "nodeType": "YulIdentifier", + "src": "5856:6:55" + } + ] + }, + { + "nativeSrc": "5913:49:55", + "nodeType": "YulAssignment", + "src": "5913:49:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5946:9:55", + "nodeType": "YulIdentifier", + "src": "5946:9:55" + }, + { + "kind": "number", + "nativeSrc": "5957:3:55", + "nodeType": "YulLiteral", + "src": "5957:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5942:3:55", + "nodeType": "YulIdentifier", + "src": "5942:3:55" + }, + "nativeSrc": "5942:19:55", + "nodeType": "YulFunctionCall", + "src": "5942:19:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5923:18:55", + "nodeType": "YulIdentifier", + "src": "5923:18:55" + }, + "nativeSrc": "5923:39:55", + "nodeType": "YulFunctionCall", + "src": "5923:39:55" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "5913:6:55", + "nodeType": "YulIdentifier", + "src": "5913:6:55" + } + ] + }, + { + "nativeSrc": "5971:43:55", + "nodeType": "YulAssignment", + "src": "5971:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5998:9:55", + "nodeType": "YulIdentifier", + "src": "5998:9:55" + }, + { + "kind": "number", + "nativeSrc": "6009:3:55", + "nodeType": "YulLiteral", + "src": "6009:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5994:3:55", + "nodeType": "YulIdentifier", + "src": "5994:3:55" + }, + "nativeSrc": "5994:19:55", + "nodeType": "YulFunctionCall", + "src": "5994:19:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5981:12:55", + "nodeType": "YulIdentifier", + "src": "5981:12:55" + }, + "nativeSrc": "5981:33:55", + "nodeType": "YulFunctionCall", + "src": "5981:33:55" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "5971:6:55", + "nodeType": "YulIdentifier", + "src": "5971:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256", + "nativeSrc": "5467:553:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5548:9:55", + "nodeType": "YulTypedName", + "src": "5548:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5559:7:55", + "nodeType": "YulTypedName", + "src": "5559:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5571:6:55", + "nodeType": "YulTypedName", + "src": "5571:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5579:6:55", + "nodeType": "YulTypedName", + "src": "5579:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5587:6:55", + "nodeType": "YulTypedName", + "src": "5587:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5595:6:55", + "nodeType": "YulTypedName", + "src": "5595:6:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5603:6:55", + "nodeType": "YulTypedName", + "src": "5603:6:55", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "5611:6:55", + "nodeType": "YulTypedName", + "src": "5611:6:55", + "type": "" + } + ], + "src": "5467:553:55" + }, + { + "body": { + "nativeSrc": "6196:632:55", + "nodeType": "YulBlock", + "src": "6196:632:55", + "statements": [ + { + "nativeSrc": "6206:12:55", + "nodeType": "YulVariableDeclaration", + "src": "6206:12:55", + "value": { + "kind": "number", + "nativeSrc": "6216:2:55", + "nodeType": "YulLiteral", + "src": "6216:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6210:2:55", + "nodeType": "YulTypedName", + "src": "6210:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6227:32:55", + "nodeType": "YulVariableDeclaration", + "src": "6227:32:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6245:9:55", + "nodeType": "YulIdentifier", + "src": "6245:9:55" + }, + { + "kind": "number", + "nativeSrc": "6256:2:55", + "nodeType": "YulLiteral", + "src": "6256:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6241:3:55", + "nodeType": "YulIdentifier", + "src": "6241:3:55" + }, + "nativeSrc": "6241:18:55", + "nodeType": "YulFunctionCall", + "src": "6241:18:55" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6231:6:55", + "nodeType": "YulTypedName", + "src": "6231:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6275:9:55", + "nodeType": "YulIdentifier", + "src": "6275:9:55" + }, + { + "kind": "number", + "nativeSrc": "6286:2:55", + "nodeType": "YulLiteral", + "src": "6286:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6268:6:55", + "nodeType": "YulIdentifier", + "src": "6268:6:55" + }, + "nativeSrc": "6268:21:55", + "nodeType": "YulFunctionCall", + "src": "6268:21:55" + }, + "nativeSrc": "6268:21:55", + "nodeType": "YulExpressionStatement", + "src": "6268:21:55" + }, + { + "nativeSrc": "6298:17:55", + "nodeType": "YulVariableDeclaration", + "src": "6298:17:55", + "value": { + "name": "tail_1", + "nativeSrc": "6309:6:55", + "nodeType": "YulIdentifier", + "src": "6309:6:55" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6302:3:55", + "nodeType": "YulTypedName", + "src": "6302:3:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6324:27:55", + "nodeType": "YulVariableDeclaration", + "src": "6324:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6344:6:55", + "nodeType": "YulIdentifier", + "src": "6344:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6338:5:55", + "nodeType": "YulIdentifier", + "src": "6338:5:55" + }, + "nativeSrc": "6338:13:55", + "nodeType": "YulFunctionCall", + "src": "6338:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6328:6:55", + "nodeType": "YulTypedName", + "src": "6328:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "6367:6:55", + "nodeType": "YulIdentifier", + "src": "6367:6:55" + }, + { + "name": "length", + "nativeSrc": "6375:6:55", + "nodeType": "YulIdentifier", + "src": "6375:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6360:6:55", + "nodeType": "YulIdentifier", + "src": "6360:6:55" + }, + "nativeSrc": "6360:22:55", + "nodeType": "YulFunctionCall", + "src": "6360:22:55" + }, + "nativeSrc": "6360:22:55", + "nodeType": "YulExpressionStatement", + "src": "6360:22:55" + }, + { + "nativeSrc": "6391:25:55", + "nodeType": "YulAssignment", + "src": "6391:25:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6402:9:55", + "nodeType": "YulIdentifier", + "src": "6402:9:55" + }, + { + "kind": "number", + "nativeSrc": "6413:2:55", + "nodeType": "YulLiteral", + "src": "6413:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6398:3:55", + "nodeType": "YulIdentifier", + "src": "6398:3:55" + }, + "nativeSrc": "6398:18:55", + "nodeType": "YulFunctionCall", + "src": "6398:18:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6391:3:55", + "nodeType": "YulIdentifier", + "src": "6391:3:55" + } + ] + }, + { + "nativeSrc": "6425:53:55", + "nodeType": "YulVariableDeclaration", + "src": "6425:53:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6447:9:55", + "nodeType": "YulIdentifier", + "src": "6447:9:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6462:1:55", + "nodeType": "YulLiteral", + "src": "6462:1:55", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "6465:6:55", + "nodeType": "YulIdentifier", + "src": "6465:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6458:3:55", + "nodeType": "YulIdentifier", + "src": "6458:3:55" + }, + "nativeSrc": "6458:14:55", + "nodeType": "YulFunctionCall", + "src": "6458:14:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6443:3:55", + "nodeType": "YulIdentifier", + "src": "6443:3:55" + }, + "nativeSrc": "6443:30:55", + "nodeType": "YulFunctionCall", + "src": "6443:30:55" + }, + { + "kind": "number", + "nativeSrc": "6475:2:55", + "nodeType": "YulLiteral", + "src": "6475:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6439:3:55", + "nodeType": "YulIdentifier", + "src": "6439:3:55" + }, + "nativeSrc": "6439:39:55", + "nodeType": "YulFunctionCall", + "src": "6439:39:55" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "6429:6:55", + "nodeType": "YulTypedName", + "src": "6429:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6487:29:55", + "nodeType": "YulVariableDeclaration", + "src": "6487:29:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6505:6:55", + "nodeType": "YulIdentifier", + "src": "6505:6:55" + }, + { + "kind": "number", + "nativeSrc": "6513:2:55", + "nodeType": "YulLiteral", + "src": "6513:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6501:3:55", + "nodeType": "YulIdentifier", + "src": "6501:3:55" + }, + "nativeSrc": "6501:15:55", + "nodeType": "YulFunctionCall", + "src": "6501:15:55" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "6491:6:55", + "nodeType": "YulTypedName", + "src": "6491:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "6525:10:55", + "nodeType": "YulVariableDeclaration", + "src": "6525:10:55", + "value": { + "kind": "number", + "nativeSrc": "6534:1:55", + "nodeType": "YulLiteral", + "src": "6534:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "6529:1:55", + "nodeType": "YulTypedName", + "src": "6529:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6593:206:55", + "nodeType": "YulBlock", + "src": "6593:206:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6614:3:55", + "nodeType": "YulIdentifier", + "src": "6614:3:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "6627:6:55", + "nodeType": "YulIdentifier", + "src": "6627:6:55" + }, + { + "name": "headStart", + "nativeSrc": "6635:9:55", + "nodeType": "YulIdentifier", + "src": "6635:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6623:3:55", + "nodeType": "YulIdentifier", + "src": "6623:3:55" + }, + "nativeSrc": "6623:22:55", + "nodeType": "YulFunctionCall", + "src": "6623:22:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6651:2:55", + "nodeType": "YulLiteral", + "src": "6651:2:55", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "6647:3:55", + "nodeType": "YulIdentifier", + "src": "6647:3:55" + }, + "nativeSrc": "6647:7:55", + "nodeType": "YulFunctionCall", + "src": "6647:7:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6619:3:55", + "nodeType": "YulIdentifier", + "src": "6619:3:55" + }, + "nativeSrc": "6619:36:55", + "nodeType": "YulFunctionCall", + "src": "6619:36:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6607:6:55", + "nodeType": "YulIdentifier", + "src": "6607:6:55" + }, + "nativeSrc": "6607:49:55", + "nodeType": "YulFunctionCall", + "src": "6607:49:55" + }, + "nativeSrc": "6607:49:55", + "nodeType": "YulExpressionStatement", + "src": "6607:49:55" + }, + { + "nativeSrc": "6669:50:55", + "nodeType": "YulAssignment", + "src": "6669:50:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6703:6:55", + "nodeType": "YulIdentifier", + "src": "6703:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6697:5:55", + "nodeType": "YulIdentifier", + "src": "6697:5:55" + }, + "nativeSrc": "6697:13:55", + "nodeType": "YulFunctionCall", + "src": "6697:13:55" + }, + { + "name": "tail_2", + "nativeSrc": "6712:6:55", + "nodeType": "YulIdentifier", + "src": "6712:6:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "6679:17:55", + "nodeType": "YulIdentifier", + "src": "6679:17:55" + }, + "nativeSrc": "6679:40:55", + "nodeType": "YulFunctionCall", + "src": "6679:40:55" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "6669:6:55", + "nodeType": "YulIdentifier", + "src": "6669:6:55" + } + ] + }, + { + "nativeSrc": "6732:25:55", + "nodeType": "YulAssignment", + "src": "6732:25:55", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6746:6:55", + "nodeType": "YulIdentifier", + "src": "6746:6:55" + }, + { + "name": "_1", + "nativeSrc": "6754:2:55", + "nodeType": "YulIdentifier", + "src": "6754:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6742:3:55", + "nodeType": "YulIdentifier", + "src": "6742:3:55" + }, + "nativeSrc": "6742:15:55", + "nodeType": "YulFunctionCall", + "src": "6742:15:55" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "6732:6:55", + "nodeType": "YulIdentifier", + "src": "6732:6:55" + } + ] + }, + { + "nativeSrc": "6770:19:55", + "nodeType": "YulAssignment", + "src": "6770:19:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6781:3:55", + "nodeType": "YulIdentifier", + "src": "6781:3:55" + }, + { + "name": "_1", + "nativeSrc": "6786:2:55", + "nodeType": "YulIdentifier", + "src": "6786:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6777:3:55", + "nodeType": "YulIdentifier", + "src": "6777:3:55" + }, + "nativeSrc": "6777:12:55", + "nodeType": "YulFunctionCall", + "src": "6777:12:55" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6770:3:55", + "nodeType": "YulIdentifier", + "src": "6770:3:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6555:1:55", + "nodeType": "YulIdentifier", + "src": "6555:1:55" + }, + { + "name": "length", + "nativeSrc": "6558:6:55", + "nodeType": "YulIdentifier", + "src": "6558:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6552:2:55", + "nodeType": "YulIdentifier", + "src": "6552:2:55" + }, + "nativeSrc": "6552:13:55", + "nodeType": "YulFunctionCall", + "src": "6552:13:55" + }, + "nativeSrc": "6544:255:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6566:18:55", + "nodeType": "YulBlock", + "src": "6566:18:55", + "statements": [ + { + "nativeSrc": "6568:14:55", + "nodeType": "YulAssignment", + "src": "6568:14:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6577:1:55", + "nodeType": "YulIdentifier", + "src": "6577:1:55" + }, + { + "kind": "number", + "nativeSrc": "6580:1:55", + "nodeType": "YulLiteral", + "src": "6580:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6573:3:55", + "nodeType": "YulIdentifier", + "src": "6573:3:55" + }, + "nativeSrc": "6573:9:55", + "nodeType": "YulFunctionCall", + "src": "6573:9:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "6568:1:55", + "nodeType": "YulIdentifier", + "src": "6568:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6548:3:55", + "nodeType": "YulBlock", + "src": "6548:3:55", + "statements": [] + }, + "src": "6544:255:55" + }, + { + "nativeSrc": "6808:14:55", + "nodeType": "YulAssignment", + "src": "6808:14:55", + "value": { + "name": "tail_2", + "nativeSrc": "6816:6:55", + "nodeType": "YulIdentifier", + "src": "6816:6:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6808:4:55", + "nodeType": "YulIdentifier", + "src": "6808:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6025:803:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6165:9:55", + "nodeType": "YulTypedName", + "src": "6165:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6176:6:55", + "nodeType": "YulTypedName", + "src": "6176:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6187:4:55", + "nodeType": "YulTypedName", + "src": "6187:4:55", + "type": "" + } + ], + "src": "6025:803:55" + }, + { + "body": { + "nativeSrc": "6920:173:55", + "nodeType": "YulBlock", + "src": "6920:173:55", + "statements": [ + { + "body": { + "nativeSrc": "6966:16:55", + "nodeType": "YulBlock", + "src": "6966:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6975:1:55", + "nodeType": "YulLiteral", + "src": "6975:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6978:1:55", + "nodeType": "YulLiteral", + "src": "6978:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6968:6:55", + "nodeType": "YulIdentifier", + "src": "6968:6:55" + }, + "nativeSrc": "6968:12:55", + "nodeType": "YulFunctionCall", + "src": "6968:12:55" + }, + "nativeSrc": "6968:12:55", + "nodeType": "YulExpressionStatement", + "src": "6968:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6941:7:55", + "nodeType": "YulIdentifier", + "src": "6941:7:55" + }, + { + "name": "headStart", + "nativeSrc": "6950:9:55", + "nodeType": "YulIdentifier", + "src": "6950:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6937:3:55", + "nodeType": "YulIdentifier", + "src": "6937:3:55" + }, + "nativeSrc": "6937:23:55", + "nodeType": "YulFunctionCall", + "src": "6937:23:55" + }, + { + "kind": "number", + "nativeSrc": "6962:2:55", + "nodeType": "YulLiteral", + "src": "6962:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6933:3:55", + "nodeType": "YulIdentifier", + "src": "6933:3:55" + }, + "nativeSrc": "6933:32:55", + "nodeType": "YulFunctionCall", + "src": "6933:32:55" + }, + "nativeSrc": "6930:52:55", + "nodeType": "YulIf", + "src": "6930:52:55" + }, + { + "nativeSrc": "6991:39:55", + "nodeType": "YulAssignment", + "src": "6991:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7020:9:55", + "nodeType": "YulIdentifier", + "src": "7020:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7001:18:55", + "nodeType": "YulIdentifier", + "src": "7001:18:55" + }, + "nativeSrc": "7001:29:55", + "nodeType": "YulFunctionCall", + "src": "7001:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6991:6:55", + "nodeType": "YulIdentifier", + "src": "6991:6:55" + } + ] + }, + { + "nativeSrc": "7039:48:55", + "nodeType": "YulAssignment", + "src": "7039:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7072:9:55", + "nodeType": "YulIdentifier", + "src": "7072:9:55" + }, + { + "kind": "number", + "nativeSrc": "7083:2:55", + "nodeType": "YulLiteral", + "src": "7083:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7068:3:55", + "nodeType": "YulIdentifier", + "src": "7068:3:55" + }, + "nativeSrc": "7068:18:55", + "nodeType": "YulFunctionCall", + "src": "7068:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7049:18:55", + "nodeType": "YulIdentifier", + "src": "7049:18:55" + }, + "nativeSrc": "7049:38:55", + "nodeType": "YulFunctionCall", + "src": "7049:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7039:6:55", + "nodeType": "YulIdentifier", + "src": "7039:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "6833:260:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6878:9:55", + "nodeType": "YulTypedName", + "src": "6878:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6889:7:55", + "nodeType": "YulTypedName", + "src": "6889:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6901:6:55", + "nodeType": "YulTypedName", + "src": "6901:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6909:6:55", + "nodeType": "YulTypedName", + "src": "6909:6:55", + "type": "" + } + ], + "src": "6833:260:55" + }, + { + "body": { + "nativeSrc": "7237:150:55", + "nodeType": "YulBlock", + "src": "7237:150:55", + "statements": [ + { + "nativeSrc": "7247:27:55", + "nodeType": "YulVariableDeclaration", + "src": "7247:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7267:6:55", + "nodeType": "YulIdentifier", + "src": "7267:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7261:5:55", + "nodeType": "YulIdentifier", + "src": "7261:5:55" + }, + "nativeSrc": "7261:13:55", + "nodeType": "YulFunctionCall", + "src": "7261:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "7251:6:55", + "nodeType": "YulTypedName", + "src": "7251:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7322:6:55", + "nodeType": "YulIdentifier", + "src": "7322:6:55" + }, + { + "kind": "number", + "nativeSrc": "7330:4:55", + "nodeType": "YulLiteral", + "src": "7330:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7318:3:55", + "nodeType": "YulIdentifier", + "src": "7318:3:55" + }, + "nativeSrc": "7318:17:55", + "nodeType": "YulFunctionCall", + "src": "7318:17:55" + }, + { + "name": "pos", + "nativeSrc": "7337:3:55", + "nodeType": "YulIdentifier", + "src": "7337:3:55" + }, + { + "name": "length", + "nativeSrc": "7342:6:55", + "nodeType": "YulIdentifier", + "src": "7342:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "7283:34:55", + "nodeType": "YulIdentifier", + "src": "7283:34:55" + }, + "nativeSrc": "7283:66:55", + "nodeType": "YulFunctionCall", + "src": "7283:66:55" + }, + "nativeSrc": "7283:66:55", + "nodeType": "YulExpressionStatement", + "src": "7283:66:55" + }, + { + "nativeSrc": "7358:23:55", + "nodeType": "YulAssignment", + "src": "7358:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7369:3:55", + "nodeType": "YulIdentifier", + "src": "7369:3:55" + }, + { + "name": "length", + "nativeSrc": "7374:6:55", + "nodeType": "YulIdentifier", + "src": "7374:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7365:3:55", + "nodeType": "YulIdentifier", + "src": "7365:3:55" + }, + "nativeSrc": "7365:16:55", + "nodeType": "YulFunctionCall", + "src": "7365:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "7358:3:55", + "nodeType": "YulIdentifier", + "src": "7358:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "7098:289:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "7213:3:55", + "nodeType": "YulTypedName", + "src": "7213:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7218:6:55", + "nodeType": "YulTypedName", + "src": "7218:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "7229:3:55", + "nodeType": "YulTypedName", + "src": "7229:3:55", + "type": "" + } + ], + "src": "7098:289:55" + }, + { + "body": { + "nativeSrc": "7447:325:55", + "nodeType": "YulBlock", + "src": "7447:325:55", + "statements": [ + { + "nativeSrc": "7457:22:55", + "nodeType": "YulAssignment", + "src": "7457:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7471:1:55", + "nodeType": "YulLiteral", + "src": "7471:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "7474:4:55", + "nodeType": "YulIdentifier", + "src": "7474:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7467:3:55", + "nodeType": "YulIdentifier", + "src": "7467:3:55" + }, + "nativeSrc": "7467:12:55", + "nodeType": "YulFunctionCall", + "src": "7467:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "7457:6:55", + "nodeType": "YulIdentifier", + "src": "7457:6:55" + } + ] + }, + { + "nativeSrc": "7488:38:55", + "nodeType": "YulVariableDeclaration", + "src": "7488:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "7518:4:55", + "nodeType": "YulIdentifier", + "src": "7518:4:55" + }, + { + "kind": "number", + "nativeSrc": "7524:1:55", + "nodeType": "YulLiteral", + "src": "7524:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7514:3:55", + "nodeType": "YulIdentifier", + "src": "7514:3:55" + }, + "nativeSrc": "7514:12:55", + "nodeType": "YulFunctionCall", + "src": "7514:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7492:18:55", + "nodeType": "YulTypedName", + "src": "7492:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7565:31:55", + "nodeType": "YulBlock", + "src": "7565:31:55", + "statements": [ + { + "nativeSrc": "7567:27:55", + "nodeType": "YulAssignment", + "src": "7567:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "7581:6:55", + "nodeType": "YulIdentifier", + "src": "7581:6:55" + }, + { + "kind": "number", + "nativeSrc": "7589:4:55", + "nodeType": "YulLiteral", + "src": "7589:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7577:3:55", + "nodeType": "YulIdentifier", + "src": "7577:3:55" + }, + "nativeSrc": "7577:17:55", + "nodeType": "YulFunctionCall", + "src": "7577:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "7567:6:55", + "nodeType": "YulIdentifier", + "src": "7567:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7545:18:55", + "nodeType": "YulIdentifier", + "src": "7545:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7538:6:55", + "nodeType": "YulIdentifier", + "src": "7538:6:55" + }, + "nativeSrc": "7538:26:55", + "nodeType": "YulFunctionCall", + "src": "7538:26:55" + }, + "nativeSrc": "7535:61:55", + "nodeType": "YulIf", + "src": "7535:61:55" + }, + { + "body": { + "nativeSrc": "7655:111:55", + "nodeType": "YulBlock", + "src": "7655:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7676:1:55", + "nodeType": "YulLiteral", + "src": "7676:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7683:3:55", + "nodeType": "YulLiteral", + "src": "7683:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "7688:10:55", + "nodeType": "YulLiteral", + "src": "7688:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7679:3:55", + "nodeType": "YulIdentifier", + "src": "7679:3:55" + }, + "nativeSrc": "7679:20:55", + "nodeType": "YulFunctionCall", + "src": "7679:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7669:6:55", + "nodeType": "YulIdentifier", + "src": "7669:6:55" + }, + "nativeSrc": "7669:31:55", + "nodeType": "YulFunctionCall", + "src": "7669:31:55" + }, + "nativeSrc": "7669:31:55", + "nodeType": "YulExpressionStatement", + "src": "7669:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7720:1:55", + "nodeType": "YulLiteral", + "src": "7720:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "7723:4:55", + "nodeType": "YulLiteral", + "src": "7723:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7713:6:55", + "nodeType": "YulIdentifier", + "src": "7713:6:55" + }, + "nativeSrc": "7713:15:55", + "nodeType": "YulFunctionCall", + "src": "7713:15:55" + }, + "nativeSrc": "7713:15:55", + "nodeType": "YulExpressionStatement", + "src": "7713:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7748:1:55", + "nodeType": "YulLiteral", + "src": "7748:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7751:4:55", + "nodeType": "YulLiteral", + "src": "7751:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7741:6:55", + "nodeType": "YulIdentifier", + "src": "7741:6:55" + }, + "nativeSrc": "7741:15:55", + "nodeType": "YulFunctionCall", + "src": "7741:15:55" + }, + "nativeSrc": "7741:15:55", + "nodeType": "YulExpressionStatement", + "src": "7741:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "7611:18:55", + "nodeType": "YulIdentifier", + "src": "7611:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "7634:6:55", + "nodeType": "YulIdentifier", + "src": "7634:6:55" + }, + { + "kind": "number", + "nativeSrc": "7642:2:55", + "nodeType": "YulLiteral", + "src": "7642:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7631:2:55", + "nodeType": "YulIdentifier", + "src": "7631:2:55" + }, + "nativeSrc": "7631:14:55", + "nodeType": "YulFunctionCall", + "src": "7631:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "7608:2:55", + "nodeType": "YulIdentifier", + "src": "7608:2:55" + }, + "nativeSrc": "7608:38:55", + "nodeType": "YulFunctionCall", + "src": "7608:38:55" + }, + "nativeSrc": "7605:161:55", + "nodeType": "YulIf", + "src": "7605:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "7392:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "7427:4:55", + "nodeType": "YulTypedName", + "src": "7427:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "7436:6:55", + "nodeType": "YulTypedName", + "src": "7436:6:55", + "type": "" + } + ], + "src": "7392:380:55" + }, + { + "body": { + "nativeSrc": "7885:101:55", + "nodeType": "YulBlock", + "src": "7885:101:55", + "statements": [ + { + "nativeSrc": "7895:26:55", + "nodeType": "YulAssignment", + "src": "7895:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7907:9:55", + "nodeType": "YulIdentifier", + "src": "7907:9:55" + }, + { + "kind": "number", + "nativeSrc": "7918:2:55", + "nodeType": "YulLiteral", + "src": "7918:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7903:3:55", + "nodeType": "YulIdentifier", + "src": "7903:3:55" + }, + "nativeSrc": "7903:18:55", + "nodeType": "YulFunctionCall", + "src": "7903:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7895:4:55", + "nodeType": "YulIdentifier", + "src": "7895:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7937:9:55", + "nodeType": "YulIdentifier", + "src": "7937:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7952:6:55", + "nodeType": "YulIdentifier", + "src": "7952:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7968:2:55", + "nodeType": "YulLiteral", + "src": "7968:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "7972:1:55", + "nodeType": "YulLiteral", + "src": "7972:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7964:3:55", + "nodeType": "YulIdentifier", + "src": "7964:3:55" + }, + "nativeSrc": "7964:10:55", + "nodeType": "YulFunctionCall", + "src": "7964:10:55" + }, + { + "kind": "number", + "nativeSrc": "7976:1:55", + "nodeType": "YulLiteral", + "src": "7976:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7960:3:55", + "nodeType": "YulIdentifier", + "src": "7960:3:55" + }, + "nativeSrc": "7960:18:55", + "nodeType": "YulFunctionCall", + "src": "7960:18:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7948:3:55", + "nodeType": "YulIdentifier", + "src": "7948:3:55" + }, + "nativeSrc": "7948:31:55", + "nodeType": "YulFunctionCall", + "src": "7948:31:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7930:6:55", + "nodeType": "YulIdentifier", + "src": "7930:6:55" + }, + "nativeSrc": "7930:50:55", + "nodeType": "YulFunctionCall", + "src": "7930:50:55" + }, + "nativeSrc": "7930:50:55", + "nodeType": "YulExpressionStatement", + "src": "7930:50:55" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "7777:209:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7854:9:55", + "nodeType": "YulTypedName", + "src": "7854:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7865:6:55", + "nodeType": "YulTypedName", + "src": "7865:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "7876:4:55", + "nodeType": "YulTypedName", + "src": "7876:4:55", + "type": "" + } + ], + "src": "7777:209:55" + }, + { + "body": { + "nativeSrc": "8023:95:55", + "nodeType": "YulBlock", + "src": "8023:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8040:1:55", + "nodeType": "YulLiteral", + "src": "8040:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8047:3:55", + "nodeType": "YulLiteral", + "src": "8047:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8052:10:55", + "nodeType": "YulLiteral", + "src": "8052:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8043:3:55", + "nodeType": "YulIdentifier", + "src": "8043:3:55" + }, + "nativeSrc": "8043:20:55", + "nodeType": "YulFunctionCall", + "src": "8043:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8033:6:55", + "nodeType": "YulIdentifier", + "src": "8033:6:55" + }, + "nativeSrc": "8033:31:55", + "nodeType": "YulFunctionCall", + "src": "8033:31:55" + }, + "nativeSrc": "8033:31:55", + "nodeType": "YulExpressionStatement", + "src": "8033:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8080:1:55", + "nodeType": "YulLiteral", + "src": "8080:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8083:4:55", + "nodeType": "YulLiteral", + "src": "8083:4:55", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8073:6:55", + "nodeType": "YulIdentifier", + "src": "8073:6:55" + }, + "nativeSrc": "8073:15:55", + "nodeType": "YulFunctionCall", + "src": "8073:15:55" + }, + "nativeSrc": "8073:15:55", + "nodeType": "YulExpressionStatement", + "src": "8073:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8104:1:55", + "nodeType": "YulLiteral", + "src": "8104:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8107:4:55", + "nodeType": "YulLiteral", + "src": "8107:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8097:6:55", + "nodeType": "YulIdentifier", + "src": "8097:6:55" + }, + "nativeSrc": "8097:15:55", + "nodeType": "YulFunctionCall", + "src": "8097:15:55" + }, + "nativeSrc": "8097:15:55", + "nodeType": "YulExpressionStatement", + "src": "8097:15:55" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "7991:127:55", + "nodeType": "YulFunctionDefinition", + "src": "7991:127:55" + }, + { + "body": { + "nativeSrc": "8179:65:55", + "nodeType": "YulBlock", + "src": "8179:65:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8196:1:55", + "nodeType": "YulLiteral", + "src": "8196:1:55", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "8199:3:55", + "nodeType": "YulIdentifier", + "src": "8199:3:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8189:6:55", + "nodeType": "YulIdentifier", + "src": "8189:6:55" + }, + "nativeSrc": "8189:14:55", + "nodeType": "YulFunctionCall", + "src": "8189:14:55" + }, + "nativeSrc": "8189:14:55", + "nodeType": "YulExpressionStatement", + "src": "8189:14:55" + }, + { + "nativeSrc": "8212:26:55", + "nodeType": "YulAssignment", + "src": "8212:26:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8230:1:55", + "nodeType": "YulLiteral", + "src": "8230:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8233:4:55", + "nodeType": "YulLiteral", + "src": "8233:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8220:9:55", + "nodeType": "YulIdentifier", + "src": "8220:9:55" + }, + "nativeSrc": "8220:18:55", + "nodeType": "YulFunctionCall", + "src": "8220:18:55" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "8212:4:55", + "nodeType": "YulIdentifier", + "src": "8212:4:55" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "8123:121:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "8162:3:55", + "nodeType": "YulTypedName", + "src": "8162:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "8170:4:55", + "nodeType": "YulTypedName", + "src": "8170:4:55", + "type": "" + } + ], + "src": "8123:121:55" + }, + { + "body": { + "nativeSrc": "8330:462:55", + "nodeType": "YulBlock", + "src": "8330:462:55", + "statements": [ + { + "body": { + "nativeSrc": "8363:423:55", + "nodeType": "YulBlock", + "src": "8363:423:55", + "statements": [ + { + "nativeSrc": "8377:11:55", + "nodeType": "YulVariableDeclaration", + "src": "8377:11:55", + "value": { + "kind": "number", + "nativeSrc": "8387:1:55", + "nodeType": "YulLiteral", + "src": "8387:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "8381:2:55", + "nodeType": "YulTypedName", + "src": "8381:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8408:1:55", + "nodeType": "YulLiteral", + "src": "8408:1:55", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "8411:5:55", + "nodeType": "YulIdentifier", + "src": "8411:5:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8401:6:55", + "nodeType": "YulIdentifier", + "src": "8401:6:55" + }, + "nativeSrc": "8401:16:55", + "nodeType": "YulFunctionCall", + "src": "8401:16:55" + }, + "nativeSrc": "8401:16:55", + "nodeType": "YulExpressionStatement", + "src": "8401:16:55" + }, + { + "nativeSrc": "8430:30:55", + "nodeType": "YulVariableDeclaration", + "src": "8430:30:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8452:1:55", + "nodeType": "YulLiteral", + "src": "8452:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8455:4:55", + "nodeType": "YulLiteral", + "src": "8455:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8442:9:55", + "nodeType": "YulIdentifier", + "src": "8442:9:55" + }, + "nativeSrc": "8442:18:55", + "nodeType": "YulFunctionCall", + "src": "8442:18:55" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "8434:4:55", + "nodeType": "YulTypedName", + "src": "8434:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "8473:57:55", + "nodeType": "YulVariableDeclaration", + "src": "8473:57:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8496:4:55", + "nodeType": "YulIdentifier", + "src": "8496:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8506:1:55", + "nodeType": "YulLiteral", + "src": "8506:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "8513:10:55", + "nodeType": "YulIdentifier", + "src": "8513:10:55" + }, + { + "kind": "number", + "nativeSrc": "8525:2:55", + "nodeType": "YulLiteral", + "src": "8525:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8509:3:55", + "nodeType": "YulIdentifier", + "src": "8509:3:55" + }, + "nativeSrc": "8509:19:55", + "nodeType": "YulFunctionCall", + "src": "8509:19:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8502:3:55", + "nodeType": "YulIdentifier", + "src": "8502:3:55" + }, + "nativeSrc": "8502:27:55", + "nodeType": "YulFunctionCall", + "src": "8502:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8492:3:55", + "nodeType": "YulIdentifier", + "src": "8492:3:55" + }, + "nativeSrc": "8492:38:55", + "nodeType": "YulFunctionCall", + "src": "8492:38:55" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "8477:11:55", + "nodeType": "YulTypedName", + "src": "8477:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8567:23:55", + "nodeType": "YulBlock", + "src": "8567:23:55", + "statements": [ + { + "nativeSrc": "8569:19:55", + "nodeType": "YulAssignment", + "src": "8569:19:55", + "value": { + "name": "data", + "nativeSrc": "8584:4:55", + "nodeType": "YulIdentifier", + "src": "8584:4:55" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "8569:11:55", + "nodeType": "YulIdentifier", + "src": "8569:11:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "8549:10:55", + "nodeType": "YulIdentifier", + "src": "8549:10:55" + }, + { + "kind": "number", + "nativeSrc": "8561:4:55", + "nodeType": "YulLiteral", + "src": "8561:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8546:2:55", + "nodeType": "YulIdentifier", + "src": "8546:2:55" + }, + "nativeSrc": "8546:20:55", + "nodeType": "YulFunctionCall", + "src": "8546:20:55" + }, + "nativeSrc": "8543:47:55", + "nodeType": "YulIf", + "src": "8543:47:55" + }, + { + "nativeSrc": "8603:41:55", + "nodeType": "YulVariableDeclaration", + "src": "8603:41:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8617:4:55", + "nodeType": "YulIdentifier", + "src": "8617:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8627:1:55", + "nodeType": "YulLiteral", + "src": "8627:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "8634:3:55", + "nodeType": "YulIdentifier", + "src": "8634:3:55" + }, + { + "kind": "number", + "nativeSrc": "8639:2:55", + "nodeType": "YulLiteral", + "src": "8639:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8630:3:55", + "nodeType": "YulIdentifier", + "src": "8630:3:55" + }, + "nativeSrc": "8630:12:55", + "nodeType": "YulFunctionCall", + "src": "8630:12:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8623:3:55", + "nodeType": "YulIdentifier", + "src": "8623:3:55" + }, + "nativeSrc": "8623:20:55", + "nodeType": "YulFunctionCall", + "src": "8623:20:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8613:3:55", + "nodeType": "YulIdentifier", + "src": "8613:3:55" + }, + "nativeSrc": "8613:31:55", + "nodeType": "YulFunctionCall", + "src": "8613:31:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "8607:2:55", + "nodeType": "YulTypedName", + "src": "8607:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "8657:24:55", + "nodeType": "YulVariableDeclaration", + "src": "8657:24:55", + "value": { + "name": "deleteStart", + "nativeSrc": "8670:11:55", + "nodeType": "YulIdentifier", + "src": "8670:11:55" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "8661:5:55", + "nodeType": "YulTypedName", + "src": "8661:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8755:21:55", + "nodeType": "YulBlock", + "src": "8755:21:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8764:5:55", + "nodeType": "YulIdentifier", + "src": "8764:5:55" + }, + { + "name": "_1", + "nativeSrc": "8771:2:55", + "nodeType": "YulIdentifier", + "src": "8771:2:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "8757:6:55", + "nodeType": "YulIdentifier", + "src": "8757:6:55" + }, + "nativeSrc": "8757:17:55", + "nodeType": "YulFunctionCall", + "src": "8757:17:55" + }, + "nativeSrc": "8757:17:55", + "nodeType": "YulExpressionStatement", + "src": "8757:17:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8705:5:55", + "nodeType": "YulIdentifier", + "src": "8705:5:55" + }, + { + "name": "_2", + "nativeSrc": "8712:2:55", + "nodeType": "YulIdentifier", + "src": "8712:2:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8702:2:55", + "nodeType": "YulIdentifier", + "src": "8702:2:55" + }, + "nativeSrc": "8702:13:55", + "nodeType": "YulFunctionCall", + "src": "8702:13:55" + }, + "nativeSrc": "8694:82:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8716:26:55", + "nodeType": "YulBlock", + "src": "8716:26:55", + "statements": [ + { + "nativeSrc": "8718:22:55", + "nodeType": "YulAssignment", + "src": "8718:22:55", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "8731:5:55", + "nodeType": "YulIdentifier", + "src": "8731:5:55" + }, + { + "kind": "number", + "nativeSrc": "8738:1:55", + "nodeType": "YulLiteral", + "src": "8738:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8727:3:55", + "nodeType": "YulIdentifier", + "src": "8727:3:55" + }, + "nativeSrc": "8727:13:55", + "nodeType": "YulFunctionCall", + "src": "8727:13:55" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "8718:5:55", + "nodeType": "YulIdentifier", + "src": "8718:5:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "8698:3:55", + "nodeType": "YulBlock", + "src": "8698:3:55", + "statements": [] + }, + "src": "8694:82:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "8346:3:55", + "nodeType": "YulIdentifier", + "src": "8346:3:55" + }, + { + "kind": "number", + "nativeSrc": "8351:2:55", + "nodeType": "YulLiteral", + "src": "8351:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8343:2:55", + "nodeType": "YulIdentifier", + "src": "8343:2:55" + }, + "nativeSrc": "8343:11:55", + "nodeType": "YulFunctionCall", + "src": "8343:11:55" + }, + "nativeSrc": "8340:446:55", + "nodeType": "YulIf", + "src": "8340:446:55" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "8249:543:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "8302:5:55", + "nodeType": "YulTypedName", + "src": "8302:5:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8309:3:55", + "nodeType": "YulTypedName", + "src": "8309:3:55", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "8314:10:55", + "nodeType": "YulTypedName", + "src": "8314:10:55", + "type": "" + } + ], + "src": "8249:543:55" + }, + { + "body": { + "nativeSrc": "8882:81:55", + "nodeType": "YulBlock", + "src": "8882:81:55", + "statements": [ + { + "nativeSrc": "8892:65:55", + "nodeType": "YulAssignment", + "src": "8892:65:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "8907:4:55", + "nodeType": "YulIdentifier", + "src": "8907:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8925:1:55", + "nodeType": "YulLiteral", + "src": "8925:1:55", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "8928:3:55", + "nodeType": "YulIdentifier", + "src": "8928:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8921:3:55", + "nodeType": "YulIdentifier", + "src": "8921:3:55" + }, + "nativeSrc": "8921:11:55", + "nodeType": "YulFunctionCall", + "src": "8921:11:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8938:1:55", + "nodeType": "YulLiteral", + "src": "8938:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "8934:3:55", + "nodeType": "YulIdentifier", + "src": "8934:3:55" + }, + "nativeSrc": "8934:6:55", + "nodeType": "YulFunctionCall", + "src": "8934:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8917:3:55", + "nodeType": "YulIdentifier", + "src": "8917:3:55" + }, + "nativeSrc": "8917:24:55", + "nodeType": "YulFunctionCall", + "src": "8917:24:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "8913:3:55", + "nodeType": "YulIdentifier", + "src": "8913:3:55" + }, + "nativeSrc": "8913:29:55", + "nodeType": "YulFunctionCall", + "src": "8913:29:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8903:3:55", + "nodeType": "YulIdentifier", + "src": "8903:3:55" + }, + "nativeSrc": "8903:40:55", + "nodeType": "YulFunctionCall", + "src": "8903:40:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8949:1:55", + "nodeType": "YulLiteral", + "src": "8949:1:55", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "8952:3:55", + "nodeType": "YulIdentifier", + "src": "8952:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8945:3:55", + "nodeType": "YulIdentifier", + "src": "8945:3:55" + }, + "nativeSrc": "8945:11:55", + "nodeType": "YulFunctionCall", + "src": "8945:11:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "8900:2:55", + "nodeType": "YulIdentifier", + "src": "8900:2:55" + }, + "nativeSrc": "8900:57:55", + "nodeType": "YulFunctionCall", + "src": "8900:57:55" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "8892:4:55", + "nodeType": "YulIdentifier", + "src": "8892:4:55" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "8797:166:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "8859:4:55", + "nodeType": "YulTypedName", + "src": "8859:4:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8865:3:55", + "nodeType": "YulTypedName", + "src": "8865:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "8873:4:55", + "nodeType": "YulTypedName", + "src": "8873:4:55", + "type": "" + } + ], + "src": "8797:166:55" + }, + { + "body": { + "nativeSrc": "9064:1249:55", + "nodeType": "YulBlock", + "src": "9064:1249:55", + "statements": [ + { + "nativeSrc": "9074:24:55", + "nodeType": "YulVariableDeclaration", + "src": "9074:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "9094:3:55", + "nodeType": "YulIdentifier", + "src": "9094:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9088:5:55", + "nodeType": "YulIdentifier", + "src": "9088:5:55" + }, + "nativeSrc": "9088:10:55", + "nodeType": "YulFunctionCall", + "src": "9088:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "9078:6:55", + "nodeType": "YulTypedName", + "src": "9078:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9141:22:55", + "nodeType": "YulBlock", + "src": "9141:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "9143:16:55", + "nodeType": "YulIdentifier", + "src": "9143:16:55" + }, + "nativeSrc": "9143:18:55", + "nodeType": "YulFunctionCall", + "src": "9143:18:55" + }, + "nativeSrc": "9143:18:55", + "nodeType": "YulExpressionStatement", + "src": "9143:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9113:6:55", + "nodeType": "YulIdentifier", + "src": "9113:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9129:2:55", + "nodeType": "YulLiteral", + "src": "9129:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "9133:1:55", + "nodeType": "YulLiteral", + "src": "9133:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9125:3:55", + "nodeType": "YulIdentifier", + "src": "9125:3:55" + }, + "nativeSrc": "9125:10:55", + "nodeType": "YulFunctionCall", + "src": "9125:10:55" + }, + { + "kind": "number", + "nativeSrc": "9137:1:55", + "nodeType": "YulLiteral", + "src": "9137:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9121:3:55", + "nodeType": "YulIdentifier", + "src": "9121:3:55" + }, + "nativeSrc": "9121:18:55", + "nodeType": "YulFunctionCall", + "src": "9121:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9110:2:55", + "nodeType": "YulIdentifier", + "src": "9110:2:55" + }, + "nativeSrc": "9110:30:55", + "nodeType": "YulFunctionCall", + "src": "9110:30:55" + }, + "nativeSrc": "9107:56:55", + "nodeType": "YulIf", + "src": "9107:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9216:4:55", + "nodeType": "YulIdentifier", + "src": "9216:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9254:4:55", + "nodeType": "YulIdentifier", + "src": "9254:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "9248:5:55", + "nodeType": "YulIdentifier", + "src": "9248:5:55" + }, + "nativeSrc": "9248:11:55", + "nodeType": "YulFunctionCall", + "src": "9248:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "9222:25:55", + "nodeType": "YulIdentifier", + "src": "9222:25:55" + }, + "nativeSrc": "9222:38:55", + "nodeType": "YulFunctionCall", + "src": "9222:38:55" + }, + { + "name": "newLen", + "nativeSrc": "9262:6:55", + "nodeType": "YulIdentifier", + "src": "9262:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "9172:43:55", + "nodeType": "YulIdentifier", + "src": "9172:43:55" + }, + "nativeSrc": "9172:97:55", + "nodeType": "YulFunctionCall", + "src": "9172:97:55" + }, + "nativeSrc": "9172:97:55", + "nodeType": "YulExpressionStatement", + "src": "9172:97:55" + }, + { + "nativeSrc": "9278:18:55", + "nodeType": "YulVariableDeclaration", + "src": "9278:18:55", + "value": { + "kind": "number", + "nativeSrc": "9295:1:55", + "nodeType": "YulLiteral", + "src": "9295:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "9282:9:55", + "nodeType": "YulTypedName", + "src": "9282:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9305:23:55", + "nodeType": "YulVariableDeclaration", + "src": "9305:23:55", + "value": { + "kind": "number", + "nativeSrc": "9324:4:55", + "nodeType": "YulLiteral", + "src": "9324:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "9309:11:55", + "nodeType": "YulTypedName", + "src": "9309:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9337:17:55", + "nodeType": "YulAssignment", + "src": "9337:17:55", + "value": { + "kind": "number", + "nativeSrc": "9350:4:55", + "nodeType": "YulLiteral", + "src": "9350:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "9337:9:55", + "nodeType": "YulIdentifier", + "src": "9337:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "9400:656:55", + "nodeType": "YulBlock", + "src": "9400:656:55", + "statements": [ + { + "nativeSrc": "9414:35:55", + "nodeType": "YulVariableDeclaration", + "src": "9414:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9433:6:55", + "nodeType": "YulIdentifier", + "src": "9433:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9445:2:55", + "nodeType": "YulLiteral", + "src": "9445:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9441:3:55", + "nodeType": "YulIdentifier", + "src": "9441:3:55" + }, + "nativeSrc": "9441:7:55", + "nodeType": "YulFunctionCall", + "src": "9441:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9429:3:55", + "nodeType": "YulIdentifier", + "src": "9429:3:55" + }, + "nativeSrc": "9429:20:55", + "nodeType": "YulFunctionCall", + "src": "9429:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "9418:7:55", + "nodeType": "YulTypedName", + "src": "9418:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9462:49:55", + "nodeType": "YulVariableDeclaration", + "src": "9462:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9506:4:55", + "nodeType": "YulIdentifier", + "src": "9506:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "9476:29:55", + "nodeType": "YulIdentifier", + "src": "9476:29:55" + }, + "nativeSrc": "9476:35:55", + "nodeType": "YulFunctionCall", + "src": "9476:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "9466:6:55", + "nodeType": "YulTypedName", + "src": "9466:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "9524:10:55", + "nodeType": "YulVariableDeclaration", + "src": "9524:10:55", + "value": { + "kind": "number", + "nativeSrc": "9533:1:55", + "nodeType": "YulLiteral", + "src": "9533:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "9528:1:55", + "nodeType": "YulTypedName", + "src": "9528:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9611:172:55", + "nodeType": "YulBlock", + "src": "9611:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9636:6:55", + "nodeType": "YulIdentifier", + "src": "9636:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "9654:3:55", + "nodeType": "YulIdentifier", + "src": "9654:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "9659:9:55", + "nodeType": "YulIdentifier", + "src": "9659:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9650:3:55", + "nodeType": "YulIdentifier", + "src": "9650:3:55" + }, + "nativeSrc": "9650:19:55", + "nodeType": "YulFunctionCall", + "src": "9650:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9644:5:55", + "nodeType": "YulIdentifier", + "src": "9644:5:55" + }, + "nativeSrc": "9644:26:55", + "nodeType": "YulFunctionCall", + "src": "9644:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9629:6:55", + "nodeType": "YulIdentifier", + "src": "9629:6:55" + }, + "nativeSrc": "9629:42:55", + "nodeType": "YulFunctionCall", + "src": "9629:42:55" + }, + "nativeSrc": "9629:42:55", + "nodeType": "YulExpressionStatement", + "src": "9629:42:55" + }, + { + "nativeSrc": "9688:24:55", + "nodeType": "YulAssignment", + "src": "9688:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9702:6:55", + "nodeType": "YulIdentifier", + "src": "9702:6:55" + }, + { + "kind": "number", + "nativeSrc": "9710:1:55", + "nodeType": "YulLiteral", + "src": "9710:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9698:3:55", + "nodeType": "YulIdentifier", + "src": "9698:3:55" + }, + "nativeSrc": "9698:14:55", + "nodeType": "YulFunctionCall", + "src": "9698:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "9688:6:55", + "nodeType": "YulIdentifier", + "src": "9688:6:55" + } + ] + }, + { + "nativeSrc": "9729:40:55", + "nodeType": "YulAssignment", + "src": "9729:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "9746:9:55", + "nodeType": "YulIdentifier", + "src": "9746:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "9757:11:55", + "nodeType": "YulIdentifier", + "src": "9757:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9742:3:55", + "nodeType": "YulIdentifier", + "src": "9742:3:55" + }, + "nativeSrc": "9742:27:55", + "nodeType": "YulFunctionCall", + "src": "9742:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "9729:9:55", + "nodeType": "YulIdentifier", + "src": "9729:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9558:1:55", + "nodeType": "YulIdentifier", + "src": "9558:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "9561:7:55", + "nodeType": "YulIdentifier", + "src": "9561:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9555:2:55", + "nodeType": "YulIdentifier", + "src": "9555:2:55" + }, + "nativeSrc": "9555:14:55", + "nodeType": "YulFunctionCall", + "src": "9555:14:55" + }, + "nativeSrc": "9547:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9570:28:55", + "nodeType": "YulBlock", + "src": "9570:28:55", + "statements": [ + { + "nativeSrc": "9572:24:55", + "nodeType": "YulAssignment", + "src": "9572:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9581:1:55", + "nodeType": "YulIdentifier", + "src": "9581:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "9584:11:55", + "nodeType": "YulIdentifier", + "src": "9584:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9577:3:55", + "nodeType": "YulIdentifier", + "src": "9577:3:55" + }, + "nativeSrc": "9577:19:55", + "nodeType": "YulFunctionCall", + "src": "9577:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "9572:1:55", + "nodeType": "YulIdentifier", + "src": "9572:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9551:3:55", + "nodeType": "YulBlock", + "src": "9551:3:55", + "statements": [] + }, + "src": "9547:236:55" + }, + { + "body": { + "nativeSrc": "9831:166:55", + "nodeType": "YulBlock", + "src": "9831:166:55", + "statements": [ + { + "nativeSrc": "9849:43:55", + "nodeType": "YulVariableDeclaration", + "src": "9849:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "9876:3:55", + "nodeType": "YulIdentifier", + "src": "9876:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "9881:9:55", + "nodeType": "YulIdentifier", + "src": "9881:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9872:3:55", + "nodeType": "YulIdentifier", + "src": "9872:3:55" + }, + "nativeSrc": "9872:19:55", + "nodeType": "YulFunctionCall", + "src": "9872:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9866:5:55", + "nodeType": "YulIdentifier", + "src": "9866:5:55" + }, + "nativeSrc": "9866:26:55", + "nodeType": "YulFunctionCall", + "src": "9866:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "9853:9:55", + "nodeType": "YulTypedName", + "src": "9853:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "9916:6:55", + "nodeType": "YulIdentifier", + "src": "9916:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "9928:9:55", + "nodeType": "YulIdentifier", + "src": "9928:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9955:1:55", + "nodeType": "YulLiteral", + "src": "9955:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "9958:6:55", + "nodeType": "YulIdentifier", + "src": "9958:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9951:3:55", + "nodeType": "YulIdentifier", + "src": "9951:3:55" + }, + "nativeSrc": "9951:14:55", + "nodeType": "YulFunctionCall", + "src": "9951:14:55" + }, + { + "kind": "number", + "nativeSrc": "9967:3:55", + "nodeType": "YulLiteral", + "src": "9967:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9947:3:55", + "nodeType": "YulIdentifier", + "src": "9947:3:55" + }, + "nativeSrc": "9947:24:55", + "nodeType": "YulFunctionCall", + "src": "9947:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9977:1:55", + "nodeType": "YulLiteral", + "src": "9977:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9973:3:55", + "nodeType": "YulIdentifier", + "src": "9973:3:55" + }, + "nativeSrc": "9973:6:55", + "nodeType": "YulFunctionCall", + "src": "9973:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9943:3:55", + "nodeType": "YulIdentifier", + "src": "9943:3:55" + }, + "nativeSrc": "9943:37:55", + "nodeType": "YulFunctionCall", + "src": "9943:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9939:3:55", + "nodeType": "YulIdentifier", + "src": "9939:3:55" + }, + "nativeSrc": "9939:42:55", + "nodeType": "YulFunctionCall", + "src": "9939:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9924:3:55", + "nodeType": "YulIdentifier", + "src": "9924:3:55" + }, + "nativeSrc": "9924:58:55", + "nodeType": "YulFunctionCall", + "src": "9924:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9909:6:55", + "nodeType": "YulIdentifier", + "src": "9909:6:55" + }, + "nativeSrc": "9909:74:55", + "nodeType": "YulFunctionCall", + "src": "9909:74:55" + }, + "nativeSrc": "9909:74:55", + "nodeType": "YulExpressionStatement", + "src": "9909:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "9802:7:55", + "nodeType": "YulIdentifier", + "src": "9802:7:55" + }, + { + "name": "newLen", + "nativeSrc": "9811:6:55", + "nodeType": "YulIdentifier", + "src": "9811:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9799:2:55", + "nodeType": "YulIdentifier", + "src": "9799:2:55" + }, + "nativeSrc": "9799:19:55", + "nodeType": "YulFunctionCall", + "src": "9799:19:55" + }, + "nativeSrc": "9796:201:55", + "nodeType": "YulIf", + "src": "9796:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10017:4:55", + "nodeType": "YulIdentifier", + "src": "10017:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10031:1:55", + "nodeType": "YulLiteral", + "src": "10031:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "10034:6:55", + "nodeType": "YulIdentifier", + "src": "10034:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10027:3:55", + "nodeType": "YulIdentifier", + "src": "10027:3:55" + }, + "nativeSrc": "10027:14:55", + "nodeType": "YulFunctionCall", + "src": "10027:14:55" + }, + { + "kind": "number", + "nativeSrc": "10043:1:55", + "nodeType": "YulLiteral", + "src": "10043:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10023:3:55", + "nodeType": "YulIdentifier", + "src": "10023:3:55" + }, + "nativeSrc": "10023:22:55", + "nodeType": "YulFunctionCall", + "src": "10023:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10010:6:55", + "nodeType": "YulIdentifier", + "src": "10010:6:55" + }, + "nativeSrc": "10010:36:55", + "nodeType": "YulFunctionCall", + "src": "10010:36:55" + }, + "nativeSrc": "10010:36:55", + "nodeType": "YulExpressionStatement", + "src": "10010:36:55" + } + ] + }, + "nativeSrc": "9393:663:55", + "nodeType": "YulCase", + "src": "9393:663:55", + "value": { + "kind": "number", + "nativeSrc": "9398:1:55", + "nodeType": "YulLiteral", + "src": "9398:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "10073:234:55", + "nodeType": "YulBlock", + "src": "10073:234:55", + "statements": [ + { + "nativeSrc": "10087:14:55", + "nodeType": "YulVariableDeclaration", + "src": "10087:14:55", + "value": { + "kind": "number", + "nativeSrc": "10100:1:55", + "nodeType": "YulLiteral", + "src": "10100:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10091:5:55", + "nodeType": "YulTypedName", + "src": "10091:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10136:67:55", + "nodeType": "YulBlock", + "src": "10136:67:55", + "statements": [ + { + "nativeSrc": "10154:35:55", + "nodeType": "YulAssignment", + "src": "10154:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10173:3:55", + "nodeType": "YulIdentifier", + "src": "10173:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "10178:9:55", + "nodeType": "YulIdentifier", + "src": "10178:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10169:3:55", + "nodeType": "YulIdentifier", + "src": "10169:3:55" + }, + "nativeSrc": "10169:19:55", + "nodeType": "YulFunctionCall", + "src": "10169:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10163:5:55", + "nodeType": "YulIdentifier", + "src": "10163:5:55" + }, + "nativeSrc": "10163:26:55", + "nodeType": "YulFunctionCall", + "src": "10163:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "10154:5:55", + "nodeType": "YulIdentifier", + "src": "10154:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "10117:6:55", + "nodeType": "YulIdentifier", + "src": "10117:6:55" + }, + "nativeSrc": "10114:89:55", + "nodeType": "YulIf", + "src": "10114:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10223:4:55", + "nodeType": "YulIdentifier", + "src": "10223:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10282:5:55", + "nodeType": "YulIdentifier", + "src": "10282:5:55" + }, + { + "name": "newLen", + "nativeSrc": "10289:6:55", + "nodeType": "YulIdentifier", + "src": "10289:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "10229:52:55", + "nodeType": "YulIdentifier", + "src": "10229:52:55" + }, + "nativeSrc": "10229:67:55", + "nodeType": "YulFunctionCall", + "src": "10229:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10216:6:55", + "nodeType": "YulIdentifier", + "src": "10216:6:55" + }, + "nativeSrc": "10216:81:55", + "nodeType": "YulFunctionCall", + "src": "10216:81:55" + }, + "nativeSrc": "10216:81:55", + "nodeType": "YulExpressionStatement", + "src": "10216:81:55" + } + ] + }, + "nativeSrc": "10065:242:55", + "nodeType": "YulCase", + "src": "10065:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9373:6:55", + "nodeType": "YulIdentifier", + "src": "9373:6:55" + }, + { + "kind": "number", + "nativeSrc": "9381:2:55", + "nodeType": "YulLiteral", + "src": "9381:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9370:2:55", + "nodeType": "YulIdentifier", + "src": "9370:2:55" + }, + "nativeSrc": "9370:14:55", + "nodeType": "YulFunctionCall", + "src": "9370:14:55" + }, + "nativeSrc": "9363:944:55", + "nodeType": "YulSwitch", + "src": "9363:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "8968:1345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "9049:4:55", + "nodeType": "YulTypedName", + "src": "9049:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "9055:3:55", + "nodeType": "YulTypedName", + "src": "9055:3:55", + "type": "" + } + ], + "src": "8968:1345:55" + }, + { + "body": { + "nativeSrc": "10467:142:55", + "nodeType": "YulBlock", + "src": "10467:142:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10484:9:55", + "nodeType": "YulIdentifier", + "src": "10484:9:55" + }, + { + "kind": "number", + "nativeSrc": "10495:2:55", + "nodeType": "YulLiteral", + "src": "10495:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10477:6:55", + "nodeType": "YulIdentifier", + "src": "10477:6:55" + }, + "nativeSrc": "10477:21:55", + "nodeType": "YulFunctionCall", + "src": "10477:21:55" + }, + "nativeSrc": "10477:21:55", + "nodeType": "YulExpressionStatement", + "src": "10477:21:55" + }, + { + "nativeSrc": "10507:53:55", + "nodeType": "YulAssignment", + "src": "10507:53:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "10533:6:55", + "nodeType": "YulIdentifier", + "src": "10533:6:55" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10545:9:55", + "nodeType": "YulIdentifier", + "src": "10545:9:55" + }, + { + "kind": "number", + "nativeSrc": "10556:2:55", + "nodeType": "YulLiteral", + "src": "10556:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10541:3:55", + "nodeType": "YulIdentifier", + "src": "10541:3:55" + }, + "nativeSrc": "10541:18:55", + "nodeType": "YulFunctionCall", + "src": "10541:18:55" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "10515:17:55", + "nodeType": "YulIdentifier", + "src": "10515:17:55" + }, + "nativeSrc": "10515:45:55", + "nodeType": "YulFunctionCall", + "src": "10515:45:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10507:4:55", + "nodeType": "YulIdentifier", + "src": "10507:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10580:9:55", + "nodeType": "YulIdentifier", + "src": "10580:9:55" + }, + { + "kind": "number", + "nativeSrc": "10591:2:55", + "nodeType": "YulLiteral", + "src": "10591:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10576:3:55", + "nodeType": "YulIdentifier", + "src": "10576:3:55" + }, + "nativeSrc": "10576:18:55", + "nodeType": "YulFunctionCall", + "src": "10576:18:55" + }, + { + "name": "value1", + "nativeSrc": "10596:6:55", + "nodeType": "YulIdentifier", + "src": "10596:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10569:6:55", + "nodeType": "YulIdentifier", + "src": "10569:6:55" + }, + "nativeSrc": "10569:34:55", + "nodeType": "YulFunctionCall", + "src": "10569:34:55" + }, + "nativeSrc": "10569:34:55", + "nodeType": "YulExpressionStatement", + "src": "10569:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed", + "nativeSrc": "10318:291:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10428:9:55", + "nodeType": "YulTypedName", + "src": "10428:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10439:6:55", + "nodeType": "YulTypedName", + "src": "10439:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10447:6:55", + "nodeType": "YulTypedName", + "src": "10447:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10458:4:55", + "nodeType": "YulTypedName", + "src": "10458:4:55", + "type": "" + } + ], + "src": "10318:291:55" + }, + { + "body": { + "nativeSrc": "10695:103:55", + "nodeType": "YulBlock", + "src": "10695:103:55", + "statements": [ + { + "body": { + "nativeSrc": "10741:16:55", + "nodeType": "YulBlock", + "src": "10741:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10750:1:55", + "nodeType": "YulLiteral", + "src": "10750:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10753:1:55", + "nodeType": "YulLiteral", + "src": "10753:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10743:6:55", + "nodeType": "YulIdentifier", + "src": "10743:6:55" + }, + "nativeSrc": "10743:12:55", + "nodeType": "YulFunctionCall", + "src": "10743:12:55" + }, + "nativeSrc": "10743:12:55", + "nodeType": "YulExpressionStatement", + "src": "10743:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10716:7:55", + "nodeType": "YulIdentifier", + "src": "10716:7:55" + }, + { + "name": "headStart", + "nativeSrc": "10725:9:55", + "nodeType": "YulIdentifier", + "src": "10725:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10712:3:55", + "nodeType": "YulIdentifier", + "src": "10712:3:55" + }, + "nativeSrc": "10712:23:55", + "nodeType": "YulFunctionCall", + "src": "10712:23:55" + }, + { + "kind": "number", + "nativeSrc": "10737:2:55", + "nodeType": "YulLiteral", + "src": "10737:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10708:3:55", + "nodeType": "YulIdentifier", + "src": "10708:3:55" + }, + "nativeSrc": "10708:32:55", + "nodeType": "YulFunctionCall", + "src": "10708:32:55" + }, + "nativeSrc": "10705:52:55", + "nodeType": "YulIf", + "src": "10705:52:55" + }, + { + "nativeSrc": "10766:26:55", + "nodeType": "YulAssignment", + "src": "10766:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10782:9:55", + "nodeType": "YulIdentifier", + "src": "10782:9:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10776:5:55", + "nodeType": "YulIdentifier", + "src": "10776:5:55" + }, + "nativeSrc": "10776:16:55", + "nodeType": "YulFunctionCall", + "src": "10776:16:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10766:6:55", + "nodeType": "YulIdentifier", + "src": "10766:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "10614:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10661:9:55", + "nodeType": "YulTypedName", + "src": "10661:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10672:7:55", + "nodeType": "YulTypedName", + "src": "10672:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10684:6:55", + "nodeType": "YulTypedName", + "src": "10684:6:55", + "type": "" + } + ], + "src": "10614:184:55" + }, + { + "body": { + "nativeSrc": "10932:119:55", + "nodeType": "YulBlock", + "src": "10932:119:55", + "statements": [ + { + "nativeSrc": "10942:26:55", + "nodeType": "YulAssignment", + "src": "10942:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10954:9:55", + "nodeType": "YulIdentifier", + "src": "10954:9:55" + }, + { + "kind": "number", + "nativeSrc": "10965:2:55", + "nodeType": "YulLiteral", + "src": "10965:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10950:3:55", + "nodeType": "YulIdentifier", + "src": "10950:3:55" + }, + "nativeSrc": "10950:18:55", + "nodeType": "YulFunctionCall", + "src": "10950:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10942:4:55", + "nodeType": "YulIdentifier", + "src": "10942:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10984:9:55", + "nodeType": "YulIdentifier", + "src": "10984:9:55" + }, + { + "name": "value0", + "nativeSrc": "10995:6:55", + "nodeType": "YulIdentifier", + "src": "10995:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10977:6:55", + "nodeType": "YulIdentifier", + "src": "10977:6:55" + }, + "nativeSrc": "10977:25:55", + "nodeType": "YulFunctionCall", + "src": "10977:25:55" + }, + "nativeSrc": "10977:25:55", + "nodeType": "YulExpressionStatement", + "src": "10977:25:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11022:9:55", + "nodeType": "YulIdentifier", + "src": "11022:9:55" + }, + { + "kind": "number", + "nativeSrc": "11033:2:55", + "nodeType": "YulLiteral", + "src": "11033:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11018:3:55", + "nodeType": "YulIdentifier", + "src": "11018:3:55" + }, + "nativeSrc": "11018:18:55", + "nodeType": "YulFunctionCall", + "src": "11018:18:55" + }, + { + "name": "value1", + "nativeSrc": "11038:6:55", + "nodeType": "YulIdentifier", + "src": "11038:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11011:6:55", + "nodeType": "YulIdentifier", + "src": "11011:6:55" + }, + "nativeSrc": "11011:34:55", + "nodeType": "YulFunctionCall", + "src": "11011:34:55" + }, + "nativeSrc": "11011:34:55", + "nodeType": "YulExpressionStatement", + "src": "11011:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "10803:248:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10893:9:55", + "nodeType": "YulTypedName", + "src": "10893:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10904:6:55", + "nodeType": "YulTypedName", + "src": "10904:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10912:6:55", + "nodeType": "YulTypedName", + "src": "10912:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10923:4:55", + "nodeType": "YulTypedName", + "src": "10923:4:55", + "type": "" + } + ], + "src": "10803:248:55" + }, + { + "body": { + "nativeSrc": "11257:179:55", + "nodeType": "YulBlock", + "src": "11257:179:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11274:9:55", + "nodeType": "YulIdentifier", + "src": "11274:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11289:6:55", + "nodeType": "YulIdentifier", + "src": "11289:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11305:3:55", + "nodeType": "YulLiteral", + "src": "11305:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11310:1:55", + "nodeType": "YulLiteral", + "src": "11310:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11301:3:55", + "nodeType": "YulIdentifier", + "src": "11301:3:55" + }, + "nativeSrc": "11301:11:55", + "nodeType": "YulFunctionCall", + "src": "11301:11:55" + }, + { + "kind": "number", + "nativeSrc": "11314:1:55", + "nodeType": "YulLiteral", + "src": "11314:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11297:3:55", + "nodeType": "YulIdentifier", + "src": "11297:3:55" + }, + "nativeSrc": "11297:19:55", + "nodeType": "YulFunctionCall", + "src": "11297:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11285:3:55", + "nodeType": "YulIdentifier", + "src": "11285:3:55" + }, + "nativeSrc": "11285:32:55", + "nodeType": "YulFunctionCall", + "src": "11285:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11267:6:55", + "nodeType": "YulIdentifier", + "src": "11267:6:55" + }, + "nativeSrc": "11267:51:55", + "nodeType": "YulFunctionCall", + "src": "11267:51:55" + }, + "nativeSrc": "11267:51:55", + "nodeType": "YulExpressionStatement", + "src": "11267:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11338:9:55", + "nodeType": "YulIdentifier", + "src": "11338:9:55" + }, + { + "kind": "number", + "nativeSrc": "11349:2:55", + "nodeType": "YulLiteral", + "src": "11349:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11334:3:55", + "nodeType": "YulIdentifier", + "src": "11334:3:55" + }, + "nativeSrc": "11334:18:55", + "nodeType": "YulFunctionCall", + "src": "11334:18:55" + }, + { + "kind": "number", + "nativeSrc": "11354:2:55", + "nodeType": "YulLiteral", + "src": "11354:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11327:6:55", + "nodeType": "YulIdentifier", + "src": "11327:6:55" + }, + "nativeSrc": "11327:30:55", + "nodeType": "YulFunctionCall", + "src": "11327:30:55" + }, + "nativeSrc": "11327:30:55", + "nodeType": "YulExpressionStatement", + "src": "11327:30:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11377:9:55", + "nodeType": "YulIdentifier", + "src": "11377:9:55" + }, + { + "kind": "number", + "nativeSrc": "11388:2:55", + "nodeType": "YulLiteral", + "src": "11388:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11373:3:55", + "nodeType": "YulIdentifier", + "src": "11373:3:55" + }, + "nativeSrc": "11373:18:55", + "nodeType": "YulFunctionCall", + "src": "11373:18:55" + }, + { + "kind": "number", + "nativeSrc": "11393:1:55", + "nodeType": "YulLiteral", + "src": "11393:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11366:6:55", + "nodeType": "YulIdentifier", + "src": "11366:6:55" + }, + "nativeSrc": "11366:29:55", + "nodeType": "YulFunctionCall", + "src": "11366:29:55" + }, + "nativeSrc": "11366:29:55", + "nodeType": "YulExpressionStatement", + "src": "11366:29:55" + }, + { + "nativeSrc": "11404:26:55", + "nodeType": "YulAssignment", + "src": "11404:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11416:9:55", + "nodeType": "YulIdentifier", + "src": "11416:9:55" + }, + { + "kind": "number", + "nativeSrc": "11427:2:55", + "nodeType": "YulLiteral", + "src": "11427:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11412:3:55", + "nodeType": "YulIdentifier", + "src": "11412:3:55" + }, + "nativeSrc": "11412:18:55", + "nodeType": "YulFunctionCall", + "src": "11412:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11404:4:55", + "nodeType": "YulIdentifier", + "src": "11404:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "11056:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11226:9:55", + "nodeType": "YulTypedName", + "src": "11226:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11237:6:55", + "nodeType": "YulTypedName", + "src": "11237:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11248:4:55", + "nodeType": "YulTypedName", + "src": "11248:4:55", + "type": "" + } + ], + "src": "11056:380:55" + }, + { + "body": { + "nativeSrc": "11654:324:55", + "nodeType": "YulBlock", + "src": "11654:324:55", + "statements": [ + { + "nativeSrc": "11664:27:55", + "nodeType": "YulAssignment", + "src": "11664:27:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11676:9:55", + "nodeType": "YulIdentifier", + "src": "11676:9:55" + }, + { + "kind": "number", + "nativeSrc": "11687:3:55", + "nodeType": "YulLiteral", + "src": "11687:3:55", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11672:3:55", + "nodeType": "YulIdentifier", + "src": "11672:3:55" + }, + "nativeSrc": "11672:19:55", + "nodeType": "YulFunctionCall", + "src": "11672:19:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11664:4:55", + "nodeType": "YulIdentifier", + "src": "11664:4:55" + } + ] + }, + { + "nativeSrc": "11700:29:55", + "nodeType": "YulVariableDeclaration", + "src": "11700:29:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11718:3:55", + "nodeType": "YulLiteral", + "src": "11718:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11723:1:55", + "nodeType": "YulLiteral", + "src": "11723:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11714:3:55", + "nodeType": "YulIdentifier", + "src": "11714:3:55" + }, + "nativeSrc": "11714:11:55", + "nodeType": "YulFunctionCall", + "src": "11714:11:55" + }, + { + "kind": "number", + "nativeSrc": "11727:1:55", + "nodeType": "YulLiteral", + "src": "11727:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11710:3:55", + "nodeType": "YulIdentifier", + "src": "11710:3:55" + }, + "nativeSrc": "11710:19:55", + "nodeType": "YulFunctionCall", + "src": "11710:19:55" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "11704:2:55", + "nodeType": "YulTypedName", + "src": "11704:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11745:9:55", + "nodeType": "YulIdentifier", + "src": "11745:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11760:6:55", + "nodeType": "YulIdentifier", + "src": "11760:6:55" + }, + { + "name": "_1", + "nativeSrc": "11768:2:55", + "nodeType": "YulIdentifier", + "src": "11768:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11756:3:55", + "nodeType": "YulIdentifier", + "src": "11756:3:55" + }, + "nativeSrc": "11756:15:55", + "nodeType": "YulFunctionCall", + "src": "11756:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11738:6:55", + "nodeType": "YulIdentifier", + "src": "11738:6:55" + }, + "nativeSrc": "11738:34:55", + "nodeType": "YulFunctionCall", + "src": "11738:34:55" + }, + "nativeSrc": "11738:34:55", + "nodeType": "YulExpressionStatement", + "src": "11738:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11792:9:55", + "nodeType": "YulIdentifier", + "src": "11792:9:55" + }, + { + "kind": "number", + "nativeSrc": "11803:2:55", + "nodeType": "YulLiteral", + "src": "11803:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11788:3:55", + "nodeType": "YulIdentifier", + "src": "11788:3:55" + }, + "nativeSrc": "11788:18:55", + "nodeType": "YulFunctionCall", + "src": "11788:18:55" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "11812:6:55", + "nodeType": "YulIdentifier", + "src": "11812:6:55" + }, + { + "name": "_1", + "nativeSrc": "11820:2:55", + "nodeType": "YulIdentifier", + "src": "11820:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11808:3:55", + "nodeType": "YulIdentifier", + "src": "11808:3:55" + }, + "nativeSrc": "11808:15:55", + "nodeType": "YulFunctionCall", + "src": "11808:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11781:6:55", + "nodeType": "YulIdentifier", + "src": "11781:6:55" + }, + "nativeSrc": "11781:43:55", + "nodeType": "YulFunctionCall", + "src": "11781:43:55" + }, + "nativeSrc": "11781:43:55", + "nodeType": "YulExpressionStatement", + "src": "11781:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11844:9:55", + "nodeType": "YulIdentifier", + "src": "11844:9:55" + }, + { + "kind": "number", + "nativeSrc": "11855:2:55", + "nodeType": "YulLiteral", + "src": "11855:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11840:3:55", + "nodeType": "YulIdentifier", + "src": "11840:3:55" + }, + "nativeSrc": "11840:18:55", + "nodeType": "YulFunctionCall", + "src": "11840:18:55" + }, + { + "name": "value2", + "nativeSrc": "11860:6:55", + "nodeType": "YulIdentifier", + "src": "11860:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11833:6:55", + "nodeType": "YulIdentifier", + "src": "11833:6:55" + }, + "nativeSrc": "11833:34:55", + "nodeType": "YulFunctionCall", + "src": "11833:34:55" + }, + "nativeSrc": "11833:34:55", + "nodeType": "YulExpressionStatement", + "src": "11833:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11887:9:55", + "nodeType": "YulIdentifier", + "src": "11887:9:55" + }, + { + "kind": "number", + "nativeSrc": "11898:2:55", + "nodeType": "YulLiteral", + "src": "11898:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11883:3:55", + "nodeType": "YulIdentifier", + "src": "11883:3:55" + }, + "nativeSrc": "11883:18:55", + "nodeType": "YulFunctionCall", + "src": "11883:18:55" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "11907:6:55", + "nodeType": "YulIdentifier", + "src": "11907:6:55" + }, + { + "name": "_1", + "nativeSrc": "11915:2:55", + "nodeType": "YulIdentifier", + "src": "11915:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11903:3:55", + "nodeType": "YulIdentifier", + "src": "11903:3:55" + }, + "nativeSrc": "11903:15:55", + "nodeType": "YulFunctionCall", + "src": "11903:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11876:6:55", + "nodeType": "YulIdentifier", + "src": "11876:6:55" + }, + "nativeSrc": "11876:43:55", + "nodeType": "YulFunctionCall", + "src": "11876:43:55" + }, + "nativeSrc": "11876:43:55", + "nodeType": "YulExpressionStatement", + "src": "11876:43:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11939:9:55", + "nodeType": "YulIdentifier", + "src": "11939:9:55" + }, + { + "kind": "number", + "nativeSrc": "11950:3:55", + "nodeType": "YulLiteral", + "src": "11950:3:55", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11935:3:55", + "nodeType": "YulIdentifier", + "src": "11935:3:55" + }, + "nativeSrc": "11935:19:55", + "nodeType": "YulFunctionCall", + "src": "11935:19:55" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "11960:6:55", + "nodeType": "YulIdentifier", + "src": "11960:6:55" + }, + { + "name": "_1", + "nativeSrc": "11968:2:55", + "nodeType": "YulIdentifier", + "src": "11968:2:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11956:3:55", + "nodeType": "YulIdentifier", + "src": "11956:3:55" + }, + "nativeSrc": "11956:15:55", + "nodeType": "YulFunctionCall", + "src": "11956:15:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11928:6:55", + "nodeType": "YulIdentifier", + "src": "11928:6:55" + }, + "nativeSrc": "11928:44:55", + "nodeType": "YulFunctionCall", + "src": "11928:44:55" + }, + "nativeSrc": "11928:44:55", + "nodeType": "YulExpressionStatement", + "src": "11928:44:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed", + "nativeSrc": "11441:537:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11591:9:55", + "nodeType": "YulTypedName", + "src": "11591:9:55", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11602:6:55", + "nodeType": "YulTypedName", + "src": "11602:6:55", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11610:6:55", + "nodeType": "YulTypedName", + "src": "11610:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11618:6:55", + "nodeType": "YulTypedName", + "src": "11618:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11626:6:55", + "nodeType": "YulTypedName", + "src": "11626:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11634:6:55", + "nodeType": "YulTypedName", + "src": "11634:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11645:4:55", + "nodeType": "YulTypedName", + "src": "11645:4:55", + "type": "" + } + ], + "src": "11441:537:55" + }, + { + "body": { + "nativeSrc": "12112:145:55", + "nodeType": "YulBlock", + "src": "12112:145:55", + "statements": [ + { + "nativeSrc": "12122:26:55", + "nodeType": "YulAssignment", + "src": "12122:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12134:9:55", + "nodeType": "YulIdentifier", + "src": "12134:9:55" + }, + { + "kind": "number", + "nativeSrc": "12145:2:55", + "nodeType": "YulLiteral", + "src": "12145:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12130:3:55", + "nodeType": "YulIdentifier", + "src": "12130:3:55" + }, + "nativeSrc": "12130:18:55", + "nodeType": "YulFunctionCall", + "src": "12130:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12122:4:55", + "nodeType": "YulIdentifier", + "src": "12122:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12164:9:55", + "nodeType": "YulIdentifier", + "src": "12164:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12179:6:55", + "nodeType": "YulIdentifier", + "src": "12179:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12195:3:55", + "nodeType": "YulLiteral", + "src": "12195:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12200:1:55", + "nodeType": "YulLiteral", + "src": "12200:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12191:3:55", + "nodeType": "YulIdentifier", + "src": "12191:3:55" + }, + "nativeSrc": "12191:11:55", + "nodeType": "YulFunctionCall", + "src": "12191:11:55" + }, + { + "kind": "number", + "nativeSrc": "12204:1:55", + "nodeType": "YulLiteral", + "src": "12204:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12187:3:55", + "nodeType": "YulIdentifier", + "src": "12187:3:55" + }, + "nativeSrc": "12187:19:55", + "nodeType": "YulFunctionCall", + "src": "12187:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12175:3:55", + "nodeType": "YulIdentifier", + "src": "12175:3:55" + }, + "nativeSrc": "12175:32:55", + "nodeType": "YulFunctionCall", + "src": "12175:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12157:6:55", + "nodeType": "YulIdentifier", + "src": "12157:6:55" + }, + "nativeSrc": "12157:51:55", + "nodeType": "YulFunctionCall", + "src": "12157:51:55" + }, + "nativeSrc": "12157:51:55", + "nodeType": "YulExpressionStatement", + "src": "12157:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12228:9:55", + "nodeType": "YulIdentifier", + "src": "12228:9:55" + }, + { + "kind": "number", + "nativeSrc": "12239:2:55", + "nodeType": "YulLiteral", + "src": "12239:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12224:3:55", + "nodeType": "YulIdentifier", + "src": "12224:3:55" + }, + "nativeSrc": "12224:18:55", + "nodeType": "YulFunctionCall", + "src": "12224:18:55" + }, + { + "name": "value1", + "nativeSrc": "12244:6:55", + "nodeType": "YulIdentifier", + "src": "12244:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12217:6:55", + "nodeType": "YulIdentifier", + "src": "12217:6:55" + }, + "nativeSrc": "12217:34:55", + "nodeType": "YulFunctionCall", + "src": "12217:34:55" + }, + "nativeSrc": "12217:34:55", + "nodeType": "YulExpressionStatement", + "src": "12217:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "11983:274:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12073:9:55", + "nodeType": "YulTypedName", + "src": "12073:9:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12084:6:55", + "nodeType": "YulTypedName", + "src": "12084:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12092:6:55", + "nodeType": "YulTypedName", + "src": "12092:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12103:4:55", + "nodeType": "YulTypedName", + "src": "12103:4:55", + "type": "" + } + ], + "src": "11983:274:55" + }, + { + "body": { + "nativeSrc": "12453:14:55", + "nodeType": "YulBlock", + "src": "12453:14:55", + "statements": [ + { + "nativeSrc": "12455:10:55", + "nodeType": "YulAssignment", + "src": "12455:10:55", + "value": { + "name": "pos", + "nativeSrc": "12462:3:55", + "nodeType": "YulIdentifier", + "src": "12462:3:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "12455:3:55", + "nodeType": "YulIdentifier", + "src": "12455:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12262:205:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "12437:3:55", + "nodeType": "YulTypedName", + "src": "12437:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "12445:3:55", + "nodeType": "YulTypedName", + "src": "12445:3:55", + "type": "" + } + ], + "src": "12262:205:55" + }, + { + "body": { + "nativeSrc": "12521:176:55", + "nodeType": "YulBlock", + "src": "12521:176:55", + "statements": [ + { + "nativeSrc": "12531:17:55", + "nodeType": "YulAssignment", + "src": "12531:17:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "12543:1:55", + "nodeType": "YulIdentifier", + "src": "12543:1:55" + }, + { + "name": "y", + "nativeSrc": "12546:1:55", + "nodeType": "YulIdentifier", + "src": "12546:1:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12539:3:55", + "nodeType": "YulIdentifier", + "src": "12539:3:55" + }, + "nativeSrc": "12539:9:55", + "nodeType": "YulFunctionCall", + "src": "12539:9:55" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "12531:4:55", + "nodeType": "YulIdentifier", + "src": "12531:4:55" + } + ] + }, + { + "body": { + "nativeSrc": "12580:111:55", + "nodeType": "YulBlock", + "src": "12580:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12601:1:55", + "nodeType": "YulLiteral", + "src": "12601:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12608:3:55", + "nodeType": "YulLiteral", + "src": "12608:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12613:10:55", + "nodeType": "YulLiteral", + "src": "12613:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12604:3:55", + "nodeType": "YulIdentifier", + "src": "12604:3:55" + }, + "nativeSrc": "12604:20:55", + "nodeType": "YulFunctionCall", + "src": "12604:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12594:6:55", + "nodeType": "YulIdentifier", + "src": "12594:6:55" + }, + "nativeSrc": "12594:31:55", + "nodeType": "YulFunctionCall", + "src": "12594:31:55" + }, + "nativeSrc": "12594:31:55", + "nodeType": "YulExpressionStatement", + "src": "12594:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12645:1:55", + "nodeType": "YulLiteral", + "src": "12645:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "12648:4:55", + "nodeType": "YulLiteral", + "src": "12648:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12638:6:55", + "nodeType": "YulIdentifier", + "src": "12638:6:55" + }, + "nativeSrc": "12638:15:55", + "nodeType": "YulFunctionCall", + "src": "12638:15:55" + }, + "nativeSrc": "12638:15:55", + "nodeType": "YulExpressionStatement", + "src": "12638:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12673:1:55", + "nodeType": "YulLiteral", + "src": "12673:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12676:4:55", + "nodeType": "YulLiteral", + "src": "12676:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12666:6:55", + "nodeType": "YulIdentifier", + "src": "12666:6:55" + }, + "nativeSrc": "12666:15:55", + "nodeType": "YulFunctionCall", + "src": "12666:15:55" + }, + "nativeSrc": "12666:15:55", + "nodeType": "YulExpressionStatement", + "src": "12666:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "12563:4:55", + "nodeType": "YulIdentifier", + "src": "12563:4:55" + }, + { + "name": "x", + "nativeSrc": "12569:1:55", + "nodeType": "YulIdentifier", + "src": "12569:1:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12560:2:55", + "nodeType": "YulIdentifier", + "src": "12560:2:55" + }, + "nativeSrc": "12560:11:55", + "nodeType": "YulFunctionCall", + "src": "12560:11:55" + }, + "nativeSrc": "12557:134:55", + "nodeType": "YulIf", + "src": "12557:134:55" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "12472:225:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "12503:1:55", + "nodeType": "YulTypedName", + "src": "12503:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "12506:1:55", + "nodeType": "YulTypedName", + "src": "12506:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "12512:4:55", + "nodeType": "YulTypedName", + "src": "12512:4:55", + "type": "" + } + ], + "src": "12472:225:55" + }, + { + "body": { + "nativeSrc": "12734:95:55", + "nodeType": "YulBlock", + "src": "12734:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12751:1:55", + "nodeType": "YulLiteral", + "src": "12751:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12758:3:55", + "nodeType": "YulLiteral", + "src": "12758:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12763:10:55", + "nodeType": "YulLiteral", + "src": "12763:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12754:3:55", + "nodeType": "YulIdentifier", + "src": "12754:3:55" + }, + "nativeSrc": "12754:20:55", + "nodeType": "YulFunctionCall", + "src": "12754:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12744:6:55", + "nodeType": "YulIdentifier", + "src": "12744:6:55" + }, + "nativeSrc": "12744:31:55", + "nodeType": "YulFunctionCall", + "src": "12744:31:55" + }, + "nativeSrc": "12744:31:55", + "nodeType": "YulExpressionStatement", + "src": "12744:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12791:1:55", + "nodeType": "YulLiteral", + "src": "12791:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "12794:4:55", + "nodeType": "YulLiteral", + "src": "12794:4:55", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12784:6:55", + "nodeType": "YulIdentifier", + "src": "12784:6:55" + }, + "nativeSrc": "12784:15:55", + "nodeType": "YulFunctionCall", + "src": "12784:15:55" + }, + "nativeSrc": "12784:15:55", + "nodeType": "YulExpressionStatement", + "src": "12784:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12815:1:55", + "nodeType": "YulLiteral", + "src": "12815:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12818:4:55", + "nodeType": "YulLiteral", + "src": "12818:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12808:6:55", + "nodeType": "YulIdentifier", + "src": "12808:6:55" + }, + "nativeSrc": "12808:15:55", + "nodeType": "YulFunctionCall", + "src": "12808:15:55" + }, + "nativeSrc": "12808:15:55", + "nodeType": "YulExpressionStatement", + "src": "12808:15:55" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "12702:127:55", + "nodeType": "YulFunctionDefinition", + "src": "12702:127:55" + }, + { + "body": { + "nativeSrc": "12971:150:55", + "nodeType": "YulBlock", + "src": "12971:150:55", + "statements": [ + { + "nativeSrc": "12981:27:55", + "nodeType": "YulVariableDeclaration", + "src": "12981:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13001:6:55", + "nodeType": "YulIdentifier", + "src": "13001:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12995:5:55", + "nodeType": "YulIdentifier", + "src": "12995:5:55" + }, + "nativeSrc": "12995:13:55", + "nodeType": "YulFunctionCall", + "src": "12995:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "12985:6:55", + "nodeType": "YulTypedName", + "src": "12985:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13056:6:55", + "nodeType": "YulIdentifier", + "src": "13056:6:55" + }, + { + "kind": "number", + "nativeSrc": "13064:4:55", + "nodeType": "YulLiteral", + "src": "13064:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13052:3:55", + "nodeType": "YulIdentifier", + "src": "13052:3:55" + }, + "nativeSrc": "13052:17:55", + "nodeType": "YulFunctionCall", + "src": "13052:17:55" + }, + { + "name": "pos", + "nativeSrc": "13071:3:55", + "nodeType": "YulIdentifier", + "src": "13071:3:55" + }, + { + "name": "length", + "nativeSrc": "13076:6:55", + "nodeType": "YulIdentifier", + "src": "13076:6:55" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "13017:34:55", + "nodeType": "YulIdentifier", + "src": "13017:34:55" + }, + "nativeSrc": "13017:66:55", + "nodeType": "YulFunctionCall", + "src": "13017:66:55" + }, + "nativeSrc": "13017:66:55", + "nodeType": "YulExpressionStatement", + "src": "13017:66:55" + }, + { + "nativeSrc": "13092:23:55", + "nodeType": "YulAssignment", + "src": "13092:23:55", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13103:3:55", + "nodeType": "YulIdentifier", + "src": "13103:3:55" + }, + { + "name": "length", + "nativeSrc": "13108:6:55", + "nodeType": "YulIdentifier", + "src": "13108:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13099:3:55", + "nodeType": "YulIdentifier", + "src": "13099:3:55" + }, + "nativeSrc": "13099:16:55", + "nodeType": "YulFunctionCall", + "src": "13099:16:55" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13092:3:55", + "nodeType": "YulIdentifier", + "src": "13092:3:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12834:287:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "12947:3:55", + "nodeType": "YulTypedName", + "src": "12947:3:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12952:6:55", + "nodeType": "YulTypedName", + "src": "12952:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "12963:3:55", + "nodeType": "YulTypedName", + "src": "12963:3:55", + "type": "" + } + ], + "src": "12834:287:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_available_length_string(src, length, end) -> array\n {\n let _1 := sub(shl(64, 1), 1)\n if gt(length, _1) { panic_error_0x41() }\n let _2 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value0 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := abi_decode_address(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let tail_2 := add(add(headStart, shl(5, length)), 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(63)))\n tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_string(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), 64)\n mstore(add(headStart, 64), 0)\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "837": [ + { + "length": 32, + "start": 5619 + }, + { + "length": 32, + "start": 5661 + }, + { + "length": 32, + "start": 6008 + } + ] + }, + "linkReferences": {}, + "object": "608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e55780630d8e6e2c146200030a57806312b357b514620003415780631c2b3afc1462000366578063248a9ca3146200038b5780632cec1a0614620003b05780632f2ff15d14620003d5578063352af39a14620003fa57806336568abe146200041f5780633c55593814620004445780633f4ba83a146200045c57806340df8d8414620004745780634cba593a14620004995780634f1ef28614620004be5780634f3f463914620004d557806352d1902d14620004ed5780635a81a62614620005055780635c975abb146200052a5780635e81861914620005425780636cd5687814620005675780637fa34657146200058c5780638127f46514620005b15780638456cb5914620005d85780639010d07c14620005f057806391d14854146200061557806392cf833f146200063a57806395b6ef0c146200065f5780639d825bc51462000684578063a217fddf146200069c578063ad3cb1cc14620006b3578063b289819c14620006e6578063c17e30bf146200070b578063c2a1db781462000730578063c39409e11462000757578063ca15c873146200076f578063d547741f1462000794578063e63ab1e914620007b9578063f72c0d8b14620007de578063f85b4a9c1462000803578063fd2fbd521462000828575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002e5383398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b50620002866200028036600462002450565b6200083f565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af6200086d565b6040516200025891906200247c565b348015620002cb57600080fd5b50620002e3620002dd366004620024ad565b6200088d565b005b348015620002f257600080fd5b50620002e3620003043660046200255d565b6200093f565b3480156200031757600080fd5b506040805180820190915260028152612b1960f11b60208201525b604051620002589190620025fe565b3480156200034e57600080fd5b506200028662000360366004620024ad565b62000969565b3480156200037357600080fd5b50620002e36200038536600462002613565b6200099b565b3480156200039857600080fd5b506200024e620003aa36600462002613565b620009cd565b348015620003bd57600080fd5b50620002af620003cf366004620024ad565b620009ef565b348015620003e257600080fd5b50620002e3620003f43660046200262d565b62000a27565b3480156200040757600080fd5b506200024e620004193660046200255d565b62000a4f565b3480156200042c57600080fd5b50620002e36200043e3660046200262d565b62000ade565b3480156200045157600080fd5b506200024e62000b19565b3480156200046957600080fd5b50620002e362000b30565b3480156200048157600080fd5b506200024e60008051602062002f3383398151915281565b348015620004a657600080fd5b506200024e60008051602062002e9383398151915281565b620002e3620004cf3660046200265c565b62000b58565b348015620004e257600080fd5b50620002af62000b79565b348015620004fa57600080fd5b506200024e62000b99565b3480156200051257600080fd5b50620003326200052436600462002613565b62000bb9565b3480156200053757600080fd5b506200028662000c9c565b3480156200054f57600080fd5b50620002e3620005613660046200255d565b62000cb3565b3480156200057457600080fd5b50620002e362000586366004620024ad565b62000cd9565b3480156200059957600080fd5b506200024e60008051602062002f5383398151915281565b348015620005be57600080fd5b50620005c962000d7e565b604051620002589190620026c4565b348015620005e557600080fd5b50620002e362000d9f565b348015620005fd57600080fd5b50620002af6200060f3660046200270a565b62000dc4565b3480156200062257600080fd5b5062000286620006343660046200262d565b62000df6565b3480156200064757600080fd5b506200024e60008051602062002e7383398151915281565b3480156200066c57600080fd5b50620002e36200067e3660046200272d565b62000e2e565b3480156200069157600080fd5b50620002af62000fec565b348015620006a957600080fd5b506200024e600081565b348015620006c057600080fd5b5062000332604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006f357600080fd5b506200024e60008051602062002eb383398151915281565b3480156200071857600080fd5b50620002e36200072a366004620024ad565b62001009565b3480156200073d57600080fd5b5062000748620010b2565b604051620002589190620027a5565b3480156200076457600080fd5b506200024e62001227565b3480156200077c57600080fd5b506200024e6200078e36600462002613565b6200123e565b348015620007a157600080fd5b50620002e3620007b33660046200262d565b6200126e565b348015620007c657600080fd5b506200024e60008051602062002f1383398151915281565b348015620007eb57600080fd5b506200024e60008051602062002ed383398151915281565b3480156200081057600080fd5b50620002e36200082236600462002613565b62001290565b620002af620008393660046200280d565b620012f6565b60006001600160e01b03198216635a05180f60e01b1480620008675750620008678262001324565b92915050565b6000806200087a6200135b565b600201546001600160a01b031692915050565b60008051602062002eb3833981519152620008a8816200137f565b816001600160a01b03163b600003620008e157816040516337766f4360e11b8152600401620008d891906200247c565b60405180910390fd5b6000620008ed62000fec565b9050620008fa836200138b565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002e738339815191526200095a816200137f565b6200096582620013b9565b5050565b600080620009766200135b565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002e53833981519152620009b6816200137f565b6000620009c26200135b565b600101929092555050565b600080620009da620014ac565b60009384526020525050604090206001015490565b600080620009fc6200135b565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3282620009cd565b62000a3d816200137f565b62000a498383620014d0565b50505050565b60008062000a5c62001519565b905062000a958360405160200162000a7591906200283c565b60408051601f19818403018152919052805160209091012082906200153d565b62000ab35760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ac791906200283c565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b085760405163334bd91960e11b815260040160405180910390fd5b62000b1482826200154b565b505050565b60008062000b266200135b565b6003015492915050565b60008051602062002f1383398151915262000b4b816200137f565b62000b556200158b565b50565b62000b62620015e8565b62000b6d8262001693565b620009658282620016ae565b60008062000b866200135b565b600401546001600160a01b031692915050565b600062000ba56200176d565b5060008051602062002ef383398151915290565b6060600062000bc762001519565b905062000bd581846200153d565b62000bf35760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c10906200285a565b80601f016020809104026020016040519081016040528092919081815260200182805462000c3e906200285a565b801562000c8f5780601f1062000c635761010080835404028352916020019162000c8f565b820191906000526020600020905b81548152906001019060200180831162000c7157829003601f168201915b5050505050915050919050565b60008062000ca9620017b7565b5460ff1692915050565b60008051602062002e7383398151915262000cce816200137f565b6200096582620017db565b60008051602062002f3383398151915262000cf4816200137f565b6001600160a01b03821662000d20578160405163220b4f1160e11b8152600401620008d891906200247c565b600062000d2c6200086d565b905062000d3983620018b9565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d8c62001519565b905062000d9981620018ea565b91505090565b60008051602062002f1383398151915262000dba816200137f565b62000b55620018f9565b60008062000dd162001945565b600085815260208290526040902090915062000dee908462001969565b949350505050565b60008062000e03620014ac565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e3a62001977565b805490915060ff600160401b82041615906001600160401b031660008115801562000e625750825b90506000826001600160401b0316600114801562000e7f5750303b155b90508115801562000e8e575080155b1562000ead5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ed757845460ff60401b1916600160401b1785555b62000ee16200199b565b62000eeb620019af565b62000ef5620019af565b62000f0260008c620014d0565b5062000f1e60008051602062002f138339815191528b620014d0565b5062000f3a60008051602062002ed38339815191528a620014d0565b5062000f5660008051602062002eb383398151915289620014d0565b50600062000f636200135b565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000fdf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b60008062000ff96200135b565b546001600160a01b031692915050565b60008051602062002eb383398151915262001024816200137f565b816001600160a01b03163b60000362001054578160405163c9c10a6160e01b8152600401620008d891906200247c565b60006200106062000b79565b90506200106d83620019b9565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010c062001519565b90506000620010cf82620018ea565b9050600081516001600160401b03811115620010ef57620010ef620024cb565b6040519080825280602002602001820160405280156200112457816020015b60608152602001906001900390816200110e5790505b50905060005b82518110156200121f578360020160008483815181106200114f576200114f62002896565b60200260200101518152602001908152602001600020805462001172906200285a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011a0906200285a565b8015620011f15780601f10620011c557610100808354040283529160200191620011f1565b820191906000526020600020905b815481529060010190602001808311620011d357829003601f168201915b50505050508282815181106200120b576200120b62002896565b60209081029190910101526001016200112a565b509392505050565b600080620012346200135b565b6001015492915050565b6000806200124b62001945565b60008481526020829052604090209091506200126790620019ea565b9392505050565b6200127982620009cd565b62001284816200137f565b62000a4983836200154b565b60008051602062002e93833981519152620012ab816200137f565b6000620012b762000b19565b9050620012c483620019f5565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200130262001a0b565b6200130c62001a44565b62001318838362001a6d565b90506200086762001cad565b60006001600160e01b03198216637965db0b60e01b14806200086757506301ffc9a760e01b6001600160e01b031983161462000867565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b55813362001cc0565b6000620013976200135b565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620013ce91906200283c565b6040516020818303038152906040528051906020012090506000620013f262001519565b9050600062001402828462001cfd565b905080620014275783604051633dad0df560e11b8152600401620008d89190620025fe565b6000838152600283016020526040902062001443858262002900565b508282600301856040516200145991906200283c565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200149e929190620029cc565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620014dd62001945565b90506000620014ed858562001d0b565b9050801562000dee57600085815260208390526040902062001510908562001db4565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001267838362001dcb565b6000806200155862001945565b9050600062001568858562001de3565b9050801562000dee57600085815260208390526040902062001510908562001e61565b6200159562001e78565b6000620015a1620017b7565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620015dd91906200247c565b60405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806200167257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200166660008051602062002ef3833981519152546001600160a01b031690565b6001600160a01b031614155b15620016915760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002ed383398151915262000965816200137f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200170b575060408051601f3d908101601f191682019092526200170891810190620029f0565b60015b6200172d5781604051634c9c8ce360e01b8152600401620008d891906200247c565b60008051602062002ef383398151915281146200176157604051632a87526960e21b815260048101829052602401620008d8565b62000b14838362001ea0565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016915760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620017f091906200283c565b60405160208183030381529060405280519060200120905060006200181462001519565b9050600062001824828462001efd565b905080620018455760405163162e926760e11b815260040160405180910390fd5b600083815260028301602052604081206200186091620023e8565b81600301846040516200187491906200283c565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200149e929190620029cc565b6000620018c56200135b565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620012678362001f0b565b6200190362001a44565b60006200190f620017b7565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620015ce3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001267838362001f69565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019a562001f96565b6200169162001fbe565b6200169162001f96565b6000620019c56200135b565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000867825490565b600062001a016200135b565b6003019190915550565b600062001a1762001fdf565b80549091506001190162001a3e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a4e62000c9c565b15620016915760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001a9b578260405163715397cd60e11b8152600401620008d891906200247c565b600062001aa762001227565b90508034101562001ad5576040516353f01c6360e11b815260048101829052346024820152604401620008d8565b600062001ae162000fec565b9050806001600160a01b03163b60000362001b1357806040516337766f4360e11b8152600401620008d891906200247c565b600062001b1f62000b79565b9050806001600160a01b03163b60000362001b51578060405163c9c10a6160e01b8152600401620008d891906200247c565b60008260405162001b629062002427565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001b9e573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c0457600080fd5b505af115801562001c19573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c3e925083915062002003565b62001c5960008051602062002f5383398151915282620014d0565b5062001c6f6001600160a01b0382163462002066565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cb962001fdf565b6001905550565b62001ccc828262000df6565b620009655760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008d8565b600062001267838362002103565b60008062001d18620014ac565b905062001d26848462000df6565b62001da9576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d5e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000867565b600091505062000867565b600062001267836001600160a01b03841662002103565b60009081526001919091016020526040902054151590565b60008062001df0620014ac565b905062001dfe848462000df6565b1562001da9576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000867565b600062001267836001600160a01b03841662002152565b62001e8262000c9c565b6200169157604051638dfc202b60e01b815260040160405180910390fd5b62001eab826200224b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001ef35762000b148282620022ab565b6200096562002327565b600062001267838362002152565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f5d57602002820191906000526020600020905b81548152602001906001019080831162001f48575b50505050509050919050565b600082600001828154811062001f835762001f8362002896565b9060005260206000200154905092915050565b62001fa062002347565b6200169157604051631afcd79f60e31b815260040160405180910390fd5b62001fc862001f96565b600062001fd4620017b7565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200200f6200135b565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b804710156200208c573060405163cd78605960e01b8152600401620008d891906200247c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620020db576040519150601f19603f3d011682016040523d82523d6000602084013e620020e0565b606091505b505090508062000b1457604051630a12f52160e11b815260040160405180910390fd5b600062002111838362001dcb565b620021495750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000867565b50600062000867565b6000818152600183016020526040812054801562001da95760006200217960018362002a0a565b85549091506000906200218f9060019062002a0a565b9050808214620021fb576000866000018281548110620021b357620021b362002896565b9060005260206000200154905080876000018481548110620021d957620021d962002896565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200220f576200220f62002a2c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000867565b806001600160a01b03163b6000036200227b5780604051634c9c8ce360e01b8152600401620008d891906200247c565b60008051602062002ef383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620022ca91906200283c565b600060405180830381855af49150503d806000811462002307576040519150601f19603f3d011682016040523d82523d6000602084013e6200230c565b606091505b50915091506200231e85838362002363565b95945050505050565b3415620016915760405163b398979f60e01b815260040160405180910390fd5b60006200235362001977565b54600160401b900460ff16919050565b6060826200237c576200237682620023be565b62001267565b81511580156200239457506001600160a01b0384163b155b15620023b75783604051639996b31560e01b8152600401620008d891906200247c565b5092915050565b805115620023cf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054620023f6906200285a565b6000825580601f1062002407575050565b601f01602090049060005260206000209081019062000b55919062002435565b6104108062002a4383390190565b5b808211156200244c576000815560010162002436565b5090565b6000602082840312156200246357600080fd5b81356001600160e01b0319811681146200126757600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024a857600080fd5b919050565b600060208284031215620024c057600080fd5b620012678262002490565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115620024fe57620024fe620024cb565b604051601f8501601f19908116603f01168101908282118183101715620025295762002529620024cb565b816040528093508581528686860111156200254357600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156200257057600080fd5b81356001600160401b038111156200258757600080fd5b8201601f810184136200259957600080fd5b62000dee84823560208401620024e1565b60005b83811015620025c7578181015183820152602001620025ad565b50506000910152565b60008151808452620025ea816020860160208601620025aa565b601f01601f19169290920160200192915050565b602081526000620012676020830184620025d0565b6000602082840312156200262657600080fd5b5035919050565b600080604083850312156200264157600080fd5b82359150620026536020840162002490565b90509250929050565b600080604083850312156200267057600080fd5b6200267b8362002490565b915060208301356001600160401b038111156200269757600080fd5b8301601f81018513620026a957600080fd5b620026ba85823560208401620024e1565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620026fe57835183529284019291840191600101620026e0565b50909695505050505050565b600080604083850312156200271e57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200274757600080fd5b620027528762002490565b9550620027626020880162002490565b9450620027726040880162002490565b9350620027826060880162002490565b9250620027926080880162002490565b915060a087013590509295509295509295565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200280057603f19888603018452620027ed858351620025d0565b94509285019290850190600101620027ce565b5092979650505050505050565b600080604083850312156200282157600080fd5b6200282c8362002490565b9150620026536020840162002490565b6000825162002850818460208701620025aa565b9190910192915050565b600181811c908216806200286f57607f821691505b6020821081036200289057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b14576000816000526020600020601f850160051c81016020861015620028d75750805b601f850160051c820191505b81811015620028f857828155600101620028e3565b505050505050565b81516001600160401b038111156200291c576200291c620024cb565b62002934816200292d84546200285a565b84620028ac565b602080601f8311600181146200296c5760008415620029535750858301515b600019600386901b1c1916600185901b178555620028f8565b600085815260208120601f198616915b828110156200299d578886015182559484019460019091019084016200297c565b5085821015620029bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000620029e16040830185620025d0565b90508260208301529392505050565b60006020828403121562002a0357600080fd5b5051919050565b818103818111156200086757634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa2646970667358221220a8c4fc74c011b6d62344fbd5064132d54f21b9e6ba377c4522ffd3f18fb4e93d64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x224 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x229 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x261 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x297 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2BE JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2E5 JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x341 JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x366 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x38B JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x3B0 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x3D5 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3FA JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x41F JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x444 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x45C JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x474 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x499 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x4BE JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x4D5 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4ED JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x505 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x52A JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x542 JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x567 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x58C JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x5B1 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5D8 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5F0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x615 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x63A JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x65F JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x684 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x69C JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6B3 JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6E6 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x70B JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x730 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x757 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x76F JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x794 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7B9 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7DE JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x803 JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x828 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x280 CALLDATASIZE PUSH1 0x4 PUSH3 0x2450 JUMP JUMPDEST PUSH3 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x258 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x86D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x2DD CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x88D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x304 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0x93F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x2B19 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x25FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x360 CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x385 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x99B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x3AA CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x9CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x3CF CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x9EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x3F4 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xA27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x419 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0xA4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x43E CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xB30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F33 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E93 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2E3 PUSH3 0x4CF CALLDATASIZE PUSH1 0x4 PUSH3 0x265C JUMP JUMPDEST PUSH3 0xB58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xB79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x332 PUSH3 0x524 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0xBB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0xC9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x561 CALLDATASIZE PUSH1 0x4 PUSH3 0x255D JUMP JUMPDEST PUSH3 0xCB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x586 CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0xCD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5C9 PUSH3 0xD7E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x26C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xD9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x60F CALLDATASIZE PUSH1 0x4 PUSH3 0x270A JUMP JUMPDEST PUSH3 0xDC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x634 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0xDF6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x67E CALLDATASIZE PUSH1 0x4 PUSH3 0x272D JUMP JUMPDEST PUSH3 0xE2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xFEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x332 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x72A CALLDATASIZE PUSH1 0x4 PUSH3 0x24AD JUMP JUMPDEST PUSH3 0x1009 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x748 PUSH3 0x10B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x27A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x77C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x78E CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x123E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x7B3 CALLDATASIZE PUSH1 0x4 PUSH3 0x262D JUMP JUMPDEST PUSH3 0x126E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x822 CALLDATASIZE PUSH1 0x4 PUSH3 0x2613 JUMP JUMPDEST PUSH3 0x1290 JUMP JUMPDEST PUSH3 0x2AF PUSH3 0x839 CALLDATASIZE PUSH1 0x4 PUSH3 0x280D JUMP JUMPDEST PUSH3 0x12F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x867 JUMPI POP PUSH3 0x867 DUP3 PUSH3 0x1324 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x87A PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8A8 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8E1 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8ED PUSH3 0xFEC JUMP JUMPDEST SWAP1 POP PUSH3 0x8FA DUP4 PUSH3 0x138B JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x95A DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0x965 DUP3 PUSH3 0x13B9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x976 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9B6 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x9C2 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9DA PUSH3 0x14AC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9FC PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA32 DUP3 PUSH3 0x9CD JUMP JUMPDEST PUSH3 0xA3D DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xA49 DUP4 DUP4 PUSH3 0x14D0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA5C PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xA95 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA75 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x153D JUMP JUMPDEST PUSH3 0xAB3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xAC7 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB14 DUP3 DUP3 PUSH3 0x154B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB26 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB4B DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xB55 PUSH3 0x158B JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB62 PUSH3 0x15E8 JUMP JUMPDEST PUSH3 0xB6D DUP3 PUSH3 0x1693 JUMP JUMPDEST PUSH3 0x965 DUP3 DUP3 PUSH3 0x16AE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB86 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBA5 PUSH3 0x176D JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xBC7 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xBD5 DUP2 DUP5 PUSH3 0x153D JUMP JUMPDEST PUSH3 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC10 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC3E SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC8F JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC63 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC8F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC71 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCA9 PUSH3 0x17B7 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E73 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCCE DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0x965 DUP3 PUSH3 0x17DB JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F33 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCF4 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD20 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD2C PUSH3 0x86D JUMP JUMPDEST SWAP1 POP PUSH3 0xD39 DUP4 PUSH3 0x18B9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD8C PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH3 0xD99 DUP2 PUSH3 0x18EA JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDBA DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xB55 PUSH3 0x18F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDD1 PUSH3 0x1945 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDEE SWAP1 DUP5 PUSH3 0x1969 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE03 PUSH3 0x14AC JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE3A PUSH3 0x1977 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE62 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE7F JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE8E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEAD JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xED7 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEE1 PUSH3 0x199B JUMP JUMPDEST PUSH3 0xEEB PUSH3 0x19AF JUMP JUMPDEST PUSH3 0xEF5 PUSH3 0x19AF JUMP JUMPDEST PUSH3 0xF02 PUSH1 0x0 DUP13 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF1E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F13 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF3A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0xF56 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF63 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFDF JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xFF9 PUSH3 0x135B JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EB3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1024 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1054 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1060 PUSH3 0xB79 JUMP JUMPDEST SWAP1 POP PUSH3 0x106D DUP4 PUSH3 0x19B9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x10C0 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x10CF DUP3 PUSH3 0x18EA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x10EF JUMPI PUSH3 0x10EF PUSH3 0x24CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1124 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x110E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x121F JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x114F JUMPI PUSH3 0x114F PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x1172 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x11A0 SWAP1 PUSH3 0x285A JUMP JUMPDEST DUP1 ISZERO PUSH3 0x11F1 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x11C5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x11F1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x11D3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x120B JUMPI PUSH3 0x120B PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x112A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1234 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x124B PUSH3 0x1945 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1267 SWAP1 PUSH3 0x19EA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x1279 DUP3 PUSH3 0x9CD JUMP JUMPDEST PUSH3 0x1284 DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH3 0xA49 DUP4 DUP4 PUSH3 0x154B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2E93 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x12AB DUP2 PUSH3 0x137F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12B7 PUSH3 0xB19 JUMP JUMPDEST SWAP1 POP PUSH3 0x12C4 DUP4 PUSH3 0x19F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1302 PUSH3 0x1A0B JUMP JUMPDEST PUSH3 0x130C PUSH3 0x1A44 JUMP JUMPDEST PUSH3 0x1318 DUP4 DUP4 PUSH3 0x1A6D JUMP JUMPDEST SWAP1 POP PUSH3 0x867 PUSH3 0x1CAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x867 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x867 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB55 DUP2 CALLER PUSH3 0x1CC0 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1397 PUSH3 0x135B JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x13CE SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x13F2 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1402 DUP3 DUP5 PUSH3 0x1CFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1427 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x25FE JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1443 DUP6 DUP3 PUSH3 0x2900 JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x1459 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x149E SWAP3 SWAP2 SWAP1 PUSH3 0x29CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x14DD PUSH3 0x1945 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x14ED DUP6 DUP6 PUSH3 0x1D0B JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1510 SWAP1 DUP6 PUSH3 0x1DB4 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x1DCB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1558 PUSH3 0x1945 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1568 DUP6 DUP6 PUSH3 0x1DE3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDEE JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1510 SWAP1 DUP6 PUSH3 0x1E61 JUMP JUMPDEST PUSH3 0x1595 PUSH3 0x1E78 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15A1 PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x15DD SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x1672 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1666 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x965 DUP2 PUSH3 0x137F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x170B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x1708 SWAP2 DUP2 ADD SWAP1 PUSH3 0x29F0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x172D JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x1761 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH3 0xB14 DUP4 DUP4 PUSH3 0x1EA0 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17F0 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1814 PUSH3 0x1519 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1824 DUP3 DUP5 PUSH3 0x1EFD JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1845 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x1860 SWAP2 PUSH3 0x23E8 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x1874 SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x149E SWAP3 SWAP2 SWAP1 PUSH3 0x29CC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18C5 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH3 0x1F0B JUMP JUMPDEST PUSH3 0x1903 PUSH3 0x1A44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x190F PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x15CE CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x1F69 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x19A5 PUSH3 0x1F96 JUMP JUMPDEST PUSH3 0x1691 PUSH3 0x1FBE JUMP JUMPDEST PUSH3 0x1691 PUSH3 0x1F96 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19C5 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x867 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A01 PUSH3 0x135B JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A17 PUSH3 0x1FDF JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A4E PUSH3 0xC9C JUMP JUMPDEST ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1A9B JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AA7 PUSH3 0x1227 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1AD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AE1 PUSH3 0xFEC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B13 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B1F PUSH3 0xB79 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B51 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B62 SWAP1 PUSH3 0x2427 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1B9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C3E SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2003 JUMP JUMPDEST PUSH3 0x1C59 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F53 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x14D0 JUMP JUMPDEST POP PUSH3 0x1C6F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x2066 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1CB9 PUSH3 0x1FDF JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1CCC DUP3 DUP3 PUSH3 0xDF6 JUMP JUMPDEST PUSH3 0x965 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8D8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x2103 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D18 PUSH3 0x14AC JUMP JUMPDEST SWAP1 POP PUSH3 0x1D26 DUP5 DUP5 PUSH3 0xDF6 JUMP JUMPDEST PUSH3 0x1DA9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D5E CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2103 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1DF0 PUSH3 0x14AC JUMP JUMPDEST SWAP1 POP PUSH3 0x1DFE DUP5 DUP5 PUSH3 0xDF6 JUMP JUMPDEST ISZERO PUSH3 0x1DA9 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2152 JUMP JUMPDEST PUSH3 0x1E82 PUSH3 0xC9C JUMP JUMPDEST PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1EAB DUP3 PUSH3 0x224B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1EF3 JUMPI PUSH3 0xB14 DUP3 DUP3 PUSH3 0x22AB JUMP JUMPDEST PUSH3 0x965 PUSH3 0x2327 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1267 DUP4 DUP4 PUSH3 0x2152 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F5D JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F48 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1F83 JUMPI PUSH3 0x1F83 PUSH3 0x2896 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1FA0 PUSH3 0x2347 JUMP JUMPDEST PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1FC8 PUSH3 0x1F96 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FD4 PUSH3 0x17B7 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x200F PUSH3 0x135B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x208C JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x20DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x20E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2111 DUP4 DUP4 PUSH3 0x1DCB JUMP JUMPDEST PUSH3 0x2149 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x867 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x867 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1DA9 JUMPI PUSH1 0x0 PUSH3 0x2179 PUSH1 0x1 DUP4 PUSH3 0x2A0A JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x218F SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x21FB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x21B3 JUMPI PUSH3 0x21B3 PUSH3 0x2896 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x21D9 JUMPI PUSH3 0x21D9 PUSH3 0x2896 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x220F JUMPI PUSH3 0x220F PUSH3 0x2A2C JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x867 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x227B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x22CA SWAP2 SWAP1 PUSH3 0x283C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2307 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x230C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x231E DUP6 DUP4 DUP4 PUSH3 0x2363 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x1691 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2353 PUSH3 0x1977 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x237C JUMPI PUSH3 0x2376 DUP3 PUSH3 0x23BE JUMP JUMPDEST PUSH3 0x1267 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2394 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x23B7 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8D8 SWAP2 SWAP1 PUSH3 0x247C JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x23CF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x23F6 SWAP1 PUSH3 0x285A JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x2407 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB55 SWAP2 SWAP1 PUSH3 0x2435 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2A43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x244C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2436 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1267 DUP3 PUSH3 0x2490 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x24FE JUMPI PUSH3 0x24FE PUSH3 0x24CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x2529 JUMPI PUSH3 0x2529 PUSH3 0x24CB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x2543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2587 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x2599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDEE DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24E1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x25C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x25AD JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x25EA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x25AA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1267 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x25D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x2653 PUSH1 0x20 DUP5 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x267B DUP4 PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2697 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x26A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x26BA DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x24E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x26FE JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x26E0 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2752 DUP8 PUSH3 0x2490 JUMP JUMPDEST SWAP6 POP PUSH3 0x2762 PUSH1 0x20 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP5 POP PUSH3 0x2772 PUSH1 0x40 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP4 POP PUSH3 0x2782 PUSH1 0x60 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP3 POP PUSH3 0x2792 PUSH1 0x80 DUP9 ADD PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2800 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x27ED DUP6 DUP4 MLOAD PUSH3 0x25D0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x27CE JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x282C DUP4 PUSH3 0x2490 JUMP JUMPDEST SWAP2 POP PUSH3 0x2653 PUSH1 0x20 DUP5 ADD PUSH3 0x2490 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x2850 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x25AA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x286F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2890 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB14 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x28D7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x28F8 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28E3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x291C JUMPI PUSH3 0x291C PUSH3 0x24CB JUMP JUMPDEST PUSH3 0x2934 DUP2 PUSH3 0x292D DUP5 SLOAD PUSH3 0x285A JUMP JUMPDEST DUP5 PUSH3 0x28AC JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x296C JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2953 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x28F8 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x299D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x297C JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x29BC JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x29E1 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x25D0 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2A03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x867 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C6343000818003330F3325E23B502DCE693B1 SELFBALANCE 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xC4 0xFC PUSH21 0xC011B6D62344FBD5064132D54F21B9E6BA377C4522 SELFDESTRUCT 0xD3 CALL DUP16 0xB4 0xE9 RETURNDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "236:142:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4047:76:47;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4047:76:47;;;;;160:25:55;;;148:2;133:18;4047:76:47;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;652:14:55;;645:22;627:41;;615:2;600:18;1695:212:1;487:187:55;17651:193:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15062:432::-;;;;;;;;;;-1:-1:-1;15062:432:47;;;;;:::i;:::-;;:::i;:::-;;19845:147;;;;;;;;;;-1:-1:-1;19845:147:47;;;;;:::i;:::-;;:::i;290:86:49:-;;;;;;;;;;-1:-1:-1;358:11:49;;;;;;;;;;;;-1:-1:-1;;;358:11:49;;;;290:86;;;;;;;:::i;14266:201:47:-;;;;;;;;;;-1:-1:-1;14266:201:47;;;;;:::i;:::-;;:::i;16186:215::-;;;;;;;;;;-1:-1:-1;16186:215:47;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;13913:208:47:-;;;;;;;;;;-1:-1:-1;13913:208:47;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;5423:426:51:-;;;;;;;;;;-1:-1:-1;5423:426:51;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;18584:190:47:-;;;;;;;;;;;;;:::i;10893:75::-;;;;;;;;;;;;;:::i;3825:94::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3825:94:47;;3603:68;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3603:68:47;;4158:214:3;;;;;;:::i;:::-;;:::i;16646:178:47:-;;;;;;;;;;;;;:::i;3705:134:3:-;;;;;;;;;;;;;:::i;4894:396:51:-;;;;;;;;;;-1:-1:-1;4894:396:51;;;;;:::i;:::-;;:::i;2692:145:8:-;;;;;;;;;;;;;:::i;20185:151:47:-;;;;;;;;;;-1:-1:-1;20185:151:47;;;;;:::i;:::-;;:::i;17912:400::-;;;;;;;;;;-1:-1:-1;17912:400:47;;;;;:::i;:::-;;:::i;4542:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4542:68:47;;5990:213:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10745:71:47:-;;;;;;;;;;;;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;4300:94:47:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4300:94:47;;9591:975;;;;;;;;;;-1:-1:-1;9591:975:47;;;;;:::i;:::-;;:::i;14723:195::-;;;;;;;;;;;;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;1819:58:3;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;3353:68:47;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3353:68:47;;16889:340;;;;;;;;;;-1:-1:-1;16889:340:47;;;;;:::i;:::-;;:::i;6342:592:51:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15951:173:47:-;;;;;;;;;;;;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;2721:62:47:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2721:62:47;;2885:66;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2885:66:47;;19057:202;;;;;;;;;;-1:-1:-1;19057:202:47;;;;;:::i;:::-;;:::i;11738:199::-;;;;;;:::i;:::-;;:::i;1695:212:1:-;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;17651:193:47:-;17702:23;17737:33;17773:29;:27;:29::i;:::-;17819:18;;;-1:-1:-1;;;;;17819:18:47;;17651:193;-1:-1:-1;;17651:193:47:o;15062:432::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15169:17:47::1;-1:-1:-1::0;;;;;15169:29:47::1;;15202:1;15169:34:::0;15165:121:::1;;15257:17;15226:49;;-1:-1:-1::0;;;15226:49:47::1;;;;;;;;:::i;:::-;;;;;;;;15165:121;15296:25;15324:26;:24;:26::i;:::-;15296:54;;15360:44;15386:17;15360:25;:44::i;:::-;15469:17;-1:-1:-1::0;;;;;15419:68:47::1;15450:17;-1:-1:-1::0;;;;;15419:68:47::1;;;;;;;;;;;15155:339;15062:432:::0;;:::o;19845:147::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19952:33:47::1;19973:11;19952:20;:33::i;:::-;19845:147:::0;;:::o;14266:201::-;14325:4;14341:33;14377:29;:27;:29::i;:::-;-1:-1:-1;;;;;14423:25:47;;;;;;;:16;;;;:25;;-1:-1:-1;;14423:25:47;;;:37;;;;14266:201::o;16186:215::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16284:33:47::1;16320:29;:27;:29::i;:::-;16359:16;;:35:::0;;;;-1:-1:-1;;16186:215:47:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;13913:208:47:-;13980:7;13999:33;14035:29;:27;:29::i;:::-;-1:-1:-1;;;;;14081:25:47;;;;;;;:16;;;;:25;;;;;:33;;;;;;;;13913:208;-1:-1:-1;;13913:208:47:o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;5423:426:51:-;5511:19;5542:32;5577:28;:26;:28::i;:::-;5542:63;;5667:69;5722:11;5705:29;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5705:29:51;;;;;;;;;5695:40;;5705:29;5695:40;;;;5667:1;;:27;:69::i;:::-;5662:130;;5759:22;;-1:-1:-1;;;5759:22:51;;;;;;;;;;;5662:130;5809:1;:20;;5830:11;5809:33;;;;;;:::i;:::-;;;;;;;;;;;;;;5802:40;;;5423:426;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;18584:190:47:-;18634:22;18668:33;18704:29;:27;:29::i;:::-;18750:17;;;;18584:190;-1:-1:-1;;18584:190:47:o;10893:75::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10951:10:47::1;:8;:10::i;:::-;10893:75:::0;:::o;4158:214:3:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;16646:178:47:-:0;16701:7;16720:33;16756:29;:27;:29::i;:::-;16802:15;;;-1:-1:-1;;;;;16802:15:47;;16646:178;-1:-1:-1;;16646:178:47:o;3705:134:3:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:3;:::o;4894:396:51:-;4976:25;5013:32;5048:28;:26;:28::i;:::-;5013:63;-1:-1:-1;5138:40:51;5013:63;5166:11;5138:27;:40::i;:::-;5133:101;;5201:22;;-1:-1:-1;;;5201:22:51;;;;;;;;;;;5133:101;5250:33;;;;:20;;;:33;;;;;5243:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4894:396;;;:::o;2692:145:8:-;2739:4;2755:25;2783:21;:19;:21::i;:::-;2821:9;;;;2692:145;-1:-1:-1;;2692:145:8:o;20185:151:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20294:35:47::1;20317:11;20294:22;:35::i;17912:400::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;18024:29:47;::::1;18020:106;;18099:15;18076:39;;-1:-1:-1::0;;;18076:39:47::1;;;;;;;;:::i;18020:106::-;18136:26;18165:20;:18;:20::i;:::-;18136:49;;18195:36;18215:15;18195:19;:36::i;:::-;18289:15;-1:-1:-1::0;;;;;18246:59:47::1;18269:18;-1:-1:-1::0;;;;;18246:59:47::1;;;;;;;;;;;18010:302;17912:400:::0;;:::o;5990:213:51:-;6052:25;6089:32;6124:28;:26;:28::i;:::-;6089:63;-1:-1:-1;6169:27:51;6089:63;6169:25;:27::i;:::-;6162:34;;;5990:213;:::o;10745:71:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10801:8:47::1;:6;:8::i;2492:233:1:-:0;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;9591:975:47:-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;10033:17:47::1;:15;:17::i;:::-;10060:22;:20;:22::i;:::-;10092:24;:22;:24::i;:::-;10127:44;2362:4:0;10158:12:47::0;10127:10:::1;:44::i;:::-;;10181:31;-1:-1:-1::0;;;;;;;;;;;10205:6:47::1;10181:10;:31::i;:::-;;10222:35;-1:-1:-1::0;;;;;;;;;;;10248:8:47::1;10222:10;:35::i;:::-;;10267:37;-1:-1:-1::0;;;;;;;;;;;10294:9:47::1;10267:10;:37::i;:::-;;10315:33;10351:29;:27;:29::i;:::-;10391:18;::::0;::::1;:36:::0;;-1:-1:-1;;;;;;10391:36:47::1;-1:-1:-1::0;;;;;10391:36:47;::::1;;::::0;;10437:17:::1;::::0;::::1;:34:::0;;;10550:9:::1;-1:-1:-1::0;10531:16:47;;::::1;:28:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;7930:50:55;;5142:14:2;;7918:2:55;7903:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;9591:975:47;;;;;;:::o;14723:195::-;14780:7;14799:33;14835:29;:27;:29::i;:::-;14881:30;-1:-1:-1;;;;;14881:30:47;;14723:195;-1:-1:-1;;14723:195:47:o;16889:340::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16982:5:47::1;-1:-1:-1::0;;;;;16982:17:47::1;;17003:1;16982:22:::0;16978:93:::1;;17054:5;17027:33;;-1:-1:-1::0;;;17027:33:47::1;;;;;;;;:::i;16978:93::-;17081:16;17100:24;:22;:24::i;:::-;17081:43;;17134:30;17158:5;17134:23;:30::i;:::-;17216:5;-1:-1:-1::0;;;;;17179:43:47::1;17206:8;-1:-1:-1::0;;;;;17179:43:47::1;;;;;;;;;;;16968:261;16889:340:::0;;:::o;6342:592:51:-;6403:24;6439:32;6474:28;:26;:28::i;:::-;6439:63;-1:-1:-1;6580:30:51;6613:27;6439:63;6613:25;:27::i;:::-;6580:60;;6650:28;6694:13;:20;-1:-1:-1;;;;;6681:34:51;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:65;;6771:9;6766:132;6790:13;:20;6786:1;:24;6766:132;;;6849:1;:20;;:38;6870:13;6884:1;6870:16;;;;;;;;:::i;:::-;;;;;;;6849:38;;;;;;;;;;;6831:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;6844:1;6831:15;;;;;;;;:::i;:::-;;;;;;;;;;:56;6812:3;;6766:132;;;-1:-1:-1;6915:12:51;6342:592;-1:-1:-1;;;6342:592:51:o;15951:173:47:-;16000:7;16019:33;16055:29;:27;:29::i;:::-;16101:16;;;;15951:173;-1:-1:-1;;15951:173:47:o;2893:222:1:-;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;:::-;3072:36;2893:222;-1:-1:-1;;;2893:222:1:o;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;19057:202:47:-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19138:13:47::1;19154:19;:17;:19::i;:::-;19138:35;;19183:22;19202:2;19183:18;:22::i;:::-;19220:32;::::0;19249:2;;19242:5;;19220:32:::1;::::0;;;::::1;19128:131;19057:202:::0;;:::o;11738:199::-;11871:7;3251:21:9;:19;:21::i;:::-;2316:19:8::1;:17;:19::i;:::-;11897:33:47::2;11914:5;11921:8;11897:16;:33::i;:::-;11890:40;;3293:20:9::0;:18;:20::i;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1133:40:10;;;3602:36:0;1034:146:10;6470:186:47;6609:31;;6470:186::o;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;15500:213:47:-;15581:33;15617:29;:27;:29::i;:::-;15656:50;;-1:-1:-1;;;;;;15656:50:47;-1:-1:-1;;;;;15656:50:47;;;;;;;;;;;-1:-1:-1;15500:213:47:o;3358:601:51:-;3442:19;3491:11;3474:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;3464:40;;;;;;3442:62;;3515:32;3550:28;:26;:28::i;:::-;3515:63;-1:-1:-1;3639:10:51;3652:35;3515:63;3675:11;3652:22;:35::i;:::-;3639:48;;3703:5;3698:81;;3756:11;3731:37;;-1:-1:-1;;;3731:37:51;;;;;;;;:::i;3698:81::-;3789:33;;;;:20;;;:33;;;;;:47;3825:11;3789:33;:47;:::i;:::-;;3882:11;3846:1;:20;;3867:11;3846:33;;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;3909:43;3927:11;3940;3909:43;;;;;;;:::i;:::-;;;;;;;;3432:527;;;3358:601;:::o;2787:177:0:-;2920:28;;2787:177::o;3217:348:1:-;3303:4;3319:40;3362:36;:34;:36::i;:::-;3319:79;;3408:12;3423:31;3440:4;3446:7;3423:16;:31::i;:::-;3408:46;;3468:7;3464:71;;;3491:14;:20;;;;;;;;;;:33;;3516:7;3491:24;:33::i;:::-;;3551:7;3217:348;-1:-1:-1;;;;3217:348:1:o;1474:183:51:-;1611:30;;1474:183::o;6431:138:39:-;6511:4;6534:28;6544:3;6556:5;6534:9;:28::i;3668:353:1:-;3755:4;3771:40;3814:36;:34;:36::i;:::-;3771:79;;3860:12;3875:32;3893:4;3899:7;3875:17;:32::i;:::-;3860:47;;3921:7;3917:74;;;3944:14;:20;;;;;;;;;;:36;;3972:7;3944:27;:36::i;3674:178:8:-;2563:16;:14;:16::i;:::-;3732:25:::1;3760:21;:19;:21::i;:::-;3791:17:::0;;-1:-1:-1;;3791:17:8::1;::::0;;;-1:-1:-1;3823:22:8::1;966:10:7::0;3832:12:8::1;3823:22;;;;;;:::i;:::-;;;;;;;;3722:130;3674:178::o:0;4599:312:3:-;4679:4;-1:-1:-1;;;;;4688:6:3;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:3;:32;-1:-1:-1;;;;;;;;;;;2035:53:19;-1:-1:-1;;;;;2035:53:19;;1957:138;4749:32:3;-1:-1:-1;;;;;4749:42:3;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:3;;;;;;;;;;;4654:251;4599:312::o;11062:98:47:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6052:538:3:-;6169:17;-1:-1:-1;;;;;6151:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:3;;;;;;;;-1:-1:-1;;6151:52:3;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:3;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:3;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:3;;;;;160:25:55;;;133:18;;6312:34:3;14:177:55;6241:120:3;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:3;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:3;;;;;;;;;;;1147:162:8;1270:23;;1147:162::o;4175:586:51:-;4261:19;4310:11;4293:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;4283:40;;;;;;4261:62;;4334:32;4369:28;:26;:28::i;:::-;4334:63;-1:-1:-1;4461:12:51;4476:38;4334:63;4502:11;4476:25;:38::i;:::-;4461:53;;4530:7;4525:68;;4560:22;;-1:-1:-1;;;4560:22:51;;;;;;;;;;;4525:68;4610:33;;;;:20;;;:33;;;;;4603:40;;;:::i;:::-;4660:1;:20;;4681:11;4660:33;;;;;;:::i;:::-;;;;;;;;;;;;;4653:40;;;4709:45;4729:11;4742;4709:45;;;;;;;:::i;18318:190:47:-;18390:33;18426:29;:27;:29::i;:::-;18465:18;;:36;;-1:-1:-1;;;;;;18465:36:47;-1:-1:-1;;;;;18465:36:47;;;;;;;;;;;-1:-1:-1;18318:190:47:o;7776:300:39:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;3366:176:8:-;2316:19;:17;:19::i;:::-;3425:25:::1;3453:21;:19;:21::i;:::-;3484:16:::0;;-1:-1:-1;;3484:16:8::1;3496:4;3484:16;::::0;;3425:49;-1:-1:-1;3515:20:8::1;3522:12;966:10:7::0;;887:96;1250:207:1;1403:38;;1250:207::o;9574:156:39:-;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;8737:170:2:-;8870:21;;8737:170::o;1836:97:8:-;6931:20:2;:18;:20::i;:::-;1899:27:8::1;:25;:27::i;3231:65:0:-:0;6931:20:2;:18;:20::i;17235:172:47:-;17302:33;17338:29;:27;:29::i;:::-;17377:15;;:23;;-1:-1:-1;;;;;;17377:23:47;-1:-1:-1;;;;;17377:23:47;;;;;;;;;;;-1:-1:-1;17235:172:47:o;9117:115:39:-;9180:7;9206:19;9214:3;4556:18;;4474:107;19265:162:47;19323:33;19359:29;:27;:29::i;:::-;19398:17;;:22;;;;-1:-1:-1;19265:162:47:o;3326:384:9:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:9;3522:88;;3569:30;;-1:-1:-1;;;3569:30:9;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;2905:128:8:-;2970:8;:6;:8::i;:::-;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:8;;;;;;;;;;;12016:1571:47;12092:7;-1:-1:-1;;;;;12133:19:47;;12129:85;;12197:5;12175:28;;-1:-1:-1;;;12175:28:47;;;;;;;;:::i;12129:85::-;12224:21;12248:18;:16;:18::i;:::-;12224:42;;12326:13;12314:9;:25;12310:111;;;12362:48;;-1:-1:-1;;;12362:48:47;;;;;10977:25:55;;;12400:9:47;11018:18:55;;;11011:34;10950:18;;12362:48:47;10803:248:55;12310:111:47;12431:35;12469:26;:24;:26::i;:::-;12431:64;;12509:27;-1:-1:-1;;;;;12509:39:47;;12552:1;12509:44;12505:141;;12607:27;12576:59;;-1:-1:-1;;;12576:59:47;;;;;;;;:::i;12505:141::-;12656:20;12679:24;:22;:24::i;:::-;12656:47;;12717:12;-1:-1:-1;;;;;12717:24:47;;12745:1;12717:29;12713:107;;12796:12;12769:40;;-1:-1:-1;;;12769:40:47;;;;;;;;:::i;12713:107::-;12899:27;12946;12929:49;;;;;:::i;:::-;-1:-1:-1;;;;;11285:32:55;;;11267:51;;11354:2;11349;11334:18;;11327:30;;;-1:-1:-1;11373:18:55;;;11366:29;11427:2;11412:18;12929:49:47;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13025:107:47;;-1:-1:-1;;;13025:107:47;;13080:4;13025:107;;;11738:34:55;-1:-1:-1;;;;;11808:15:55;;;11788:18;;;11781:43;11840:18;;;11833:34;;;11903:15;;;11883:18;;;11876:43;11956:15;;;11935:19;;;11928:44;12899:79:47;;-1:-1:-1;13025:46:47;;;;;;11672:19:55;;13025:107:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13229:57:47;;;;;;;;;13258:4;13229:57;;13273:10;13229:57;;;;13186:101;;-1:-1:-1;13212:14:47;;-1:-1:-1;13186:17:47;:101::i;:::-;13330:51;-1:-1:-1;;;;;;;;;;;13365:14:47;13330:10;:51::i;:::-;-1:-1:-1;13438:44:47;-1:-1:-1;;;;;13438:33:47;;13472:9;13438:33;:44::i;:::-;13498:41;;-1:-1:-1;;;;;13498:41:47;;;;;;;;13565:14;12016:1571;-1:-1:-1;;;;;;12016:1571:47:o;3716:283:9:-;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:9:o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:0;;-1:-1:-1;;;;;12175:32:55;;4514:47:0;;;12157:51:55;12224:18;;;12217:34;;;12130:18;;4514:47:0;11983:274:55;5930:123:39;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8316:150:39;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:39;;8409:4;:50::i;4264:129::-;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8634:156:39;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:39;;8730:7;:53::i;3105:126:8:-;3168:8;:6;:8::i;:::-;3163:62;;3199:15;;-1:-1:-1;;;3199:15:8;;;;;;;;;;;2779:335:19;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:19;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;6221:129:39:-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;1939:156:8;6931:20:2;:18;:20::i;:::-;2012:25:8::1;2040:21;:19;:21::i;:::-;2071:17:::0;;-1:-1:-1;;2071:17:8::1;::::0;;-1:-1:-1;1939:156:8:o;2251:183:9:-;2388:30;;2251:183::o;13593:204:47:-;13683:33;13719:29;:27;:29::i;:::-;-1:-1:-1;;;;;13758:25:47;;;;;;;:16;;;;:25;;;;;;;;:32;;;;;;;;;;;;;;-1:-1:-1;;;;;;13758:32:47;;;;;;;-1:-1:-1;;;;;;13758:32:47;;;;;;;;;;;-1:-1:-1;13593:204:47:o;1531:331:31:-;1640:6;1616:21;:30;1612:109;;;1704:4;1669:41;;-1:-1:-1;;;1669:41:31;;;;;;;;:::i;1612:109::-;1732:12;1750:9;-1:-1:-1;;;;;1750:14:31;1772:6;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:52;;;1798:7;1793:63;;1828:17;;-1:-1:-1;;;1828:17:31;;;;;;;;;;;2241:406:39;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:39;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:39;2618:12;;2815:1368;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:39;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;2186:281:19;2263:17;-1:-1:-1;;;;;2263:29:19;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:19;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:19;;-1:-1:-1;;;;;;2387:73:19;-1:-1:-1;;;;;2387:73:19;;;;;;;;;;2186:281::o;4106:253:31:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:31;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:31:o;6598:122:19:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:19;;;;;;;;;;;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;4625:582:31:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:31;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:31;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:31;4625:582;-1:-1:-1;;4625:582:31:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:31;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;196:286:55:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:55;;391:43;;381:71;;448:1;445;438:12;679:203;-1:-1:-1;;;;;843:32:55;;;;825:51;;813:2;798:18;;679:203::o;887:173::-;955:20;;-1:-1:-1;;;;;1004:31:55;;994:42;;984:70;;1050:1;1047;1040:12;984:70;887:173;;;:::o;1065:186::-;1124:6;1177:2;1165:9;1156:7;1152:23;1148:32;1145:52;;;1193:1;1190;1183:12;1145:52;1216:29;1235:9;1216:29;:::i;1256:127::-;1317:10;1312:3;1308:20;1305:1;1298:31;1348:4;1345:1;1338:15;1372:4;1369:1;1362:15;1388:632;1453:5;-1:-1:-1;;;;;1513:14:55;;;1510:40;;;1530:18;;:::i;:::-;1605:2;1599:9;1573:2;1659:15;;-1:-1:-1;;1655:24:55;;;1681:2;1651:33;1647:42;1635:55;;;1705:18;;;1725:22;;;1702:46;1699:72;;;1751:18;;:::i;:::-;1791:10;1787:2;1780:22;1820:6;1811:15;;1850:6;1842;1835:22;1890:3;1881:6;1876:3;1872:16;1869:25;1866:45;;;1907:1;1904;1897:12;1866:45;1957:6;1952:3;1945:4;1937:6;1933:17;1920:44;2012:1;2005:4;1996:6;1988;1984:19;1980:30;1973:41;;;;1388:632;;;;;:::o;2025:451::-;2094:6;2147:2;2135:9;2126:7;2122:23;2118:32;2115:52;;;2163:1;2160;2153:12;2115:52;2190:23;;-1:-1:-1;;;;;2225:30:55;;2222:50;;;2268:1;2265;2258:12;2222:50;2291:22;;2344:4;2336:13;;2332:27;-1:-1:-1;2322:55:55;;2373:1;2370;2363:12;2322:55;2396:74;2462:7;2457:2;2444:16;2439:2;2435;2431:11;2396:74;:::i;2481:250::-;2566:1;2576:113;2590:6;2587:1;2584:13;2576:113;;;2666:11;;;2660:18;2647:11;;;2640:39;2612:2;2605:10;2576:113;;;-1:-1:-1;;2723:1:55;2705:16;;2698:27;2481:250::o;2736:271::-;2778:3;2816:5;2810:12;2843:6;2838:3;2831:19;2859:76;2928:6;2921:4;2916:3;2912:14;2905:4;2898:5;2894:16;2859:76;:::i;:::-;2989:2;2968:15;-1:-1:-1;;2964:29:55;2955:39;;;;2996:4;2951:50;;2736:271;-1:-1:-1;;2736:271:55:o;3012:220::-;3161:2;3150:9;3143:21;3124:4;3181:45;3222:2;3211:9;3207:18;3199:6;3181:45;:::i;3237:180::-;3296:6;3349:2;3337:9;3328:7;3324:23;3320:32;3317:52;;;3365:1;3362;3355:12;3317:52;-1:-1:-1;3388:23:55;;3237:180;-1:-1:-1;3237:180:55:o;3607:254::-;3675:6;3683;3736:2;3724:9;3715:7;3711:23;3707:32;3704:52;;;3752:1;3749;3742:12;3704:52;3788:9;3775:23;3765:33;;3817:38;3851:2;3840:9;3836:18;3817:38;:::i;:::-;3807:48;;3607:254;;;;;:::o;4048:524::-;4125:6;4133;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4225:29;4244:9;4225:29;:::i;:::-;4215:39;-1:-1:-1;4305:2:55;4290:18;;4277:32;-1:-1:-1;;;;;4321:30:55;;4318:50;;;4364:1;4361;4354:12;4318:50;4387:22;;4440:4;4432:13;;4428:27;-1:-1:-1;4418:55:55;;4469:1;4466;4459:12;4418:55;4492:74;4558:7;4553:2;4540:16;4535:2;4531;4527:11;4492:74;:::i;:::-;4482:84;;;4048:524;;;;;:::o;4577:632::-;4748:2;4800:21;;;4870:13;;4773:18;;;4892:22;;;4719:4;;4748:2;4971:15;;;;4945:2;4930:18;;;4719:4;5014:169;5028:6;5025:1;5022:13;5014:169;;;5089:13;;5077:26;;5158:15;;;;5123:12;;;;5050:1;5043:9;5014:169;;;-1:-1:-1;5200:3:55;;4577:632;-1:-1:-1;;;;;;4577:632:55:o;5214:248::-;5282:6;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;-1:-1:-1;;5382:23:55;;;5452:2;5437:18;;;5424:32;;-1:-1:-1;5214:248:55:o;5467:553::-;5571:6;5579;5587;5595;5603;5611;5664:3;5652:9;5643:7;5639:23;5635:33;5632:53;;;5681:1;5678;5671:12;5632:53;5704:29;5723:9;5704:29;:::i;:::-;5694:39;;5752:38;5786:2;5775:9;5771:18;5752:38;:::i;:::-;5742:48;;5809:38;5843:2;5832:9;5828:18;5809:38;:::i;:::-;5799:48;;5866:38;5900:2;5889:9;5885:18;5866:38;:::i;:::-;5856:48;;5923:39;5957:3;5946:9;5942:19;5923:39;:::i;:::-;5913:49;;6009:3;5998:9;5994:19;5981:33;5971:43;;5467:553;;;;;;;;:::o;6025:803::-;6187:4;6216:2;6256;6245:9;6241:18;6286:2;6275:9;6268:21;6309:6;6344;6338:13;6375:6;6367;6360:22;6413:2;6402:9;6398:18;6391:25;;6475:2;6465:6;6462:1;6458:14;6447:9;6443:30;6439:39;6425:53;;6513:2;6505:6;6501:15;6534:1;6544:255;6558:6;6555:1;6552:13;6544:255;;;6651:2;6647:7;6635:9;6627:6;6623:22;6619:36;6614:3;6607:49;6679:40;6712:6;6703;6697:13;6679:40;:::i;:::-;6669:50;-1:-1:-1;6777:12:55;;;;6742:15;;;;6580:1;6573:9;6544:255;;;-1:-1:-1;6816:6:55;;6025:803;-1:-1:-1;;;;;;;6025:803:55:o;6833:260::-;6901:6;6909;6962:2;6950:9;6941:7;6937:23;6933:32;6930:52;;;6978:1;6975;6968:12;6930:52;7001:29;7020:9;7001:29;:::i;:::-;6991:39;;7049:38;7083:2;7072:9;7068:18;7049:38;:::i;7098:289::-;7229:3;7267:6;7261:13;7283:66;7342:6;7337:3;7330:4;7322:6;7318:17;7283:66;:::i;:::-;7365:16;;;;;7098:289;-1:-1:-1;;7098:289:55:o;7392:380::-;7471:1;7467:12;;;;7514;;;7535:61;;7589:4;7581:6;7577:17;7567:27;;7535:61;7642:2;7634:6;7631:14;7611:18;7608:38;7605:161;;7688:10;7683:3;7679:20;7676:1;7669:31;7723:4;7720:1;7713:15;7751:4;7748:1;7741:15;7605:161;;7392:380;;;:::o;7991:127::-;8052:10;8047:3;8043:20;8040:1;8033:31;8083:4;8080:1;8073:15;8107:4;8104:1;8097:15;8249:543;8351:2;8346:3;8343:11;8340:446;;;8387:1;8411:5;8408:1;8401:16;8455:4;8452:1;8442:18;8525:2;8513:10;8509:19;8506:1;8502:27;8496:4;8492:38;8561:4;8549:10;8546:20;8543:47;;;-1:-1:-1;8584:4:55;8543:47;8639:2;8634:3;8630:12;8627:1;8623:20;8617:4;8613:31;8603:41;;8694:82;8712:2;8705:5;8702:13;8694:82;;;8757:17;;;8738:1;8727:13;8694:82;;;8698:3;;;8249:543;;;:::o;8968:1345::-;9088:10;;-1:-1:-1;;;;;9110:30:55;;9107:56;;;9143:18;;:::i;:::-;9172:97;9262:6;9222:38;9254:4;9248:11;9222:38;:::i;:::-;9216:4;9172:97;:::i;:::-;9324:4;;9381:2;9370:14;;9398:1;9393:663;;;;10100:1;10117:6;10114:89;;;-1:-1:-1;10169:19:55;;;10163:26;10114:89;-1:-1:-1;;8925:1:55;8921:11;;;8917:24;8913:29;8903:40;8949:1;8945:11;;;8900:57;10216:81;;9363:944;;9393:663;8196:1;8189:14;;;8233:4;8220:18;;-1:-1:-1;;9429:20:55;;;9547:236;9561:7;9558:1;9555:14;9547:236;;;9650:19;;;9644:26;9629:42;;9742:27;;;;9710:1;9698:14;;;;9577:19;;9547:236;;;9551:3;9811:6;9802:7;9799:19;9796:201;;;9872:19;;;9866:26;-1:-1:-1;;9955:1:55;9951:14;;;9967:3;9947:24;9943:37;9939:42;9924:58;9909:74;;9796:201;-1:-1:-1;;;;;10043:1:55;10027:14;;;10023:22;10010:36;;-1:-1:-1;8968:1345:55:o;10318:291::-;10495:2;10484:9;10477:21;10458:4;10515:45;10556:2;10545:9;10541:18;10533:6;10515:45;:::i;:::-;10507:53;;10596:6;10591:2;10580:9;10576:18;10569:34;10318:291;;;;;:::o;10614:184::-;10684:6;10737:2;10725:9;10716:7;10712:23;10708:32;10705:52;;;10753:1;10750;10743:12;10705:52;-1:-1:-1;10776:16:55;;10614:184;-1:-1:-1;10614:184:55:o;12472:225::-;12539:9;;;12560:11;;;12557:134;;;12613:10;12608:3;12604:20;12601:1;12594:31;12648:4;12645:1;12638:15;12676:4;12673:1;12666:15;12702:127;12763:10;12758:3;12754:20;12751:1;12744:31;12794:4;12791:1;12784:15;12818:4;12815:1;12808:15" + }, + "methodIdentifiers": { + "CMACCOUNT_ROLE()": "7fa34657", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DEVELOPER_WALLET_ADMIN_ROLE()": "40df8d84", + "FEE_ADMIN_ROLE()": "4cba593a", + "PAUSER_ROLE()": "e63ab1e9", + "PREFUND_ADMIN_ROLE()": "01601d2f", + "SERVICE_REGISTRY_ADMIN_ROLE()": "92cf833f", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "VERSIONER_ROLE()": "b289819c", + "createCMAccount(address,address)": "fd2fbd52", + "getAccountImplementation()": "9d825bc5", + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getBookingTokenAddress()": "4f3f4639", + "getCMAccountCreator(address)": "2cec1a06", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getPrefundAmount()": "c39409e1", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getVersion()": "0d8e6e2c", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address,address,address,uint256)": "95b6ef0c", + "isCMAccount(address)": "12b357b5", + "pause()": "8456cb59", + "paused()": "5c975abb", + "proxiableUUID()": "52d1902d", + "registerService(string)": "0d6115d0", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setAccountImplementation(address)": "09766da2", + "setBookingTokenAddress(address)": "c17e30bf", + "setDeveloperFeeBp(uint256)": "f85b4a9c", + "setDeveloperWallet(address)": "6cd56878", + "setPrefundAmount(uint256)": "1c2b3afc", + "supportsInterface(bytes4)": "01ffc9a7", + "unpause()": "3f4ba83a", + "unregisterService(string)": "5e818619", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sended\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"}],\"name\":\"InvalidBookingTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"InvalidDeveloperWallet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldBookingToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBookingToken\",\"type\":\"address\"}],\"name\":\"BookingTokenAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"CMAccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldDeveloperFeeBp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDeveloperFeeBp\",\"type\":\"uint256\"}],\"name\":\"DeveloperFeeBpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDeveloperWallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeveloperWallet\",\"type\":\"address\"}],\"name\":\"DeveloperWalletUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"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\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CMACCOUNT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEVELOPER_WALLET_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREFUND_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_REGISTRY_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSIONER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"createCMAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCMAccountCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"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\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"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\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"versioner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"registerService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"setAccountImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setBookingTokenAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bp\",\"type\":\"uint256\"}],\"name\":\"setDeveloperFeeBp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"setDeveloperWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrefundAmount\",\"type\":\"uint256\"}],\"name\":\"setPrefundAmount\",\"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\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"unregisterService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CMAccountInvalidAdmin(address)\":[{\"params\":{\"admin\":\"The admin address\"}}],\"CMAccountInvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The implementation address of the CMAccount\"}}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"params\":{\"expected\":\"The expected pre fund amount\"}}],\"InvalidBookingTokenAddress(address)\":[{\"params\":{\"bookingToken\":\"The booking token address\"}}],\"InvalidDeveloperWallet(address)\":[{\"params\":{\"developerWallet\":\"The developer wallet address\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"params\":{\"newBookingToken\":\"The new booking token address\",\"oldBookingToken\":\"The old booking token address\"}},\"CMAccountCreated(address)\":{\"params\":{\"account\":\"The address of the new CMAccount\"}},\"CMAccountImplementationUpdated(address,address)\":{\"params\":{\"newImplementation\":\"The new implementation address\",\"oldImplementation\":\"The old implementation address\"}},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"params\":{\"newDeveloperFeeBp\":\"The new developer fee basis points\",\"oldDeveloperFeeBp\":\"The old developer fee basis points\"}},\"DeveloperWalletUpdated(address,address)\":{\"params\":{\"newDeveloperWallet\":\"The new developer wallet address\",\"oldDeveloperWallet\":\"The old developer wallet address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"createCMAccount(address,address)\":{\"details\":\"Emits a {CMAccountCreated} event.\"},\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getCMAccountCreator(address)\":{\"params\":{\"account\":\"The account address\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The account address to check\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAccountImplementation(address)\":{\"params\":{\"newImplementation\":\"The new implementation address\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unregisterService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountInvalidAdmin(address)\":[{\"notice\":\"The admin address is invalid.\"}],\"CMAccountInvalidImplementation(address)\":[{\"notice\":\"The implementation of the CMAccount is invalid.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"notice\":\"Incorrect pre fund amount.\"}],\"InvalidBookingTokenAddress(address)\":[{\"notice\":\"Invalid booking token address.\"}],\"InvalidDeveloperWallet(address)\":[{\"notice\":\"Invalid developer address.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"notice\":\"Booking token address updated event.\"},\"CMAccountCreated(address)\":{\"notice\":\"CM Account created event.\"},\"CMAccountImplementationUpdated(address,address)\":{\"notice\":\"CM Account implementation address updated event.\"},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"notice\":\"Developer fee basis points updated event.\"},\"DeveloperWalletUpdated(address,address)\":{\"notice\":\"Developer wallet address updated event.\"}},\"kind\":\"user\",\"methods\":{\"CMACCOUNT_ROLE()\":{\"notice\":\"This role is granted to the created CM Accounts. It is used to keep an enumerable list of CM Accounts.\"},\"DEVELOPER_WALLET_ADMIN_ROLE()\":{\"notice\":\"Developer wallet admin role can set the developer wallet address which is used to receive the developer fee.\"},\"FEE_ADMIN_ROLE()\":{\"notice\":\"Fee admin role can set the developer fee basis points which used for calculating the developer fee that is cut from the cheque payments.\"},\"PAUSER_ROLE()\":{\"notice\":\"Pauser role can pause the contract. Currently this only affects the creation of CM Accounts. When paused, account creation is stopped.\"},\"PREFUND_ADMIN_ROLE()\":{\"notice\":\"Prefund admin role can set the mandatory prefund amount for {CMAccount} contracts.\"},\"SERVICE_REGISTRY_ADMIN_ROLE()\":{\"notice\":\"Service registry admin role can add and remove services to the service registry mapping. Implemented by {ServiceRegistry} contract.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"VERSIONER_ROLE()\":{\"notice\":\"Versioner role can set new {CMAccount} implementation address. When a new implementation address is set, it is used for the new {CMAccount} creations. The old {CMAccount} contracts are not affected by this. Owners of those should do the upgrade manually by calling the `upgradeToAndCall(address)` function on the account.\"},\"createCMAccount(address,address)\":{\"notice\":\"Creates CMAccount by deploying a ERC1967Proxy with the CMAccount implementation from the manager. Because this function is deploying a contract, it reverts if the caller is not KYC or KYB verified. (For EOAs only) Caller must send the pre-fund amount with the transaction.\"},\"getAccountImplementation()\":{\"notice\":\"Returns the CMAccount implementation address.\"},\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getCMAccountCreator(address)\":{\"notice\":\"Returns the given account's creator.\"},\"getDeveloperFeeBp()\":{\"notice\":\"Returns developer fee in basis points.\"},\"getDeveloperWallet()\":{\"notice\":\"Returns developer wallet address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"},\"isCMAccount(address)\":{\"notice\":\"Check if an address is CMAccount created by the manager.\"},\"pause()\":{\"notice\":\"Pauses the CMAccountManager contract. Currently this only affects the creation of CMAccount. When paused, account creation is stopped.\"},\"registerService(string)\":{\"notice\":\"Registers a given service name. CM Accounts can only register services if they are also registered in the service registry on the manager contract.\"},\"setAccountImplementation(address)\":{\"notice\":\"Set a new CMAccount implementation address.\"},\"setBookingTokenAddress(address)\":{\"notice\":\"Sets booking token address.\"},\"setDeveloperFeeBp(uint256)\":{\"notice\":\"Sets developer fee in basis points. A basis point (bp) is one hundredth of 1 percentage point. 1 bp = 0.01%, 1/10,000\\u2060, or 0.0001. 10 bp = 0.1%, 1/1,000\\u2060, or 0.001. 100 bp = 1%, \\u20601/100\\u2060, or 0.01.\"},\"setDeveloperWallet(address)\":{\"notice\":\"Sets developer wallet address.\"},\"setPrefundAmount(uint256)\":{\"notice\":\"Sets the prefund amount.\"},\"unpause()\":{\"notice\":\"Unpauses the CMAccountManager contract.\"},\"unregisterService(string)\":{\"notice\":\"Unregisters a given service name. CM Accounts will not be able to register the service anymore.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/test/CMAccountManagerV2.sol\":\"CMAccountManagerV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0x95dc0274f6c1574ab3cabaa226954bdffb2b2bef1c49946bccc54c7f33f38c38\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f558dafbd05517ae04495df2e38fc10dc3453bf94992aa946da76ba0f7192a18\",\"dweb:/ipfs/QmemMRVzK2y9dedXEquuPfEvLSm4gTrGC8nzgM53m2bVc7\"]},\"contracts/manager/CMAccountManager.sol\":{\"keccak256\":\"0x8e734c5a49d18eda71876dd93c0aaf5543ddf667c16bc9008143b087be3d1c31\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5acc8f7404bb36bd63ae7dc8f6ab4d30e0318c498ce213c0400fdd23bfb99c82\",\"dweb:/ipfs/QmeGgW7XjyEXx7XTynFZqJJC5LPih4iYP9HfrsCPiU5uGF\"]},\"contracts/manager/test/CMAccountManagerV2.sol\":{\"keccak256\":\"0x35ca2032c35f582352d65f701f7928d5d410b966bbd36800a6a40c9197ff966e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9b3360bd835898966ac0d39eeaf58d71e8ad7316dff8d2ca5b1ae380c67f496b\",\"dweb:/ipfs/QmR26msv7X3nRwZ91tu4o6cutjPmydRFwr4BPNj4eifFkc\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0x804054c0aba93f14476df8cb285607c0d237384e8c4b0e27da12c761ba825e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e1aabe23091166c25d92953149f9d1192b354394509e51c1600bf09ecdbb5fc\",\"dweb:/ipfs/QmWKvc1DhmMEBeemGSZiAxKjFpzfQemcP4AQXyo3TBjLab\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/partner/PartnerConfiguration.sol": { + "PartnerConfiguration": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllServiceHashes()": "42072bbd", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getSupportedTokens()": "d3c7c2c7", + "getWantedServiceHashes()": "136f50ca", + "offChainPaymentSupported()": "241bbbfc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceCapabilitiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ServiceFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"ServiceRestrictedRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}}},\"title\":\"PartnerConfiguration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"}},\"notice\":\"Partner Configuration is used by the {CMAccount} contract to register supported and wanted services by the partner.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/partner/PartnerConfiguration.sol\":\"PartnerConfiguration\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x6998e0652edba34b8168dad687606f6d82dd743cc928ffd7b4d489049de56af1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97e183226c2cb03d487b61adb01581fdea2956f60ef087a695e3b029d3ace3f8\",\"dweb:/ipfs/QmdN6KxCwcZLAd4hCSUT5JorLHRxMiiEwgSVwiAiEvg8Tv\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/partner/ServiceRegistry.sol": { + "ServiceRegistry": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}}},\"title\":\"ServiceRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"}},\"notice\":\"Service registry is used by the {CMAccountManager} contract to register services by hashing (keccak256) the service name (string) and creating a mapping as keccak256(serviceName) => serviceName.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/partner/ServiceRegistry.sol\":\"ServiceRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0x804054c0aba93f14476df8cb285607c0d237384e8c4b0e27da12c761ba825e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e1aabe23091166c25d92953149f9d1192b354394509e51c1600bf09ecdbb5fc\",\"dweb:/ipfs/QmWKvc1DhmMEBeemGSZiAxKjFpzfQemcP4AQXyo3TBjLab\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/test/Dummy.sol": { + "Dummy": { + "abi": [ + { + "inputs": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060de8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80630d8e6e2c14602d575b600080fd5b604080518082018252600581526444554d4d5960d81b6020820152905160529190605b565b60405180910390f35b60006020808352835180602085015260005b81811015608757858101830151858201604001528201606d565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220508bef1bb7dd6d1804c3fb122a22ba2e0e9779a022717ca5ac2fd83b0f2db5e264736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDE DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD8E6E2C EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x44554D4D59 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x52 SWAP2 SWAP1 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x87 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x6D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP DUP12 0xEF SHL 0xB7 0xDD PUSH14 0x1804C3FB122A22BA2E0E9779A022 PUSH18 0x7CA5AC2FD83B0F2DB5E264736F6C63430008 XOR STOP CALLER ", + "sourceMap": "86:112:52:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@getVersion_13211": { + "entryPoint": null, + "id": 13211, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 91, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:564:55", + "nodeType": "YulBlock", + "src": "0:564:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "135:427:55", + "nodeType": "YulBlock", + "src": "135:427:55", + "statements": [ + { + "nativeSrc": "145:12:55", + "nodeType": "YulVariableDeclaration", + "src": "145:12:55", + "value": { + "kind": "number", + "nativeSrc": "155:2:55", + "nodeType": "YulLiteral", + "src": "155:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "149:2:55", + "nodeType": "YulTypedName", + "src": "149:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "173:9:55", + "nodeType": "YulIdentifier", + "src": "173:9:55" + }, + { + "kind": "number", + "nativeSrc": "184:2:55", + "nodeType": "YulLiteral", + "src": "184:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "166:6:55", + "nodeType": "YulIdentifier", + "src": "166:6:55" + }, + "nativeSrc": "166:21:55", + "nodeType": "YulFunctionCall", + "src": "166:21:55" + }, + "nativeSrc": "166:21:55", + "nodeType": "YulExpressionStatement", + "src": "166:21:55" + }, + { + "nativeSrc": "196:27:55", + "nodeType": "YulVariableDeclaration", + "src": "196:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "216:6:55", + "nodeType": "YulIdentifier", + "src": "216:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "210:5:55", + "nodeType": "YulIdentifier", + "src": "210:5:55" + }, + "nativeSrc": "210:13:55", + "nodeType": "YulFunctionCall", + "src": "210:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "200:6:55", + "nodeType": "YulTypedName", + "src": "200:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "243:9:55", + "nodeType": "YulIdentifier", + "src": "243:9:55" + }, + { + "kind": "number", + "nativeSrc": "254:2:55", + "nodeType": "YulLiteral", + "src": "254:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "239:3:55", + "nodeType": "YulIdentifier", + "src": "239:3:55" + }, + "nativeSrc": "239:18:55", + "nodeType": "YulFunctionCall", + "src": "239:18:55" + }, + { + "name": "length", + "nativeSrc": "259:6:55", + "nodeType": "YulIdentifier", + "src": "259:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "232:6:55", + "nodeType": "YulIdentifier", + "src": "232:6:55" + }, + "nativeSrc": "232:34:55", + "nodeType": "YulFunctionCall", + "src": "232:34:55" + }, + "nativeSrc": "232:34:55", + "nodeType": "YulExpressionStatement", + "src": "232:34:55" + }, + { + "nativeSrc": "275:10:55", + "nodeType": "YulVariableDeclaration", + "src": "275:10:55", + "value": { + "kind": "number", + "nativeSrc": "284:1:55", + "nodeType": "YulLiteral", + "src": "284:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "279:1:55", + "nodeType": "YulTypedName", + "src": "279:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "344:90:55", + "nodeType": "YulBlock", + "src": "344:90:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "373:9:55", + "nodeType": "YulIdentifier", + "src": "373:9:55" + }, + { + "name": "i", + "nativeSrc": "384:1:55", + "nodeType": "YulIdentifier", + "src": "384:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "369:3:55", + "nodeType": "YulIdentifier", + "src": "369:3:55" + }, + "nativeSrc": "369:17:55", + "nodeType": "YulFunctionCall", + "src": "369:17:55" + }, + { + "kind": "number", + "nativeSrc": "388:2:55", + "nodeType": "YulLiteral", + "src": "388:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "365:3:55", + "nodeType": "YulIdentifier", + "src": "365:3:55" + }, + "nativeSrc": "365:26:55", + "nodeType": "YulFunctionCall", + "src": "365:26:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "407:6:55", + "nodeType": "YulIdentifier", + "src": "407:6:55" + }, + { + "name": "i", + "nativeSrc": "415:1:55", + "nodeType": "YulIdentifier", + "src": "415:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "403:3:55", + "nodeType": "YulIdentifier", + "src": "403:3:55" + }, + "nativeSrc": "403:14:55", + "nodeType": "YulFunctionCall", + "src": "403:14:55" + }, + { + "name": "_1", + "nativeSrc": "419:2:55", + "nodeType": "YulIdentifier", + "src": "419:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:55", + "nodeType": "YulIdentifier", + "src": "399:3:55" + }, + "nativeSrc": "399:23:55", + "nodeType": "YulFunctionCall", + "src": "399:23:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "393:5:55", + "nodeType": "YulIdentifier", + "src": "393:5:55" + }, + "nativeSrc": "393:30:55", + "nodeType": "YulFunctionCall", + "src": "393:30:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "358:6:55", + "nodeType": "YulIdentifier", + "src": "358:6:55" + }, + "nativeSrc": "358:66:55", + "nodeType": "YulFunctionCall", + "src": "358:66:55" + }, + "nativeSrc": "358:66:55", + "nodeType": "YulExpressionStatement", + "src": "358:66:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "305:1:55", + "nodeType": "YulIdentifier", + "src": "305:1:55" + }, + { + "name": "length", + "nativeSrc": "308:6:55", + "nodeType": "YulIdentifier", + "src": "308:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "302:2:55", + "nodeType": "YulIdentifier", + "src": "302:2:55" + }, + "nativeSrc": "302:13:55", + "nodeType": "YulFunctionCall", + "src": "302:13:55" + }, + "nativeSrc": "294:140:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "316:19:55", + "nodeType": "YulBlock", + "src": "316:19:55", + "statements": [ + { + "nativeSrc": "318:15:55", + "nodeType": "YulAssignment", + "src": "318:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "327:1:55", + "nodeType": "YulIdentifier", + "src": "327:1:55" + }, + { + "name": "_1", + "nativeSrc": "330:2:55", + "nodeType": "YulIdentifier", + "src": "330:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "323:3:55", + "nodeType": "YulIdentifier", + "src": "323:3:55" + }, + "nativeSrc": "323:10:55", + "nodeType": "YulFunctionCall", + "src": "323:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "318:1:55", + "nodeType": "YulIdentifier", + "src": "318:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "298:3:55", + "nodeType": "YulBlock", + "src": "298:3:55", + "statements": [] + }, + "src": "294:140:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "458:9:55", + "nodeType": "YulIdentifier", + "src": "458:9:55" + }, + { + "name": "length", + "nativeSrc": "469:6:55", + "nodeType": "YulIdentifier", + "src": "469:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "454:3:55", + "nodeType": "YulIdentifier", + "src": "454:3:55" + }, + "nativeSrc": "454:22:55", + "nodeType": "YulFunctionCall", + "src": "454:22:55" + }, + { + "kind": "number", + "nativeSrc": "478:2:55", + "nodeType": "YulLiteral", + "src": "478:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "450:3:55", + "nodeType": "YulIdentifier", + "src": "450:3:55" + }, + "nativeSrc": "450:31:55", + "nodeType": "YulFunctionCall", + "src": "450:31:55" + }, + { + "kind": "number", + "nativeSrc": "483:1:55", + "nodeType": "YulLiteral", + "src": "483:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "443:6:55", + "nodeType": "YulIdentifier", + "src": "443:6:55" + }, + "nativeSrc": "443:42:55", + "nodeType": "YulFunctionCall", + "src": "443:42:55" + }, + "nativeSrc": "443:42:55", + "nodeType": "YulExpressionStatement", + "src": "443:42:55" + }, + { + "nativeSrc": "494:62:55", + "nodeType": "YulAssignment", + "src": "494:62:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "510:9:55", + "nodeType": "YulIdentifier", + "src": "510:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "529:6:55", + "nodeType": "YulIdentifier", + "src": "529:6:55" + }, + { + "kind": "number", + "nativeSrc": "537:2:55", + "nodeType": "YulLiteral", + "src": "537:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "525:3:55", + "nodeType": "YulIdentifier", + "src": "525:3:55" + }, + "nativeSrc": "525:15:55", + "nodeType": "YulFunctionCall", + "src": "525:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "546:2:55", + "nodeType": "YulLiteral", + "src": "546:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "542:3:55", + "nodeType": "YulIdentifier", + "src": "542:3:55" + }, + "nativeSrc": "542:7:55", + "nodeType": "YulFunctionCall", + "src": "542:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "521:3:55", + "nodeType": "YulIdentifier", + "src": "521:3:55" + }, + "nativeSrc": "521:29:55", + "nodeType": "YulFunctionCall", + "src": "521:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "506:3:55", + "nodeType": "YulIdentifier", + "src": "506:3:55" + }, + "nativeSrc": "506:45:55", + "nodeType": "YulFunctionCall", + "src": "506:45:55" + }, + { + "kind": "number", + "nativeSrc": "553:2:55", + "nodeType": "YulLiteral", + "src": "553:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "502:3:55", + "nodeType": "YulIdentifier", + "src": "502:3:55" + }, + "nativeSrc": "502:54:55", + "nodeType": "YulFunctionCall", + "src": "502:54:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "494:4:55", + "nodeType": "YulIdentifier", + "src": "494:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "14:548:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "104:9:55", + "nodeType": "YulTypedName", + "src": "104:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "115:6:55", + "nodeType": "YulTypedName", + "src": "115:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "126:4:55", + "nodeType": "YulTypedName", + "src": "126:4:55", + "type": "" + } + ], + "src": "14:548:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80630d8e6e2c14602d575b600080fd5b604080518082018252600581526444554d4d5960d81b6020820152905160529190605b565b60405180910390f35b60006020808352835180602085015260005b81811015608757858101830151858201604001528201606d565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220508bef1bb7dd6d1804c3fb122a22ba2e0e9779a022717ca5ac2fd83b0f2db5e264736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD8E6E2C EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x44554D4D59 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x52 SWAP2 SWAP1 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x87 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x6D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP DUP12 0xEF SHL 0xB7 0xDD PUSH14 0x1804C3FB122A22BA2E0E9779A022 PUSH18 0x7CA5AC2FD83B0F2DB5E264736F6C63430008 XOR STOP CALLER ", + "sourceMap": "86:112:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:89;175:14;;;;;;;;;;;-1:-1:-1;;;175:14:52;;;;107:89;;;;175:14;107:89;:::i;:::-;;;;;;;;14:548:55;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o" + }, + "methodIdentifiers": { + "getVersion()": "0d8e6e2c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/Dummy.sol\":\"Dummy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/test/Dummy.sol\":{\"keccak256\":\"0x58c26c3751d0ae17f867cf98e1c1a5ace37cc9edd4b02abbe672b7cc60535871\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bcff26a4dd0a99333a3e50c158dc94ef0862ff406167bdd7f0ae002a00274ef1\",\"dweb:/ipfs/QmaiurUvaDjMJsoipBtsPPDhGHzCvq9j3Dku121q4Sn8Pc\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/test/NullUSD.sol": { + "NullUSD": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_13237": { + "entryPoint": null, + "id": 13237, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_3904": { + "entryPoint": null, + "id": 3904, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_mint_4207": { + "entryPoint": 180, + "id": 4207, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_update_4174": { + "entryPoint": 246, + "id": 4174, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@decimals_3931": { + "entryPoint": 175, + "id": 3931, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1251, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 946, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint8": { + "entryPoint": 1201, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 1019, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 1225, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 635, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 720, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 575, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 924, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 553, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:5275:55", + "nodeType": "YulBlock", + "src": "0:5275:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "46:95:55", + "nodeType": "YulBlock", + "src": "46:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63:1:55", + "nodeType": "YulLiteral", + "src": "63:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "70:3:55", + "nodeType": "YulLiteral", + "src": "70:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "75:10:55", + "nodeType": "YulLiteral", + "src": "75:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "66:3:55", + "nodeType": "YulIdentifier", + "src": "66:3:55" + }, + "nativeSrc": "66:20:55", + "nodeType": "YulFunctionCall", + "src": "66:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56:6:55", + "nodeType": "YulIdentifier", + "src": "56:6:55" + }, + "nativeSrc": "56:31:55", + "nodeType": "YulFunctionCall", + "src": "56:31:55" + }, + "nativeSrc": "56:31:55", + "nodeType": "YulExpressionStatement", + "src": "56:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "103:1:55", + "nodeType": "YulLiteral", + "src": "103:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "106:4:55", + "nodeType": "YulLiteral", + "src": "106:4:55", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96:6:55", + "nodeType": "YulIdentifier", + "src": "96:6:55" + }, + "nativeSrc": "96:15:55", + "nodeType": "YulFunctionCall", + "src": "96:15:55" + }, + "nativeSrc": "96:15:55", + "nodeType": "YulExpressionStatement", + "src": "96:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "127:1:55", + "nodeType": "YulLiteral", + "src": "127:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "130:4:55", + "nodeType": "YulLiteral", + "src": "130:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "120:6:55", + "nodeType": "YulIdentifier", + "src": "120:6:55" + }, + "nativeSrc": "120:15:55", + "nodeType": "YulFunctionCall", + "src": "120:15:55" + }, + "nativeSrc": "120:15:55", + "nodeType": "YulExpressionStatement", + "src": "120:15:55" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "14:127:55", + "nodeType": "YulFunctionDefinition", + "src": "14:127:55" + }, + { + "body": { + "nativeSrc": "201:325:55", + "nodeType": "YulBlock", + "src": "201:325:55", + "statements": [ + { + "nativeSrc": "211:22:55", + "nodeType": "YulAssignment", + "src": "211:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "225:1:55", + "nodeType": "YulLiteral", + "src": "225:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "228:4:55", + "nodeType": "YulIdentifier", + "src": "228:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "221:3:55", + "nodeType": "YulIdentifier", + "src": "221:3:55" + }, + "nativeSrc": "221:12:55", + "nodeType": "YulFunctionCall", + "src": "221:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "211:6:55", + "nodeType": "YulIdentifier", + "src": "211:6:55" + } + ] + }, + { + "nativeSrc": "242:38:55", + "nodeType": "YulVariableDeclaration", + "src": "242:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "272:4:55", + "nodeType": "YulIdentifier", + "src": "272:4:55" + }, + { + "kind": "number", + "nativeSrc": "278:1:55", + "nodeType": "YulLiteral", + "src": "278:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "268:3:55", + "nodeType": "YulIdentifier", + "src": "268:3:55" + }, + "nativeSrc": "268:12:55", + "nodeType": "YulFunctionCall", + "src": "268:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "246:18:55", + "nodeType": "YulTypedName", + "src": "246:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "319:31:55", + "nodeType": "YulBlock", + "src": "319:31:55", + "statements": [ + { + "nativeSrc": "321:27:55", + "nodeType": "YulAssignment", + "src": "321:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "335:6:55", + "nodeType": "YulIdentifier", + "src": "335:6:55" + }, + { + "kind": "number", + "nativeSrc": "343:4:55", + "nodeType": "YulLiteral", + "src": "343:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "331:3:55", + "nodeType": "YulIdentifier", + "src": "331:3:55" + }, + "nativeSrc": "331:17:55", + "nodeType": "YulFunctionCall", + "src": "331:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "321:6:55", + "nodeType": "YulIdentifier", + "src": "321:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "299:18:55", + "nodeType": "YulIdentifier", + "src": "299:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "292:6:55", + "nodeType": "YulIdentifier", + "src": "292:6:55" + }, + "nativeSrc": "292:26:55", + "nodeType": "YulFunctionCall", + "src": "292:26:55" + }, + "nativeSrc": "289:61:55", + "nodeType": "YulIf", + "src": "289:61:55" + }, + { + "body": { + "nativeSrc": "409:111:55", + "nodeType": "YulBlock", + "src": "409:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "430:1:55", + "nodeType": "YulLiteral", + "src": "430:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "437:3:55", + "nodeType": "YulLiteral", + "src": "437:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "442:10:55", + "nodeType": "YulLiteral", + "src": "442:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "433:3:55", + "nodeType": "YulIdentifier", + "src": "433:3:55" + }, + "nativeSrc": "433:20:55", + "nodeType": "YulFunctionCall", + "src": "433:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "423:6:55", + "nodeType": "YulIdentifier", + "src": "423:6:55" + }, + "nativeSrc": "423:31:55", + "nodeType": "YulFunctionCall", + "src": "423:31:55" + }, + "nativeSrc": "423:31:55", + "nodeType": "YulExpressionStatement", + "src": "423:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "474:1:55", + "nodeType": "YulLiteral", + "src": "474:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "477:4:55", + "nodeType": "YulLiteral", + "src": "477:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "467:6:55", + "nodeType": "YulIdentifier", + "src": "467:6:55" + }, + "nativeSrc": "467:15:55", + "nodeType": "YulFunctionCall", + "src": "467:15:55" + }, + "nativeSrc": "467:15:55", + "nodeType": "YulExpressionStatement", + "src": "467:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "502:1:55", + "nodeType": "YulLiteral", + "src": "502:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "505:4:55", + "nodeType": "YulLiteral", + "src": "505:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "495:6:55", + "nodeType": "YulIdentifier", + "src": "495:6:55" + }, + "nativeSrc": "495:15:55", + "nodeType": "YulFunctionCall", + "src": "495:15:55" + }, + "nativeSrc": "495:15:55", + "nodeType": "YulExpressionStatement", + "src": "495:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "365:18:55", + "nodeType": "YulIdentifier", + "src": "365:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "388:6:55", + "nodeType": "YulIdentifier", + "src": "388:6:55" + }, + { + "kind": "number", + "nativeSrc": "396:2:55", + "nodeType": "YulLiteral", + "src": "396:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "385:2:55", + "nodeType": "YulIdentifier", + "src": "385:2:55" + }, + "nativeSrc": "385:14:55", + "nodeType": "YulFunctionCall", + "src": "385:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "362:2:55", + "nodeType": "YulIdentifier", + "src": "362:2:55" + }, + "nativeSrc": "362:38:55", + "nodeType": "YulFunctionCall", + "src": "362:38:55" + }, + "nativeSrc": "359:161:55", + "nodeType": "YulIf", + "src": "359:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "146:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "181:4:55", + "nodeType": "YulTypedName", + "src": "181:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "190:6:55", + "nodeType": "YulTypedName", + "src": "190:6:55", + "type": "" + } + ], + "src": "146:380:55" + }, + { + "body": { + "nativeSrc": "587:65:55", + "nodeType": "YulBlock", + "src": "587:65:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "604:1:55", + "nodeType": "YulLiteral", + "src": "604:1:55", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "607:3:55", + "nodeType": "YulIdentifier", + "src": "607:3:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "597:6:55", + "nodeType": "YulIdentifier", + "src": "597:6:55" + }, + "nativeSrc": "597:14:55", + "nodeType": "YulFunctionCall", + "src": "597:14:55" + }, + "nativeSrc": "597:14:55", + "nodeType": "YulExpressionStatement", + "src": "597:14:55" + }, + { + "nativeSrc": "620:26:55", + "nodeType": "YulAssignment", + "src": "620:26:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "638:1:55", + "nodeType": "YulLiteral", + "src": "638:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "641:4:55", + "nodeType": "YulLiteral", + "src": "641:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "628:9:55", + "nodeType": "YulIdentifier", + "src": "628:9:55" + }, + "nativeSrc": "628:18:55", + "nodeType": "YulFunctionCall", + "src": "628:18:55" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "620:4:55", + "nodeType": "YulIdentifier", + "src": "620:4:55" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "531:121:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "570:3:55", + "nodeType": "YulTypedName", + "src": "570:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "578:4:55", + "nodeType": "YulTypedName", + "src": "578:4:55", + "type": "" + } + ], + "src": "531:121:55" + }, + { + "body": { + "nativeSrc": "738:462:55", + "nodeType": "YulBlock", + "src": "738:462:55", + "statements": [ + { + "body": { + "nativeSrc": "771:423:55", + "nodeType": "YulBlock", + "src": "771:423:55", + "statements": [ + { + "nativeSrc": "785:11:55", + "nodeType": "YulVariableDeclaration", + "src": "785:11:55", + "value": { + "kind": "number", + "nativeSrc": "795:1:55", + "nodeType": "YulLiteral", + "src": "795:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "789:2:55", + "nodeType": "YulTypedName", + "src": "789:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "816:1:55", + "nodeType": "YulLiteral", + "src": "816:1:55", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "819:5:55", + "nodeType": "YulIdentifier", + "src": "819:5:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "809:6:55", + "nodeType": "YulIdentifier", + "src": "809:6:55" + }, + "nativeSrc": "809:16:55", + "nodeType": "YulFunctionCall", + "src": "809:16:55" + }, + "nativeSrc": "809:16:55", + "nodeType": "YulExpressionStatement", + "src": "809:16:55" + }, + { + "nativeSrc": "838:30:55", + "nodeType": "YulVariableDeclaration", + "src": "838:30:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "860:1:55", + "nodeType": "YulLiteral", + "src": "860:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "863:4:55", + "nodeType": "YulLiteral", + "src": "863:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "850:9:55", + "nodeType": "YulIdentifier", + "src": "850:9:55" + }, + "nativeSrc": "850:18:55", + "nodeType": "YulFunctionCall", + "src": "850:18:55" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "842:4:55", + "nodeType": "YulTypedName", + "src": "842:4:55", + "type": "" + } + ] + }, + { + "nativeSrc": "881:57:55", + "nodeType": "YulVariableDeclaration", + "src": "881:57:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "904:4:55", + "nodeType": "YulIdentifier", + "src": "904:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "914:1:55", + "nodeType": "YulLiteral", + "src": "914:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "921:10:55", + "nodeType": "YulIdentifier", + "src": "921:10:55" + }, + { + "kind": "number", + "nativeSrc": "933:2:55", + "nodeType": "YulLiteral", + "src": "933:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "917:3:55", + "nodeType": "YulIdentifier", + "src": "917:3:55" + }, + "nativeSrc": "917:19:55", + "nodeType": "YulFunctionCall", + "src": "917:19:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "910:3:55", + "nodeType": "YulIdentifier", + "src": "910:3:55" + }, + "nativeSrc": "910:27:55", + "nodeType": "YulFunctionCall", + "src": "910:27:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "900:3:55", + "nodeType": "YulIdentifier", + "src": "900:3:55" + }, + "nativeSrc": "900:38:55", + "nodeType": "YulFunctionCall", + "src": "900:38:55" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "885:11:55", + "nodeType": "YulTypedName", + "src": "885:11:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "975:23:55", + "nodeType": "YulBlock", + "src": "975:23:55", + "statements": [ + { + "nativeSrc": "977:19:55", + "nodeType": "YulAssignment", + "src": "977:19:55", + "value": { + "name": "data", + "nativeSrc": "992:4:55", + "nodeType": "YulIdentifier", + "src": "992:4:55" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "977:11:55", + "nodeType": "YulIdentifier", + "src": "977:11:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "957:10:55", + "nodeType": "YulIdentifier", + "src": "957:10:55" + }, + { + "kind": "number", + "nativeSrc": "969:4:55", + "nodeType": "YulLiteral", + "src": "969:4:55", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "954:2:55", + "nodeType": "YulIdentifier", + "src": "954:2:55" + }, + "nativeSrc": "954:20:55", + "nodeType": "YulFunctionCall", + "src": "954:20:55" + }, + "nativeSrc": "951:47:55", + "nodeType": "YulIf", + "src": "951:47:55" + }, + { + "nativeSrc": "1011:41:55", + "nodeType": "YulVariableDeclaration", + "src": "1011:41:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "1025:4:55", + "nodeType": "YulIdentifier", + "src": "1025:4:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1035:1:55", + "nodeType": "YulLiteral", + "src": "1035:1:55", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "1042:3:55", + "nodeType": "YulIdentifier", + "src": "1042:3:55" + }, + { + "kind": "number", + "nativeSrc": "1047:2:55", + "nodeType": "YulLiteral", + "src": "1047:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1038:3:55", + "nodeType": "YulIdentifier", + "src": "1038:3:55" + }, + "nativeSrc": "1038:12:55", + "nodeType": "YulFunctionCall", + "src": "1038:12:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1031:3:55", + "nodeType": "YulIdentifier", + "src": "1031:3:55" + }, + "nativeSrc": "1031:20:55", + "nodeType": "YulFunctionCall", + "src": "1031:20:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1021:3:55", + "nodeType": "YulIdentifier", + "src": "1021:3:55" + }, + "nativeSrc": "1021:31:55", + "nodeType": "YulFunctionCall", + "src": "1021:31:55" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1015:2:55", + "nodeType": "YulTypedName", + "src": "1015:2:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1065:24:55", + "nodeType": "YulVariableDeclaration", + "src": "1065:24:55", + "value": { + "name": "deleteStart", + "nativeSrc": "1078:11:55", + "nodeType": "YulIdentifier", + "src": "1078:11:55" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "1069:5:55", + "nodeType": "YulTypedName", + "src": "1069:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1163:21:55", + "nodeType": "YulBlock", + "src": "1163:21:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1172:5:55", + "nodeType": "YulIdentifier", + "src": "1172:5:55" + }, + { + "name": "_1", + "nativeSrc": "1179:2:55", + "nodeType": "YulIdentifier", + "src": "1179:2:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "1165:6:55", + "nodeType": "YulIdentifier", + "src": "1165:6:55" + }, + "nativeSrc": "1165:17:55", + "nodeType": "YulFunctionCall", + "src": "1165:17:55" + }, + "nativeSrc": "1165:17:55", + "nodeType": "YulExpressionStatement", + "src": "1165:17:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1113:5:55", + "nodeType": "YulIdentifier", + "src": "1113:5:55" + }, + { + "name": "_2", + "nativeSrc": "1120:2:55", + "nodeType": "YulIdentifier", + "src": "1120:2:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1110:2:55", + "nodeType": "YulIdentifier", + "src": "1110:2:55" + }, + "nativeSrc": "1110:13:55", + "nodeType": "YulFunctionCall", + "src": "1110:13:55" + }, + "nativeSrc": "1102:82:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1124:26:55", + "nodeType": "YulBlock", + "src": "1124:26:55", + "statements": [ + { + "nativeSrc": "1126:22:55", + "nodeType": "YulAssignment", + "src": "1126:22:55", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1139:5:55", + "nodeType": "YulIdentifier", + "src": "1139:5:55" + }, + { + "kind": "number", + "nativeSrc": "1146:1:55", + "nodeType": "YulLiteral", + "src": "1146:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1135:3:55", + "nodeType": "YulIdentifier", + "src": "1135:3:55" + }, + "nativeSrc": "1135:13:55", + "nodeType": "YulFunctionCall", + "src": "1135:13:55" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "1126:5:55", + "nodeType": "YulIdentifier", + "src": "1126:5:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1106:3:55", + "nodeType": "YulBlock", + "src": "1106:3:55", + "statements": [] + }, + "src": "1102:82:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "754:3:55", + "nodeType": "YulIdentifier", + "src": "754:3:55" + }, + { + "kind": "number", + "nativeSrc": "759:2:55", + "nodeType": "YulLiteral", + "src": "759:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "751:2:55", + "nodeType": "YulIdentifier", + "src": "751:2:55" + }, + "nativeSrc": "751:11:55", + "nodeType": "YulFunctionCall", + "src": "751:11:55" + }, + "nativeSrc": "748:446:55", + "nodeType": "YulIf", + "src": "748:446:55" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "657:543:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "710:5:55", + "nodeType": "YulTypedName", + "src": "710:5:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "717:3:55", + "nodeType": "YulTypedName", + "src": "717:3:55", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "722:10:55", + "nodeType": "YulTypedName", + "src": "722:10:55", + "type": "" + } + ], + "src": "657:543:55" + }, + { + "body": { + "nativeSrc": "1290:81:55", + "nodeType": "YulBlock", + "src": "1290:81:55", + "statements": [ + { + "nativeSrc": "1300:65:55", + "nodeType": "YulAssignment", + "src": "1300:65:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "1315:4:55", + "nodeType": "YulIdentifier", + "src": "1315:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1333:1:55", + "nodeType": "YulLiteral", + "src": "1333:1:55", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "1336:3:55", + "nodeType": "YulIdentifier", + "src": "1336:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1329:3:55", + "nodeType": "YulIdentifier", + "src": "1329:3:55" + }, + "nativeSrc": "1329:11:55", + "nodeType": "YulFunctionCall", + "src": "1329:11:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1346:1:55", + "nodeType": "YulLiteral", + "src": "1346:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1342:3:55", + "nodeType": "YulIdentifier", + "src": "1342:3:55" + }, + "nativeSrc": "1342:6:55", + "nodeType": "YulFunctionCall", + "src": "1342:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1325:3:55", + "nodeType": "YulIdentifier", + "src": "1325:3:55" + }, + "nativeSrc": "1325:24:55", + "nodeType": "YulFunctionCall", + "src": "1325:24:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1321:3:55", + "nodeType": "YulIdentifier", + "src": "1321:3:55" + }, + "nativeSrc": "1321:29:55", + "nodeType": "YulFunctionCall", + "src": "1321:29:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1311:3:55", + "nodeType": "YulIdentifier", + "src": "1311:3:55" + }, + "nativeSrc": "1311:40:55", + "nodeType": "YulFunctionCall", + "src": "1311:40:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1357:1:55", + "nodeType": "YulLiteral", + "src": "1357:1:55", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "1360:3:55", + "nodeType": "YulIdentifier", + "src": "1360:3:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1353:3:55", + "nodeType": "YulIdentifier", + "src": "1353:3:55" + }, + "nativeSrc": "1353:11:55", + "nodeType": "YulFunctionCall", + "src": "1353:11:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1308:2:55", + "nodeType": "YulIdentifier", + "src": "1308:2:55" + }, + "nativeSrc": "1308:57:55", + "nodeType": "YulFunctionCall", + "src": "1308:57:55" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "1300:4:55", + "nodeType": "YulIdentifier", + "src": "1300:4:55" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "1205:166:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "1267:4:55", + "nodeType": "YulTypedName", + "src": "1267:4:55", + "type": "" + }, + { + "name": "len", + "nativeSrc": "1273:3:55", + "nodeType": "YulTypedName", + "src": "1273:3:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "1281:4:55", + "nodeType": "YulTypedName", + "src": "1281:4:55", + "type": "" + } + ], + "src": "1205:166:55" + }, + { + "body": { + "nativeSrc": "1472:1249:55", + "nodeType": "YulBlock", + "src": "1472:1249:55", + "statements": [ + { + "nativeSrc": "1482:24:55", + "nodeType": "YulVariableDeclaration", + "src": "1482:24:55", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "1502:3:55", + "nodeType": "YulIdentifier", + "src": "1502:3:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1496:5:55", + "nodeType": "YulIdentifier", + "src": "1496:5:55" + }, + "nativeSrc": "1496:10:55", + "nodeType": "YulFunctionCall", + "src": "1496:10:55" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "1486:6:55", + "nodeType": "YulTypedName", + "src": "1486:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1549:22:55", + "nodeType": "YulBlock", + "src": "1549:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1551:16:55", + "nodeType": "YulIdentifier", + "src": "1551:16:55" + }, + "nativeSrc": "1551:18:55", + "nodeType": "YulFunctionCall", + "src": "1551:18:55" + }, + "nativeSrc": "1551:18:55", + "nodeType": "YulExpressionStatement", + "src": "1551:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1521:6:55", + "nodeType": "YulIdentifier", + "src": "1521:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1537:2:55", + "nodeType": "YulLiteral", + "src": "1537:2:55", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1541:1:55", + "nodeType": "YulLiteral", + "src": "1541:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1533:3:55", + "nodeType": "YulIdentifier", + "src": "1533:3:55" + }, + "nativeSrc": "1533:10:55", + "nodeType": "YulFunctionCall", + "src": "1533:10:55" + }, + { + "kind": "number", + "nativeSrc": "1545:1:55", + "nodeType": "YulLiteral", + "src": "1545:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1529:3:55", + "nodeType": "YulIdentifier", + "src": "1529:3:55" + }, + "nativeSrc": "1529:18:55", + "nodeType": "YulFunctionCall", + "src": "1529:18:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1518:2:55", + "nodeType": "YulIdentifier", + "src": "1518:2:55" + }, + "nativeSrc": "1518:30:55", + "nodeType": "YulFunctionCall", + "src": "1518:30:55" + }, + "nativeSrc": "1515:56:55", + "nodeType": "YulIf", + "src": "1515:56:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1624:4:55", + "nodeType": "YulIdentifier", + "src": "1624:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1662:4:55", + "nodeType": "YulIdentifier", + "src": "1662:4:55" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "1656:5:55", + "nodeType": "YulIdentifier", + "src": "1656:5:55" + }, + "nativeSrc": "1656:11:55", + "nodeType": "YulFunctionCall", + "src": "1656:11:55" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "1630:25:55", + "nodeType": "YulIdentifier", + "src": "1630:25:55" + }, + "nativeSrc": "1630:38:55", + "nodeType": "YulFunctionCall", + "src": "1630:38:55" + }, + { + "name": "newLen", + "nativeSrc": "1670:6:55", + "nodeType": "YulIdentifier", + "src": "1670:6:55" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "1580:43:55", + "nodeType": "YulIdentifier", + "src": "1580:43:55" + }, + "nativeSrc": "1580:97:55", + "nodeType": "YulFunctionCall", + "src": "1580:97:55" + }, + "nativeSrc": "1580:97:55", + "nodeType": "YulExpressionStatement", + "src": "1580:97:55" + }, + { + "nativeSrc": "1686:18:55", + "nodeType": "YulVariableDeclaration", + "src": "1686:18:55", + "value": { + "kind": "number", + "nativeSrc": "1703:1:55", + "nodeType": "YulLiteral", + "src": "1703:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "1690:9:55", + "nodeType": "YulTypedName", + "src": "1690:9:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1713:23:55", + "nodeType": "YulVariableDeclaration", + "src": "1713:23:55", + "value": { + "kind": "number", + "nativeSrc": "1732:4:55", + "nodeType": "YulLiteral", + "src": "1732:4:55", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "1717:11:55", + "nodeType": "YulTypedName", + "src": "1717:11:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1745:17:55", + "nodeType": "YulAssignment", + "src": "1745:17:55", + "value": { + "kind": "number", + "nativeSrc": "1758:4:55", + "nodeType": "YulLiteral", + "src": "1758:4:55", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "1745:9:55", + "nodeType": "YulIdentifier", + "src": "1745:9:55" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "1808:656:55", + "nodeType": "YulBlock", + "src": "1808:656:55", + "statements": [ + { + "nativeSrc": "1822:35:55", + "nodeType": "YulVariableDeclaration", + "src": "1822:35:55", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1841:6:55", + "nodeType": "YulIdentifier", + "src": "1841:6:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1853:2:55", + "nodeType": "YulLiteral", + "src": "1853:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1849:3:55", + "nodeType": "YulIdentifier", + "src": "1849:3:55" + }, + "nativeSrc": "1849:7:55", + "nodeType": "YulFunctionCall", + "src": "1849:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1837:3:55", + "nodeType": "YulIdentifier", + "src": "1837:3:55" + }, + "nativeSrc": "1837:20:55", + "nodeType": "YulFunctionCall", + "src": "1837:20:55" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "1826:7:55", + "nodeType": "YulTypedName", + "src": "1826:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1870:49:55", + "nodeType": "YulVariableDeclaration", + "src": "1870:49:55", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1914:4:55", + "nodeType": "YulIdentifier", + "src": "1914:4:55" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "1884:29:55", + "nodeType": "YulIdentifier", + "src": "1884:29:55" + }, + "nativeSrc": "1884:35:55", + "nodeType": "YulFunctionCall", + "src": "1884:35:55" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "1874:6:55", + "nodeType": "YulTypedName", + "src": "1874:6:55", + "type": "" + } + ] + }, + { + "nativeSrc": "1932:10:55", + "nodeType": "YulVariableDeclaration", + "src": "1932:10:55", + "value": { + "kind": "number", + "nativeSrc": "1941:1:55", + "nodeType": "YulLiteral", + "src": "1941:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1936:1:55", + "nodeType": "YulTypedName", + "src": "1936:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2019:172:55", + "nodeType": "YulBlock", + "src": "2019:172:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2044:6:55", + "nodeType": "YulIdentifier", + "src": "2044:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2062:3:55", + "nodeType": "YulIdentifier", + "src": "2062:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "2067:9:55", + "nodeType": "YulIdentifier", + "src": "2067:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2058:3:55", + "nodeType": "YulIdentifier", + "src": "2058:3:55" + }, + "nativeSrc": "2058:19:55", + "nodeType": "YulFunctionCall", + "src": "2058:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2052:5:55", + "nodeType": "YulIdentifier", + "src": "2052:5:55" + }, + "nativeSrc": "2052:26:55", + "nodeType": "YulFunctionCall", + "src": "2052:26:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2037:6:55", + "nodeType": "YulIdentifier", + "src": "2037:6:55" + }, + "nativeSrc": "2037:42:55", + "nodeType": "YulFunctionCall", + "src": "2037:42:55" + }, + "nativeSrc": "2037:42:55", + "nodeType": "YulExpressionStatement", + "src": "2037:42:55" + }, + { + "nativeSrc": "2096:24:55", + "nodeType": "YulAssignment", + "src": "2096:24:55", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2110:6:55", + "nodeType": "YulIdentifier", + "src": "2110:6:55" + }, + { + "kind": "number", + "nativeSrc": "2118:1:55", + "nodeType": "YulLiteral", + "src": "2118:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2106:3:55", + "nodeType": "YulIdentifier", + "src": "2106:3:55" + }, + "nativeSrc": "2106:14:55", + "nodeType": "YulFunctionCall", + "src": "2106:14:55" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "2096:6:55", + "nodeType": "YulIdentifier", + "src": "2096:6:55" + } + ] + }, + { + "nativeSrc": "2137:40:55", + "nodeType": "YulAssignment", + "src": "2137:40:55", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "2154:9:55", + "nodeType": "YulIdentifier", + "src": "2154:9:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "2165:11:55", + "nodeType": "YulIdentifier", + "src": "2165:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2150:3:55", + "nodeType": "YulIdentifier", + "src": "2150:3:55" + }, + "nativeSrc": "2150:27:55", + "nodeType": "YulFunctionCall", + "src": "2150:27:55" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "2137:9:55", + "nodeType": "YulIdentifier", + "src": "2137:9:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1966:1:55", + "nodeType": "YulIdentifier", + "src": "1966:1:55" + }, + { + "name": "loopEnd", + "nativeSrc": "1969:7:55", + "nodeType": "YulIdentifier", + "src": "1969:7:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1963:2:55", + "nodeType": "YulIdentifier", + "src": "1963:2:55" + }, + "nativeSrc": "1963:14:55", + "nodeType": "YulFunctionCall", + "src": "1963:14:55" + }, + "nativeSrc": "1955:236:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1978:28:55", + "nodeType": "YulBlock", + "src": "1978:28:55", + "statements": [ + { + "nativeSrc": "1980:24:55", + "nodeType": "YulAssignment", + "src": "1980:24:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1989:1:55", + "nodeType": "YulIdentifier", + "src": "1989:1:55" + }, + { + "name": "srcOffset_1", + "nativeSrc": "1992:11:55", + "nodeType": "YulIdentifier", + "src": "1992:11:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1985:3:55", + "nodeType": "YulIdentifier", + "src": "1985:3:55" + }, + "nativeSrc": "1985:19:55", + "nodeType": "YulFunctionCall", + "src": "1985:19:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1980:1:55", + "nodeType": "YulIdentifier", + "src": "1980:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1959:3:55", + "nodeType": "YulBlock", + "src": "1959:3:55", + "statements": [] + }, + "src": "1955:236:55" + }, + { + "body": { + "nativeSrc": "2239:166:55", + "nodeType": "YulBlock", + "src": "2239:166:55", + "statements": [ + { + "nativeSrc": "2257:43:55", + "nodeType": "YulVariableDeclaration", + "src": "2257:43:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2284:3:55", + "nodeType": "YulIdentifier", + "src": "2284:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "2289:9:55", + "nodeType": "YulIdentifier", + "src": "2289:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2280:3:55", + "nodeType": "YulIdentifier", + "src": "2280:3:55" + }, + "nativeSrc": "2280:19:55", + "nodeType": "YulFunctionCall", + "src": "2280:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2274:5:55", + "nodeType": "YulIdentifier", + "src": "2274:5:55" + }, + "nativeSrc": "2274:26:55", + "nodeType": "YulFunctionCall", + "src": "2274:26:55" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "2261:9:55", + "nodeType": "YulTypedName", + "src": "2261:9:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2324:6:55", + "nodeType": "YulIdentifier", + "src": "2324:6:55" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "2336:9:55", + "nodeType": "YulIdentifier", + "src": "2336:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2363:1:55", + "nodeType": "YulLiteral", + "src": "2363:1:55", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "2366:6:55", + "nodeType": "YulIdentifier", + "src": "2366:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2359:3:55", + "nodeType": "YulIdentifier", + "src": "2359:3:55" + }, + "nativeSrc": "2359:14:55", + "nodeType": "YulFunctionCall", + "src": "2359:14:55" + }, + { + "kind": "number", + "nativeSrc": "2375:3:55", + "nodeType": "YulLiteral", + "src": "2375:3:55", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2355:3:55", + "nodeType": "YulIdentifier", + "src": "2355:3:55" + }, + "nativeSrc": "2355:24:55", + "nodeType": "YulFunctionCall", + "src": "2355:24:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2385:1:55", + "nodeType": "YulLiteral", + "src": "2385:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2381:3:55", + "nodeType": "YulIdentifier", + "src": "2381:3:55" + }, + "nativeSrc": "2381:6:55", + "nodeType": "YulFunctionCall", + "src": "2381:6:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2351:3:55", + "nodeType": "YulIdentifier", + "src": "2351:3:55" + }, + "nativeSrc": "2351:37:55", + "nodeType": "YulFunctionCall", + "src": "2351:37:55" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2347:3:55", + "nodeType": "YulIdentifier", + "src": "2347:3:55" + }, + "nativeSrc": "2347:42:55", + "nodeType": "YulFunctionCall", + "src": "2347:42:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2332:3:55", + "nodeType": "YulIdentifier", + "src": "2332:3:55" + }, + "nativeSrc": "2332:58:55", + "nodeType": "YulFunctionCall", + "src": "2332:58:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2317:6:55", + "nodeType": "YulIdentifier", + "src": "2317:6:55" + }, + "nativeSrc": "2317:74:55", + "nodeType": "YulFunctionCall", + "src": "2317:74:55" + }, + "nativeSrc": "2317:74:55", + "nodeType": "YulExpressionStatement", + "src": "2317:74:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "2210:7:55", + "nodeType": "YulIdentifier", + "src": "2210:7:55" + }, + { + "name": "newLen", + "nativeSrc": "2219:6:55", + "nodeType": "YulIdentifier", + "src": "2219:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2207:2:55", + "nodeType": "YulIdentifier", + "src": "2207:2:55" + }, + "nativeSrc": "2207:19:55", + "nodeType": "YulFunctionCall", + "src": "2207:19:55" + }, + "nativeSrc": "2204:201:55", + "nodeType": "YulIf", + "src": "2204:201:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2425:4:55", + "nodeType": "YulIdentifier", + "src": "2425:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2439:1:55", + "nodeType": "YulLiteral", + "src": "2439:1:55", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "2442:6:55", + "nodeType": "YulIdentifier", + "src": "2442:6:55" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2435:3:55", + "nodeType": "YulIdentifier", + "src": "2435:3:55" + }, + "nativeSrc": "2435:14:55", + "nodeType": "YulFunctionCall", + "src": "2435:14:55" + }, + { + "kind": "number", + "nativeSrc": "2451:1:55", + "nodeType": "YulLiteral", + "src": "2451:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:55", + "nodeType": "YulIdentifier", + "src": "2431:3:55" + }, + "nativeSrc": "2431:22:55", + "nodeType": "YulFunctionCall", + "src": "2431:22:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2418:6:55", + "nodeType": "YulIdentifier", + "src": "2418:6:55" + }, + "nativeSrc": "2418:36:55", + "nodeType": "YulFunctionCall", + "src": "2418:36:55" + }, + "nativeSrc": "2418:36:55", + "nodeType": "YulExpressionStatement", + "src": "2418:36:55" + } + ] + }, + "nativeSrc": "1801:663:55", + "nodeType": "YulCase", + "src": "1801:663:55", + "value": { + "kind": "number", + "nativeSrc": "1806:1:55", + "nodeType": "YulLiteral", + "src": "1806:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "2481:234:55", + "nodeType": "YulBlock", + "src": "2481:234:55", + "statements": [ + { + "nativeSrc": "2495:14:55", + "nodeType": "YulVariableDeclaration", + "src": "2495:14:55", + "value": { + "kind": "number", + "nativeSrc": "2508:1:55", + "nodeType": "YulLiteral", + "src": "2508:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2499:5:55", + "nodeType": "YulTypedName", + "src": "2499:5:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2544:67:55", + "nodeType": "YulBlock", + "src": "2544:67:55", + "statements": [ + { + "nativeSrc": "2562:35:55", + "nodeType": "YulAssignment", + "src": "2562:35:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2581:3:55", + "nodeType": "YulIdentifier", + "src": "2581:3:55" + }, + { + "name": "srcOffset", + "nativeSrc": "2586:9:55", + "nodeType": "YulIdentifier", + "src": "2586:9:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2577:3:55", + "nodeType": "YulIdentifier", + "src": "2577:3:55" + }, + "nativeSrc": "2577:19:55", + "nodeType": "YulFunctionCall", + "src": "2577:19:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2571:5:55", + "nodeType": "YulIdentifier", + "src": "2571:5:55" + }, + "nativeSrc": "2571:26:55", + "nodeType": "YulFunctionCall", + "src": "2571:26:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "2562:5:55", + "nodeType": "YulIdentifier", + "src": "2562:5:55" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "2525:6:55", + "nodeType": "YulIdentifier", + "src": "2525:6:55" + }, + "nativeSrc": "2522:89:55", + "nodeType": "YulIf", + "src": "2522:89:55" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2631:4:55", + "nodeType": "YulIdentifier", + "src": "2631:4:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2690:5:55", + "nodeType": "YulIdentifier", + "src": "2690:5:55" + }, + { + "name": "newLen", + "nativeSrc": "2697:6:55", + "nodeType": "YulIdentifier", + "src": "2697:6:55" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "2637:52:55", + "nodeType": "YulIdentifier", + "src": "2637:52:55" + }, + "nativeSrc": "2637:67:55", + "nodeType": "YulFunctionCall", + "src": "2637:67:55" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2624:6:55", + "nodeType": "YulIdentifier", + "src": "2624:6:55" + }, + "nativeSrc": "2624:81:55", + "nodeType": "YulFunctionCall", + "src": "2624:81:55" + }, + "nativeSrc": "2624:81:55", + "nodeType": "YulExpressionStatement", + "src": "2624:81:55" + } + ] + }, + "nativeSrc": "2473:242:55", + "nodeType": "YulCase", + "src": "2473:242:55", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1781:6:55", + "nodeType": "YulIdentifier", + "src": "1781:6:55" + }, + { + "kind": "number", + "nativeSrc": "1789:2:55", + "nodeType": "YulLiteral", + "src": "1789:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1778:2:55", + "nodeType": "YulIdentifier", + "src": "1778:2:55" + }, + "nativeSrc": "1778:14:55", + "nodeType": "YulFunctionCall", + "src": "1778:14:55" + }, + "nativeSrc": "1771:944:55", + "nodeType": "YulSwitch", + "src": "1771:944:55" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "1376:1345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "1457:4:55", + "nodeType": "YulTypedName", + "src": "1457:4:55", + "type": "" + }, + { + "name": "src", + "nativeSrc": "1463:3:55", + "nodeType": "YulTypedName", + "src": "1463:3:55", + "type": "" + } + ], + "src": "1376:1345:55" + }, + { + "body": { + "nativeSrc": "2758:95:55", + "nodeType": "YulBlock", + "src": "2758:95:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2775:1:55", + "nodeType": "YulLiteral", + "src": "2775:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2782:3:55", + "nodeType": "YulLiteral", + "src": "2782:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2787:10:55", + "nodeType": "YulLiteral", + "src": "2787:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2778:3:55", + "nodeType": "YulIdentifier", + "src": "2778:3:55" + }, + "nativeSrc": "2778:20:55", + "nodeType": "YulFunctionCall", + "src": "2778:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2768:6:55", + "nodeType": "YulIdentifier", + "src": "2768:6:55" + }, + "nativeSrc": "2768:31:55", + "nodeType": "YulFunctionCall", + "src": "2768:31:55" + }, + "nativeSrc": "2768:31:55", + "nodeType": "YulExpressionStatement", + "src": "2768:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2815:1:55", + "nodeType": "YulLiteral", + "src": "2815:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2818:4:55", + "nodeType": "YulLiteral", + "src": "2818:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2808:6:55", + "nodeType": "YulIdentifier", + "src": "2808:6:55" + }, + "nativeSrc": "2808:15:55", + "nodeType": "YulFunctionCall", + "src": "2808:15:55" + }, + "nativeSrc": "2808:15:55", + "nodeType": "YulExpressionStatement", + "src": "2808:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2839:1:55", + "nodeType": "YulLiteral", + "src": "2839:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2842:4:55", + "nodeType": "YulLiteral", + "src": "2842:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2832:6:55", + "nodeType": "YulIdentifier", + "src": "2832:6:55" + }, + "nativeSrc": "2832:15:55", + "nodeType": "YulFunctionCall", + "src": "2832:15:55" + }, + "nativeSrc": "2832:15:55", + "nodeType": "YulExpressionStatement", + "src": "2832:15:55" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "2726:127:55", + "nodeType": "YulFunctionDefinition", + "src": "2726:127:55" + }, + { + "body": { + "nativeSrc": "2922:352:55", + "nodeType": "YulBlock", + "src": "2922:352:55", + "statements": [ + { + "nativeSrc": "2932:16:55", + "nodeType": "YulVariableDeclaration", + "src": "2932:16:55", + "value": { + "kind": "number", + "nativeSrc": "2947:1:55", + "nodeType": "YulLiteral", + "src": "2947:1:55", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nativeSrc": "2936:7:55", + "nodeType": "YulTypedName", + "src": "2936:7:55", + "type": "" + } + ] + }, + { + "nativeSrc": "2957:10:55", + "nodeType": "YulAssignment", + "src": "2957:10:55", + "value": { + "kind": "number", + "nativeSrc": "2966:1:55", + "nodeType": "YulLiteral", + "src": "2966:1:55", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "2957:5:55", + "nodeType": "YulIdentifier", + "src": "2957:5:55" + } + ] + }, + { + "nativeSrc": "2976:13:55", + "nodeType": "YulAssignment", + "src": "2976:13:55", + "value": { + "name": "_base", + "nativeSrc": "2984:5:55", + "nodeType": "YulIdentifier", + "src": "2984:5:55" + }, + "variableNames": [ + { + "name": "base", + "nativeSrc": "2976:4:55", + "nodeType": "YulIdentifier", + "src": "2976:4:55" + } + ] + }, + { + "body": { + "nativeSrc": "3040:228:55", + "nodeType": "YulBlock", + "src": "3040:228:55", + "statements": [ + { + "body": { + "nativeSrc": "3085:22:55", + "nodeType": "YulBlock", + "src": "3085:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "3087:16:55", + "nodeType": "YulIdentifier", + "src": "3087:16:55" + }, + "nativeSrc": "3087:18:55", + "nodeType": "YulFunctionCall", + "src": "3087:18:55" + }, + "nativeSrc": "3087:18:55", + "nodeType": "YulExpressionStatement", + "src": "3087:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3060:4:55", + "nodeType": "YulIdentifier", + "src": "3060:4:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3074:1:55", + "nodeType": "YulLiteral", + "src": "3074:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3070:3:55", + "nodeType": "YulIdentifier", + "src": "3070:3:55" + }, + "nativeSrc": "3070:6:55", + "nodeType": "YulFunctionCall", + "src": "3070:6:55" + }, + { + "name": "base", + "nativeSrc": "3078:4:55", + "nodeType": "YulIdentifier", + "src": "3078:4:55" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "3066:3:55", + "nodeType": "YulIdentifier", + "src": "3066:3:55" + }, + "nativeSrc": "3066:17:55", + "nodeType": "YulFunctionCall", + "src": "3066:17:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3057:2:55", + "nodeType": "YulIdentifier", + "src": "3057:2:55" + }, + "nativeSrc": "3057:27:55", + "nodeType": "YulFunctionCall", + "src": "3057:27:55" + }, + "nativeSrc": "3054:53:55", + "nodeType": "YulIf", + "src": "3054:53:55" + }, + { + "body": { + "nativeSrc": "3146:29:55", + "nodeType": "YulBlock", + "src": "3146:29:55", + "statements": [ + { + "nativeSrc": "3148:25:55", + "nodeType": "YulAssignment", + "src": "3148:25:55", + "value": { + "arguments": [ + { + "name": "power", + "nativeSrc": "3161:5:55", + "nodeType": "YulIdentifier", + "src": "3161:5:55" + }, + { + "name": "base", + "nativeSrc": "3168:4:55", + "nodeType": "YulIdentifier", + "src": "3168:4:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3157:3:55", + "nodeType": "YulIdentifier", + "src": "3157:3:55" + }, + "nativeSrc": "3157:16:55", + "nodeType": "YulFunctionCall", + "src": "3157:16:55" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3148:5:55", + "nodeType": "YulIdentifier", + "src": "3148:5:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3127:8:55", + "nodeType": "YulIdentifier", + "src": "3127:8:55" + }, + { + "name": "power_1", + "nativeSrc": "3137:7:55", + "nodeType": "YulIdentifier", + "src": "3137:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3123:3:55", + "nodeType": "YulIdentifier", + "src": "3123:3:55" + }, + "nativeSrc": "3123:22:55", + "nodeType": "YulFunctionCall", + "src": "3123:22:55" + }, + "nativeSrc": "3120:55:55", + "nodeType": "YulIf", + "src": "3120:55:55" + }, + { + "nativeSrc": "3188:23:55", + "nodeType": "YulAssignment", + "src": "3188:23:55", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3200:4:55", + "nodeType": "YulIdentifier", + "src": "3200:4:55" + }, + { + "name": "base", + "nativeSrc": "3206:4:55", + "nodeType": "YulIdentifier", + "src": "3206:4:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3196:3:55", + "nodeType": "YulIdentifier", + "src": "3196:3:55" + }, + "nativeSrc": "3196:15:55", + "nodeType": "YulFunctionCall", + "src": "3196:15:55" + }, + "variableNames": [ + { + "name": "base", + "nativeSrc": "3188:4:55", + "nodeType": "YulIdentifier", + "src": "3188:4:55" + } + ] + }, + { + "nativeSrc": "3224:34:55", + "nodeType": "YulAssignment", + "src": "3224:34:55", + "value": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "3240:7:55", + "nodeType": "YulIdentifier", + "src": "3240:7:55" + }, + { + "name": "exponent", + "nativeSrc": "3249:8:55", + "nodeType": "YulIdentifier", + "src": "3249:8:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3236:3:55", + "nodeType": "YulIdentifier", + "src": "3236:3:55" + }, + "nativeSrc": "3236:22:55", + "nodeType": "YulFunctionCall", + "src": "3236:22:55" + }, + "variableNames": [ + { + "name": "exponent", + "nativeSrc": "3224:8:55", + "nodeType": "YulIdentifier", + "src": "3224:8:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3009:8:55", + "nodeType": "YulIdentifier", + "src": "3009:8:55" + }, + { + "name": "power_1", + "nativeSrc": "3019:7:55", + "nodeType": "YulIdentifier", + "src": "3019:7:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3006:2:55", + "nodeType": "YulIdentifier", + "src": "3006:2:55" + }, + "nativeSrc": "3006:21:55", + "nodeType": "YulFunctionCall", + "src": "3006:21:55" + }, + "nativeSrc": "2998:270:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3028:3:55", + "nodeType": "YulBlock", + "src": "3028:3:55", + "statements": [] + }, + "pre": { + "nativeSrc": "3002:3:55", + "nodeType": "YulBlock", + "src": "3002:3:55", + "statements": [] + }, + "src": "2998:270:55" + } + ] + }, + "name": "checked_exp_helper", + "nativeSrc": "2858:416:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nativeSrc": "2886:5:55", + "nodeType": "YulTypedName", + "src": "2886:5:55", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "2893:8:55", + "nodeType": "YulTypedName", + "src": "2893:8:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "2906:5:55", + "nodeType": "YulTypedName", + "src": "2906:5:55", + "type": "" + }, + { + "name": "base", + "nativeSrc": "2913:4:55", + "nodeType": "YulTypedName", + "src": "2913:4:55", + "type": "" + } + ], + "src": "2858:416:55" + }, + { + "body": { + "nativeSrc": "3338:747:55", + "nodeType": "YulBlock", + "src": "3338:747:55", + "statements": [ + { + "body": { + "nativeSrc": "3376:52:55", + "nodeType": "YulBlock", + "src": "3376:52:55", + "statements": [ + { + "nativeSrc": "3390:10:55", + "nodeType": "YulAssignment", + "src": "3390:10:55", + "value": { + "kind": "number", + "nativeSrc": "3399:1:55", + "nodeType": "YulLiteral", + "src": "3399:1:55", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3390:5:55", + "nodeType": "YulIdentifier", + "src": "3390:5:55" + } + ] + }, + { + "nativeSrc": "3413:5:55", + "nodeType": "YulLeave", + "src": "3413:5:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3358:8:55", + "nodeType": "YulIdentifier", + "src": "3358:8:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3351:6:55", + "nodeType": "YulIdentifier", + "src": "3351:6:55" + }, + "nativeSrc": "3351:16:55", + "nodeType": "YulFunctionCall", + "src": "3351:16:55" + }, + "nativeSrc": "3348:80:55", + "nodeType": "YulIf", + "src": "3348:80:55" + }, + { + "body": { + "nativeSrc": "3461:52:55", + "nodeType": "YulBlock", + "src": "3461:52:55", + "statements": [ + { + "nativeSrc": "3475:10:55", + "nodeType": "YulAssignment", + "src": "3475:10:55", + "value": { + "kind": "number", + "nativeSrc": "3484:1:55", + "nodeType": "YulLiteral", + "src": "3484:1:55", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3475:5:55", + "nodeType": "YulIdentifier", + "src": "3475:5:55" + } + ] + }, + { + "nativeSrc": "3498:5:55", + "nodeType": "YulLeave", + "src": "3498:5:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3447:4:55", + "nodeType": "YulIdentifier", + "src": "3447:4:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3440:6:55", + "nodeType": "YulIdentifier", + "src": "3440:6:55" + }, + "nativeSrc": "3440:12:55", + "nodeType": "YulFunctionCall", + "src": "3440:12:55" + }, + "nativeSrc": "3437:76:55", + "nodeType": "YulIf", + "src": "3437:76:55" + }, + { + "cases": [ + { + "body": { + "nativeSrc": "3549:52:55", + "nodeType": "YulBlock", + "src": "3549:52:55", + "statements": [ + { + "nativeSrc": "3563:10:55", + "nodeType": "YulAssignment", + "src": "3563:10:55", + "value": { + "kind": "number", + "nativeSrc": "3572:1:55", + "nodeType": "YulLiteral", + "src": "3572:1:55", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3563:5:55", + "nodeType": "YulIdentifier", + "src": "3563:5:55" + } + ] + }, + { + "nativeSrc": "3586:5:55", + "nodeType": "YulLeave", + "src": "3586:5:55" + } + ] + }, + "nativeSrc": "3542:59:55", + "nodeType": "YulCase", + "src": "3542:59:55", + "value": { + "kind": "number", + "nativeSrc": "3547:1:55", + "nodeType": "YulLiteral", + "src": "3547:1:55", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "3617:123:55", + "nodeType": "YulBlock", + "src": "3617:123:55", + "statements": [ + { + "body": { + "nativeSrc": "3652:22:55", + "nodeType": "YulBlock", + "src": "3652:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "3654:16:55", + "nodeType": "YulIdentifier", + "src": "3654:16:55" + }, + "nativeSrc": "3654:18:55", + "nodeType": "YulFunctionCall", + "src": "3654:18:55" + }, + "nativeSrc": "3654:18:55", + "nodeType": "YulExpressionStatement", + "src": "3654:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3637:8:55", + "nodeType": "YulIdentifier", + "src": "3637:8:55" + }, + { + "kind": "number", + "nativeSrc": "3647:3:55", + "nodeType": "YulLiteral", + "src": "3647:3:55", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3634:2:55", + "nodeType": "YulIdentifier", + "src": "3634:2:55" + }, + "nativeSrc": "3634:17:55", + "nodeType": "YulFunctionCall", + "src": "3634:17:55" + }, + "nativeSrc": "3631:43:55", + "nodeType": "YulIf", + "src": "3631:43:55" + }, + { + "nativeSrc": "3687:25:55", + "nodeType": "YulAssignment", + "src": "3687:25:55", + "value": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3700:8:55", + "nodeType": "YulIdentifier", + "src": "3700:8:55" + }, + { + "kind": "number", + "nativeSrc": "3710:1:55", + "nodeType": "YulLiteral", + "src": "3710:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3696:3:55", + "nodeType": "YulIdentifier", + "src": "3696:3:55" + }, + "nativeSrc": "3696:16:55", + "nodeType": "YulFunctionCall", + "src": "3696:16:55" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3687:5:55", + "nodeType": "YulIdentifier", + "src": "3687:5:55" + } + ] + }, + { + "nativeSrc": "3725:5:55", + "nodeType": "YulLeave", + "src": "3725:5:55" + } + ] + }, + "nativeSrc": "3610:130:55", + "nodeType": "YulCase", + "src": "3610:130:55", + "value": { + "kind": "number", + "nativeSrc": "3615:1:55", + "nodeType": "YulLiteral", + "src": "3615:1:55", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nativeSrc": "3529:4:55", + "nodeType": "YulIdentifier", + "src": "3529:4:55" + }, + "nativeSrc": "3522:218:55", + "nodeType": "YulSwitch", + "src": "3522:218:55" + }, + { + "body": { + "nativeSrc": "3838:70:55", + "nodeType": "YulBlock", + "src": "3838:70:55", + "statements": [ + { + "nativeSrc": "3852:28:55", + "nodeType": "YulAssignment", + "src": "3852:28:55", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3865:4:55", + "nodeType": "YulIdentifier", + "src": "3865:4:55" + }, + { + "name": "exponent", + "nativeSrc": "3871:8:55", + "nodeType": "YulIdentifier", + "src": "3871:8:55" + } + ], + "functionName": { + "name": "exp", + "nativeSrc": "3861:3:55", + "nodeType": "YulIdentifier", + "src": "3861:3:55" + }, + "nativeSrc": "3861:19:55", + "nodeType": "YulFunctionCall", + "src": "3861:19:55" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3852:5:55", + "nodeType": "YulIdentifier", + "src": "3852:5:55" + } + ] + }, + { + "nativeSrc": "3893:5:55", + "nodeType": "YulLeave", + "src": "3893:5:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nativeSrc": "3762:4:55", + "nodeType": "YulIdentifier", + "src": "3762:4:55" + }, + { + "kind": "number", + "nativeSrc": "3768:2:55", + "nodeType": "YulLiteral", + "src": "3768:2:55", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3759:2:55", + "nodeType": "YulIdentifier", + "src": "3759:2:55" + }, + "nativeSrc": "3759:12:55", + "nodeType": "YulFunctionCall", + "src": "3759:12:55" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3776:8:55", + "nodeType": "YulIdentifier", + "src": "3776:8:55" + }, + { + "kind": "number", + "nativeSrc": "3786:2:55", + "nodeType": "YulLiteral", + "src": "3786:2:55", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3773:2:55", + "nodeType": "YulIdentifier", + "src": "3773:2:55" + }, + "nativeSrc": "3773:16:55", + "nodeType": "YulFunctionCall", + "src": "3773:16:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3755:3:55", + "nodeType": "YulIdentifier", + "src": "3755:3:55" + }, + "nativeSrc": "3755:35:55", + "nodeType": "YulFunctionCall", + "src": "3755:35:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nativeSrc": "3799:4:55", + "nodeType": "YulIdentifier", + "src": "3799:4:55" + }, + { + "kind": "number", + "nativeSrc": "3805:3:55", + "nodeType": "YulLiteral", + "src": "3805:3:55", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3796:2:55", + "nodeType": "YulIdentifier", + "src": "3796:2:55" + }, + "nativeSrc": "3796:13:55", + "nodeType": "YulFunctionCall", + "src": "3796:13:55" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3814:8:55", + "nodeType": "YulIdentifier", + "src": "3814:8:55" + }, + { + "kind": "number", + "nativeSrc": "3824:2:55", + "nodeType": "YulLiteral", + "src": "3824:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3811:2:55", + "nodeType": "YulIdentifier", + "src": "3811:2:55" + }, + "nativeSrc": "3811:16:55", + "nodeType": "YulFunctionCall", + "src": "3811:16:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3792:3:55", + "nodeType": "YulIdentifier", + "src": "3792:3:55" + }, + "nativeSrc": "3792:36:55", + "nodeType": "YulFunctionCall", + "src": "3792:36:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3752:2:55", + "nodeType": "YulIdentifier", + "src": "3752:2:55" + }, + "nativeSrc": "3752:77:55", + "nodeType": "YulFunctionCall", + "src": "3752:77:55" + }, + "nativeSrc": "3749:159:55", + "nodeType": "YulIf", + "src": "3749:159:55" + }, + { + "nativeSrc": "3917:57:55", + "nodeType": "YulVariableDeclaration", + "src": "3917:57:55", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3959:4:55", + "nodeType": "YulIdentifier", + "src": "3959:4:55" + }, + { + "name": "exponent", + "nativeSrc": "3965:8:55", + "nodeType": "YulIdentifier", + "src": "3965:8:55" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nativeSrc": "3940:18:55", + "nodeType": "YulIdentifier", + "src": "3940:18:55" + }, + "nativeSrc": "3940:34:55", + "nodeType": "YulFunctionCall", + "src": "3940:34:55" + }, + "variables": [ + { + "name": "power_1", + "nativeSrc": "3921:7:55", + "nodeType": "YulTypedName", + "src": "3921:7:55", + "type": "" + }, + { + "name": "base_1", + "nativeSrc": "3930:6:55", + "nodeType": "YulTypedName", + "src": "3930:6:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4019:22:55", + "nodeType": "YulBlock", + "src": "4019:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4021:16:55", + "nodeType": "YulIdentifier", + "src": "4021:16:55" + }, + "nativeSrc": "4021:18:55", + "nodeType": "YulFunctionCall", + "src": "4021:18:55" + }, + "nativeSrc": "4021:18:55", + "nodeType": "YulExpressionStatement", + "src": "4021:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "3989:7:55", + "nodeType": "YulIdentifier", + "src": "3989:7:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4006:1:55", + "nodeType": "YulLiteral", + "src": "4006:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4002:3:55", + "nodeType": "YulIdentifier", + "src": "4002:3:55" + }, + "nativeSrc": "4002:6:55", + "nodeType": "YulFunctionCall", + "src": "4002:6:55" + }, + { + "name": "base_1", + "nativeSrc": "4010:6:55", + "nodeType": "YulIdentifier", + "src": "4010:6:55" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "3998:3:55", + "nodeType": "YulIdentifier", + "src": "3998:3:55" + }, + "nativeSrc": "3998:19:55", + "nodeType": "YulFunctionCall", + "src": "3998:19:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3986:2:55", + "nodeType": "YulIdentifier", + "src": "3986:2:55" + }, + "nativeSrc": "3986:32:55", + "nodeType": "YulFunctionCall", + "src": "3986:32:55" + }, + "nativeSrc": "3983:58:55", + "nodeType": "YulIf", + "src": "3983:58:55" + }, + { + "nativeSrc": "4050:29:55", + "nodeType": "YulAssignment", + "src": "4050:29:55", + "value": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "4063:7:55", + "nodeType": "YulIdentifier", + "src": "4063:7:55" + }, + { + "name": "base_1", + "nativeSrc": "4072:6:55", + "nodeType": "YulIdentifier", + "src": "4072:6:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4059:3:55", + "nodeType": "YulIdentifier", + "src": "4059:3:55" + }, + "nativeSrc": "4059:20:55", + "nodeType": "YulFunctionCall", + "src": "4059:20:55" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "4050:5:55", + "nodeType": "YulIdentifier", + "src": "4050:5:55" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nativeSrc": "3279:806:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nativeSrc": "3309:4:55", + "nodeType": "YulTypedName", + "src": "3309:4:55", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "3315:8:55", + "nodeType": "YulTypedName", + "src": "3315:8:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "3328:5:55", + "nodeType": "YulTypedName", + "src": "3328:5:55", + "type": "" + } + ], + "src": "3279:806:55" + }, + { + "body": { + "nativeSrc": "4158:72:55", + "nodeType": "YulBlock", + "src": "4158:72:55", + "statements": [ + { + "nativeSrc": "4168:56:55", + "nodeType": "YulAssignment", + "src": "4168:56:55", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "4198:4:55", + "nodeType": "YulIdentifier", + "src": "4198:4:55" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "4208:8:55", + "nodeType": "YulIdentifier", + "src": "4208:8:55" + }, + { + "kind": "number", + "nativeSrc": "4218:4:55", + "nodeType": "YulLiteral", + "src": "4218:4:55", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4204:3:55", + "nodeType": "YulIdentifier", + "src": "4204:3:55" + }, + "nativeSrc": "4204:19:55", + "nodeType": "YulFunctionCall", + "src": "4204:19:55" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nativeSrc": "4177:20:55", + "nodeType": "YulIdentifier", + "src": "4177:20:55" + }, + "nativeSrc": "4177:47:55", + "nodeType": "YulFunctionCall", + "src": "4177:47:55" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "4168:5:55", + "nodeType": "YulIdentifier", + "src": "4168:5:55" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint8", + "nativeSrc": "4090:140:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nativeSrc": "4129:4:55", + "nodeType": "YulTypedName", + "src": "4129:4:55", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "4135:8:55", + "nodeType": "YulTypedName", + "src": "4135:8:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "4148:5:55", + "nodeType": "YulTypedName", + "src": "4148:5:55", + "type": "" + } + ], + "src": "4090:140:55" + }, + { + "body": { + "nativeSrc": "4287:116:55", + "nodeType": "YulBlock", + "src": "4287:116:55", + "statements": [ + { + "nativeSrc": "4297:20:55", + "nodeType": "YulAssignment", + "src": "4297:20:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4312:1:55", + "nodeType": "YulIdentifier", + "src": "4312:1:55" + }, + { + "name": "y", + "nativeSrc": "4315:1:55", + "nodeType": "YulIdentifier", + "src": "4315:1:55" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4308:3:55", + "nodeType": "YulIdentifier", + "src": "4308:3:55" + }, + "nativeSrc": "4308:9:55", + "nodeType": "YulFunctionCall", + "src": "4308:9:55" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "4297:7:55", + "nodeType": "YulIdentifier", + "src": "4297:7:55" + } + ] + }, + { + "body": { + "nativeSrc": "4375:22:55", + "nodeType": "YulBlock", + "src": "4375:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4377:16:55", + "nodeType": "YulIdentifier", + "src": "4377:16:55" + }, + "nativeSrc": "4377:18:55", + "nodeType": "YulFunctionCall", + "src": "4377:18:55" + }, + "nativeSrc": "4377:18:55", + "nodeType": "YulExpressionStatement", + "src": "4377:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "4346:1:55", + "nodeType": "YulIdentifier", + "src": "4346:1:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4339:6:55", + "nodeType": "YulIdentifier", + "src": "4339:6:55" + }, + "nativeSrc": "4339:9:55", + "nodeType": "YulFunctionCall", + "src": "4339:9:55" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "4353:1:55", + "nodeType": "YulIdentifier", + "src": "4353:1:55" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "4360:7:55", + "nodeType": "YulIdentifier", + "src": "4360:7:55" + }, + { + "name": "x", + "nativeSrc": "4369:1:55", + "nodeType": "YulIdentifier", + "src": "4369:1:55" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "4356:3:55", + "nodeType": "YulIdentifier", + "src": "4356:3:55" + }, + "nativeSrc": "4356:15:55", + "nodeType": "YulFunctionCall", + "src": "4356:15:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4350:2:55", + "nodeType": "YulIdentifier", + "src": "4350:2:55" + }, + "nativeSrc": "4350:22:55", + "nodeType": "YulFunctionCall", + "src": "4350:22:55" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4336:2:55", + "nodeType": "YulIdentifier", + "src": "4336:2:55" + }, + "nativeSrc": "4336:37:55", + "nodeType": "YulFunctionCall", + "src": "4336:37:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4329:6:55", + "nodeType": "YulIdentifier", + "src": "4329:6:55" + }, + "nativeSrc": "4329:45:55", + "nodeType": "YulFunctionCall", + "src": "4329:45:55" + }, + "nativeSrc": "4326:71:55", + "nodeType": "YulIf", + "src": "4326:71:55" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "4235:168:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "4266:1:55", + "nodeType": "YulTypedName", + "src": "4266:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "4269:1:55", + "nodeType": "YulTypedName", + "src": "4269:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "4275:7:55", + "nodeType": "YulTypedName", + "src": "4275:7:55", + "type": "" + } + ], + "src": "4235:168:55" + }, + { + "body": { + "nativeSrc": "4509:102:55", + "nodeType": "YulBlock", + "src": "4509:102:55", + "statements": [ + { + "nativeSrc": "4519:26:55", + "nodeType": "YulAssignment", + "src": "4519:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4531:9:55", + "nodeType": "YulIdentifier", + "src": "4531:9:55" + }, + { + "kind": "number", + "nativeSrc": "4542:2:55", + "nodeType": "YulLiteral", + "src": "4542:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4527:3:55", + "nodeType": "YulIdentifier", + "src": "4527:3:55" + }, + "nativeSrc": "4527:18:55", + "nodeType": "YulFunctionCall", + "src": "4527:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4519:4:55", + "nodeType": "YulIdentifier", + "src": "4519:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4561:9:55", + "nodeType": "YulIdentifier", + "src": "4561:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4576:6:55", + "nodeType": "YulIdentifier", + "src": "4576:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4592:3:55", + "nodeType": "YulLiteral", + "src": "4592:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4597:1:55", + "nodeType": "YulLiteral", + "src": "4597:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4588:3:55", + "nodeType": "YulIdentifier", + "src": "4588:3:55" + }, + "nativeSrc": "4588:11:55", + "nodeType": "YulFunctionCall", + "src": "4588:11:55" + }, + { + "kind": "number", + "nativeSrc": "4601:1:55", + "nodeType": "YulLiteral", + "src": "4601:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4584:3:55", + "nodeType": "YulIdentifier", + "src": "4584:3:55" + }, + "nativeSrc": "4584:19:55", + "nodeType": "YulFunctionCall", + "src": "4584:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4572:3:55", + "nodeType": "YulIdentifier", + "src": "4572:3:55" + }, + "nativeSrc": "4572:32:55", + "nodeType": "YulFunctionCall", + "src": "4572:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4554:6:55", + "nodeType": "YulIdentifier", + "src": "4554:6:55" + }, + "nativeSrc": "4554:51:55", + "nodeType": "YulFunctionCall", + "src": "4554:51:55" + }, + "nativeSrc": "4554:51:55", + "nodeType": "YulExpressionStatement", + "src": "4554:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "4408:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4478:9:55", + "nodeType": "YulTypedName", + "src": "4478:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4489:6:55", + "nodeType": "YulTypedName", + "src": "4489:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4500:4:55", + "nodeType": "YulTypedName", + "src": "4500:4:55", + "type": "" + } + ], + "src": "4408:203:55" + }, + { + "body": { + "nativeSrc": "4664:77:55", + "nodeType": "YulBlock", + "src": "4664:77:55", + "statements": [ + { + "nativeSrc": "4674:16:55", + "nodeType": "YulAssignment", + "src": "4674:16:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4685:1:55", + "nodeType": "YulIdentifier", + "src": "4685:1:55" + }, + { + "name": "y", + "nativeSrc": "4688:1:55", + "nodeType": "YulIdentifier", + "src": "4688:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4681:3:55", + "nodeType": "YulIdentifier", + "src": "4681:3:55" + }, + "nativeSrc": "4681:9:55", + "nodeType": "YulFunctionCall", + "src": "4681:9:55" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "4674:3:55", + "nodeType": "YulIdentifier", + "src": "4674:3:55" + } + ] + }, + { + "body": { + "nativeSrc": "4713:22:55", + "nodeType": "YulBlock", + "src": "4713:22:55", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4715:16:55", + "nodeType": "YulIdentifier", + "src": "4715:16:55" + }, + "nativeSrc": "4715:18:55", + "nodeType": "YulFunctionCall", + "src": "4715:18:55" + }, + "nativeSrc": "4715:18:55", + "nodeType": "YulExpressionStatement", + "src": "4715:18:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4705:1:55", + "nodeType": "YulIdentifier", + "src": "4705:1:55" + }, + { + "name": "sum", + "nativeSrc": "4708:3:55", + "nodeType": "YulIdentifier", + "src": "4708:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4702:2:55", + "nodeType": "YulIdentifier", + "src": "4702:2:55" + }, + "nativeSrc": "4702:10:55", + "nodeType": "YulFunctionCall", + "src": "4702:10:55" + }, + "nativeSrc": "4699:36:55", + "nodeType": "YulIf", + "src": "4699:36:55" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "4616:125:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "4647:1:55", + "nodeType": "YulTypedName", + "src": "4647:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "4650:1:55", + "nodeType": "YulTypedName", + "src": "4650:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "4656:3:55", + "nodeType": "YulTypedName", + "src": "4656:3:55", + "type": "" + } + ], + "src": "4616:125:55" + }, + { + "body": { + "nativeSrc": "4903:188:55", + "nodeType": "YulBlock", + "src": "4903:188:55", + "statements": [ + { + "nativeSrc": "4913:26:55", + "nodeType": "YulAssignment", + "src": "4913:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4925:9:55", + "nodeType": "YulIdentifier", + "src": "4925:9:55" + }, + { + "kind": "number", + "nativeSrc": "4936:2:55", + "nodeType": "YulLiteral", + "src": "4936:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4921:3:55", + "nodeType": "YulIdentifier", + "src": "4921:3:55" + }, + "nativeSrc": "4921:18:55", + "nodeType": "YulFunctionCall", + "src": "4921:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4913:4:55", + "nodeType": "YulIdentifier", + "src": "4913:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4955:9:55", + "nodeType": "YulIdentifier", + "src": "4955:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4970:6:55", + "nodeType": "YulIdentifier", + "src": "4970:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4986:3:55", + "nodeType": "YulLiteral", + "src": "4986:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4991:1:55", + "nodeType": "YulLiteral", + "src": "4991:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4982:3:55", + "nodeType": "YulIdentifier", + "src": "4982:3:55" + }, + "nativeSrc": "4982:11:55", + "nodeType": "YulFunctionCall", + "src": "4982:11:55" + }, + { + "kind": "number", + "nativeSrc": "4995:1:55", + "nodeType": "YulLiteral", + "src": "4995:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4978:3:55", + "nodeType": "YulIdentifier", + "src": "4978:3:55" + }, + "nativeSrc": "4978:19:55", + "nodeType": "YulFunctionCall", + "src": "4978:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4966:3:55", + "nodeType": "YulIdentifier", + "src": "4966:3:55" + }, + "nativeSrc": "4966:32:55", + "nodeType": "YulFunctionCall", + "src": "4966:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4948:6:55", + "nodeType": "YulIdentifier", + "src": "4948:6:55" + }, + "nativeSrc": "4948:51:55", + "nodeType": "YulFunctionCall", + "src": "4948:51:55" + }, + "nativeSrc": "4948:51:55", + "nodeType": "YulExpressionStatement", + "src": "4948:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5019:9:55", + "nodeType": "YulIdentifier", + "src": "5019:9:55" + }, + { + "kind": "number", + "nativeSrc": "5030:2:55", + "nodeType": "YulLiteral", + "src": "5030:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5015:3:55", + "nodeType": "YulIdentifier", + "src": "5015:3:55" + }, + "nativeSrc": "5015:18:55", + "nodeType": "YulFunctionCall", + "src": "5015:18:55" + }, + { + "name": "value1", + "nativeSrc": "5035:6:55", + "nodeType": "YulIdentifier", + "src": "5035:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5008:6:55", + "nodeType": "YulIdentifier", + "src": "5008:6:55" + }, + "nativeSrc": "5008:34:55", + "nodeType": "YulFunctionCall", + "src": "5008:34:55" + }, + "nativeSrc": "5008:34:55", + "nodeType": "YulExpressionStatement", + "src": "5008:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5062:9:55", + "nodeType": "YulIdentifier", + "src": "5062:9:55" + }, + { + "kind": "number", + "nativeSrc": "5073:2:55", + "nodeType": "YulLiteral", + "src": "5073:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5058:3:55", + "nodeType": "YulIdentifier", + "src": "5058:3:55" + }, + "nativeSrc": "5058:18:55", + "nodeType": "YulFunctionCall", + "src": "5058:18:55" + }, + { + "name": "value2", + "nativeSrc": "5078:6:55", + "nodeType": "YulIdentifier", + "src": "5078:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5051:6:55", + "nodeType": "YulIdentifier", + "src": "5051:6:55" + }, + "nativeSrc": "5051:34:55", + "nodeType": "YulFunctionCall", + "src": "5051:34:55" + }, + "nativeSrc": "5051:34:55", + "nodeType": "YulExpressionStatement", + "src": "5051:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "4746:345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4856:9:55", + "nodeType": "YulTypedName", + "src": "4856:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4867:6:55", + "nodeType": "YulTypedName", + "src": "4867:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4875:6:55", + "nodeType": "YulTypedName", + "src": "4875:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4883:6:55", + "nodeType": "YulTypedName", + "src": "4883:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4894:4:55", + "nodeType": "YulTypedName", + "src": "4894:4:55", + "type": "" + } + ], + "src": "4746:345:55" + }, + { + "body": { + "nativeSrc": "5197:76:55", + "nodeType": "YulBlock", + "src": "5197:76:55", + "statements": [ + { + "nativeSrc": "5207:26:55", + "nodeType": "YulAssignment", + "src": "5207:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5219:9:55", + "nodeType": "YulIdentifier", + "src": "5219:9:55" + }, + { + "kind": "number", + "nativeSrc": "5230:2:55", + "nodeType": "YulLiteral", + "src": "5230:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5215:3:55", + "nodeType": "YulIdentifier", + "src": "5215:3:55" + }, + "nativeSrc": "5215:18:55", + "nodeType": "YulFunctionCall", + "src": "5215:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5207:4:55", + "nodeType": "YulIdentifier", + "src": "5207:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5249:9:55", + "nodeType": "YulIdentifier", + "src": "5249:9:55" + }, + { + "name": "value0", + "nativeSrc": "5260:6:55", + "nodeType": "YulIdentifier", + "src": "5260:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5242:6:55", + "nodeType": "YulIdentifier", + "src": "5242:6:55" + }, + "nativeSrc": "5242:25:55", + "nodeType": "YulFunctionCall", + "src": "5242:25:55" + }, + "nativeSrc": "5242:25:55", + "nodeType": "YulExpressionStatement", + "src": "5242:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5096:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5166:9:55", + "nodeType": "YulTypedName", + "src": "5166:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5177:6:55", + "nodeType": "YulTypedName", + "src": "5177:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5188:4:55", + "nodeType": "YulTypedName", + "src": "5188:4:55", + "type": "" + } + ], + "src": "5096:177:55" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := 1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(not(0), base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, and(exponent, 0xff))\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405180604001604052806007815260200166139d5b1b1554d160ca1b81525060405180604001604052806004815260200163139554d160e21b8152508160039081620000609190620002d0565b5060046200006f8282620002d0565b505050620000a93362000087620000af60201b60201c565b6200009490600a620004b1565b620000a390620f4240620004c9565b620000b4565b620004f9565b601290565b6001600160a01b038216620000e45760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f260008383620000f6565b5050565b6001600160a01b03831662000125578060026000828254620001199190620004e3565b90915550620001999050565b6001600160a01b038316600090815260208190526040902054818110156200017a5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000db565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001b757600280548290039055620001d6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021c91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025457607f821691505b6020821081036200027557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cb576000816000526020600020601f850160051c81016020861015620002a65750805b601f850160051c820191505b81811015620002c757828155600101620002b2565b5050505b505050565b81516001600160401b03811115620002ec57620002ec62000229565b6200030481620002fd84546200023f565b846200027b565b602080601f8311600181146200033c5760008415620003235750858301515b600019600386901b1c1916600185901b178555620002c7565b600085815260208120601f198616915b828110156200036d578886015182559484019460019091019084016200034c565b50858210156200038c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c57506001620004ab565b816200041b57506000620004ab565b81600181146200043457600281146200043f576200045f565b6001915050620004ab565b60ff8411156200045357620004536200039c565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000484575081810a620004ab565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b0290505b92915050565b6000620004c260ff841683620003fb565b9392505050565b8082028115828204841417620004ab57620004ab6200039c565b80820180821115620004ab57620004ab6200039c565b61071180620005096000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b4366004610590565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105ba565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f6565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c366004610590565b610233565b6100cd61014f366004610618565b610241565b6060600380546101639061064b565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064b565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064b565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610685565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a6565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a6565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a6565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a6565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106ba565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610685565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561055357858101830151858201604001528201610537565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058b57600080fd5b919050565b600080604083850312156105a357600080fd5b6105ac83610574565b946020939093013593505050565b6000806000606084860312156105cf57600080fd5b6105d884610574565b92506105e660208501610574565b9150604084013590509250925092565b60006020828403121561060857600080fd5b61061182610574565b9392505050565b6000806040838503121561062b57600080fd5b61063483610574565b915061064260208401610574565b90509250929050565b600181811c9082168061065f57607f821691505b60208210810361067f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea26469706673582212203a5dde0826537fcd09dba652e742dfd97d6b253ef5d2eab88d151f7b0fa35dda64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x139D5B1B1554D1 PUSH1 0xCA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x139554D1 PUSH1 0xE2 SHL DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x60 SWAP2 SWAP1 PUSH3 0x2D0 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x6F DUP3 DUP3 PUSH3 0x2D0 JUMP JUMPDEST POP POP POP PUSH3 0xA9 CALLER PUSH3 0x87 PUSH3 0xAF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x94 SWAP1 PUSH1 0xA PUSH3 0x4B1 JUMP JUMPDEST PUSH3 0xA3 SWAP1 PUSH3 0xF4240 PUSH3 0x4C9 JUMP JUMPDEST PUSH3 0xB4 JUMP JUMPDEST PUSH3 0x4F9 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xF2 PUSH1 0x0 DUP4 DUP4 PUSH3 0xF6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x125 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x119 SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH3 0x199 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH3 0x17A JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH3 0xDB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x1B7 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x21C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x254 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x275 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2A6 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2B2 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2EC JUMPI PUSH3 0x2EC PUSH3 0x229 JUMP JUMPDEST PUSH3 0x304 DUP2 PUSH3 0x2FD DUP5 SLOAD PUSH3 0x23F JUMP JUMPDEST DUP5 PUSH3 0x27B JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x33C JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x323 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2C7 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x36D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x34C JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x38C JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x3F3 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x3D7 JUMPI PUSH3 0x3D7 PUSH3 0x39C JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x3E5 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x3B7 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x40C JUMPI POP PUSH1 0x1 PUSH3 0x4AB JUMP JUMPDEST DUP2 PUSH3 0x41B JUMPI POP PUSH1 0x0 PUSH3 0x4AB JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x434 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x43F JUMPI PUSH3 0x45F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x4AB JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x453 JUMPI PUSH3 0x453 PUSH3 0x39C JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x4AB JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x484 JUMPI POP DUP2 DUP2 EXP PUSH3 0x4AB JUMP JUMPDEST PUSH3 0x490 DUP4 DUP4 PUSH3 0x3B2 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x4A7 JUMPI PUSH3 0x4A7 PUSH3 0x39C JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4C2 PUSH1 0xFF DUP5 AND DUP4 PUSH3 0x3FB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH3 0x4AB JUMPI PUSH3 0x4AB PUSH3 0x39C JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH3 0x4AB JUMPI PUSH3 0x4AB PUSH3 0x39C JUMP JUMPDEST PUSH2 0x711 DUP1 PUSH3 0x509 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x18F SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6BA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x537 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AC DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP5 PUSH2 0x574 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E6 PUSH1 0x20 DUP6 ADD PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x611 DUP3 PUSH2 0x574 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x634 DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH2 0x642 PUSH1 0x20 DUP5 ADD PUSH2 0x574 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE TSTORE 0xDE ADDMOD 0x26 MSTORE8 PUSH32 0xCD09DBA652E742DFD97D6B253EF5D2EAB88D151F7B0FA35DDA64736F6C634300 ADDMOD XOR STOP CALLER ", + "sourceMap": "183:135:53:-:0;;;215:101;;;;;;;;;;1896:113:22;;;;;;;;;;;;;-1:-1:-1;;;1896:113:22;;;;;;;;;;;;;;;;-1:-1:-1;;;1896:113:22;;;1970:5;1962;:13;;;;;;:::i;:::-;-1:-1:-1;1985:7:22;:17;1995:7;1985;:17;:::i;:::-;;1896:113;;264:45:53::1;270:10;298;:8;;;:10;;:::i;:::-;292:16;::::0;:2:::1;:16;:::i;:::-;282:26;::::0;:7:::1;:26;:::i;:::-;264:5;:45::i;:::-;183:135:::0;;3002:82:22;3075:2;;3002:82::o;7721:208::-;-1:-1:-1;;;;;7791:21:22;;7787:91;;7835:32;;-1:-1:-1;;;7835:32:22;;7864:1;7835:32;;;4554:51:55;4527:18;;7835:32:22;;;;;;;;7787:91;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:22;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:22;;-1:-1:-1;6356:540:22;;-1:-1:-1;;;;;6570:15:22;;6548:19;6570:15;;;;;;;;;;;6603:19;;;6599:115;;;6649:50;;-1:-1:-1;;;6649:50:22;;-1:-1:-1;;;;;4966:32:55;;6649:50:22;;;4948:51:55;5015:18;;;5008:34;;;5058:18;;;5051:34;;;4921:18;;6649:50:22;4746:345:55;6599:115:22;-1:-1:-1;;;;;6834:15:22;;:9;:15;;;;;;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:22;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:22;;:9;:13;;;;;;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:22;7355:4;-1:-1:-1;;;;;7346:25:22;;7365:5;7346:25;;;;5242::55;;5230:2;5215:18;;5096:177;7346:25:22;;;;;;;;6271:1107;;;:::o;14:127:55:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:55;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:55;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:55;;;2571:26;2522:89;-1:-1:-1;;1333:1:55;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:55;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:55;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:55;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:55:o;2726:127::-;2787:10;2782:3;2778:20;2775:1;2768:31;2818:4;2815:1;2808:15;2842:4;2839:1;2832:15;2858:416;2947:1;2984:5;2947:1;2998:270;3019:7;3009:8;3006:21;2998:270;;;3078:4;3074:1;3070:6;3066:17;3060:4;3057:27;3054:53;;;3087:18;;:::i;:::-;3137:7;3127:8;3123:22;3120:55;;;3157:16;;;;3120:55;3236:22;;;;3196:15;;;;2998:270;;;3002:3;2858:416;;;;;:::o;3279:806::-;3328:5;3358:8;3348:80;;-1:-1:-1;3399:1:55;3413:5;;3348:80;3447:4;3437:76;;-1:-1:-1;3484:1:55;3498:5;;3437:76;3529:4;3547:1;3542:59;;;;3615:1;3610:130;;;;3522:218;;3542:59;3572:1;3563:10;;3586:5;;;3610:130;3647:3;3637:8;3634:17;3631:43;;;3654:18;;:::i;:::-;-1:-1:-1;;3710:1:55;3696:16;;3725:5;;3522:218;;3824:2;3814:8;3811:16;3805:3;3799:4;3796:13;3792:36;3786:2;3776:8;3773:16;3768:2;3762:4;3759:12;3755:35;3752:77;3749:159;;;-1:-1:-1;3861:19:55;;;3893:5;;3749:159;3940:34;3965:8;3959:4;3940:34;:::i;:::-;4010:6;4006:1;4002:6;3998:19;3989:7;3986:32;3983:58;;;4021:18;;:::i;:::-;4059:20;;-1:-1:-1;3279:806:55;;;;;:::o;4090:140::-;4148:5;4177:47;4218:4;4208:8;4204:19;4198:4;4177:47;:::i;:::-;4168:56;4090:140;-1:-1:-1;;;4090:140:55:o;4235:168::-;4308:9;;;4339;;4356:15;;;4350:22;;4336:37;4326:71;;4377:18;;:::i;4616:125::-;4681:9;;;4702:10;;;4699:36;;;4715:18;;:::i;5096:177::-;183:135:53;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_4258": { + "entryPoint": 620, + "id": 4258, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_4318": { + "entryPoint": 825, + "id": 4318, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_msgSender_5257": { + "entryPoint": null, + "id": 5257, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_spendAllowance_4366": { + "entryPoint": 638, + "id": 4366, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_4097": { + "entryPoint": 730, + "id": 4097, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_4174": { + "entryPoint": 1038, + "id": 4174, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@allowance_3994": { + "entryPoint": 577, + "id": 3994, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_4018": { + "entryPoint": 486, + "id": 4018, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_3953": { + "entryPoint": null, + "id": 3953, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_3931": { + "entryPoint": null, + "id": 3931, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@name_3913": { + "entryPoint": 340, + "id": 3913, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@symbol_3922": { + "entryPoint": 548, + "id": 3922, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_3940": { + "entryPoint": null, + "id": 3940, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_4050": { + "entryPoint": 512, + "id": 4050, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_3977": { + "entryPoint": 563, + "id": 3977, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 1396, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 1526, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 1560, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 1466, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 1424, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 1702, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 1669, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 1317, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1722, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 1611, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:3523:55", + "nodeType": "YulBlock", + "src": "0:3523:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "135:427:55", + "nodeType": "YulBlock", + "src": "135:427:55", + "statements": [ + { + "nativeSrc": "145:12:55", + "nodeType": "YulVariableDeclaration", + "src": "145:12:55", + "value": { + "kind": "number", + "nativeSrc": "155:2:55", + "nodeType": "YulLiteral", + "src": "155:2:55", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "149:2:55", + "nodeType": "YulTypedName", + "src": "149:2:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "173:9:55", + "nodeType": "YulIdentifier", + "src": "173:9:55" + }, + { + "kind": "number", + "nativeSrc": "184:2:55", + "nodeType": "YulLiteral", + "src": "184:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "166:6:55", + "nodeType": "YulIdentifier", + "src": "166:6:55" + }, + "nativeSrc": "166:21:55", + "nodeType": "YulFunctionCall", + "src": "166:21:55" + }, + "nativeSrc": "166:21:55", + "nodeType": "YulExpressionStatement", + "src": "166:21:55" + }, + { + "nativeSrc": "196:27:55", + "nodeType": "YulVariableDeclaration", + "src": "196:27:55", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "216:6:55", + "nodeType": "YulIdentifier", + "src": "216:6:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "210:5:55", + "nodeType": "YulIdentifier", + "src": "210:5:55" + }, + "nativeSrc": "210:13:55", + "nodeType": "YulFunctionCall", + "src": "210:13:55" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "200:6:55", + "nodeType": "YulTypedName", + "src": "200:6:55", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "243:9:55", + "nodeType": "YulIdentifier", + "src": "243:9:55" + }, + { + "kind": "number", + "nativeSrc": "254:2:55", + "nodeType": "YulLiteral", + "src": "254:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "239:3:55", + "nodeType": "YulIdentifier", + "src": "239:3:55" + }, + "nativeSrc": "239:18:55", + "nodeType": "YulFunctionCall", + "src": "239:18:55" + }, + { + "name": "length", + "nativeSrc": "259:6:55", + "nodeType": "YulIdentifier", + "src": "259:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "232:6:55", + "nodeType": "YulIdentifier", + "src": "232:6:55" + }, + "nativeSrc": "232:34:55", + "nodeType": "YulFunctionCall", + "src": "232:34:55" + }, + "nativeSrc": "232:34:55", + "nodeType": "YulExpressionStatement", + "src": "232:34:55" + }, + { + "nativeSrc": "275:10:55", + "nodeType": "YulVariableDeclaration", + "src": "275:10:55", + "value": { + "kind": "number", + "nativeSrc": "284:1:55", + "nodeType": "YulLiteral", + "src": "284:1:55", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "279:1:55", + "nodeType": "YulTypedName", + "src": "279:1:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "344:90:55", + "nodeType": "YulBlock", + "src": "344:90:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "373:9:55", + "nodeType": "YulIdentifier", + "src": "373:9:55" + }, + { + "name": "i", + "nativeSrc": "384:1:55", + "nodeType": "YulIdentifier", + "src": "384:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "369:3:55", + "nodeType": "YulIdentifier", + "src": "369:3:55" + }, + "nativeSrc": "369:17:55", + "nodeType": "YulFunctionCall", + "src": "369:17:55" + }, + { + "kind": "number", + "nativeSrc": "388:2:55", + "nodeType": "YulLiteral", + "src": "388:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "365:3:55", + "nodeType": "YulIdentifier", + "src": "365:3:55" + }, + "nativeSrc": "365:26:55", + "nodeType": "YulFunctionCall", + "src": "365:26:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "407:6:55", + "nodeType": "YulIdentifier", + "src": "407:6:55" + }, + { + "name": "i", + "nativeSrc": "415:1:55", + "nodeType": "YulIdentifier", + "src": "415:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "403:3:55", + "nodeType": "YulIdentifier", + "src": "403:3:55" + }, + "nativeSrc": "403:14:55", + "nodeType": "YulFunctionCall", + "src": "403:14:55" + }, + { + "name": "_1", + "nativeSrc": "419:2:55", + "nodeType": "YulIdentifier", + "src": "419:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:55", + "nodeType": "YulIdentifier", + "src": "399:3:55" + }, + "nativeSrc": "399:23:55", + "nodeType": "YulFunctionCall", + "src": "399:23:55" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "393:5:55", + "nodeType": "YulIdentifier", + "src": "393:5:55" + }, + "nativeSrc": "393:30:55", + "nodeType": "YulFunctionCall", + "src": "393:30:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "358:6:55", + "nodeType": "YulIdentifier", + "src": "358:6:55" + }, + "nativeSrc": "358:66:55", + "nodeType": "YulFunctionCall", + "src": "358:66:55" + }, + "nativeSrc": "358:66:55", + "nodeType": "YulExpressionStatement", + "src": "358:66:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "305:1:55", + "nodeType": "YulIdentifier", + "src": "305:1:55" + }, + { + "name": "length", + "nativeSrc": "308:6:55", + "nodeType": "YulIdentifier", + "src": "308:6:55" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "302:2:55", + "nodeType": "YulIdentifier", + "src": "302:2:55" + }, + "nativeSrc": "302:13:55", + "nodeType": "YulFunctionCall", + "src": "302:13:55" + }, + "nativeSrc": "294:140:55", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "316:19:55", + "nodeType": "YulBlock", + "src": "316:19:55", + "statements": [ + { + "nativeSrc": "318:15:55", + "nodeType": "YulAssignment", + "src": "318:15:55", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "327:1:55", + "nodeType": "YulIdentifier", + "src": "327:1:55" + }, + { + "name": "_1", + "nativeSrc": "330:2:55", + "nodeType": "YulIdentifier", + "src": "330:2:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "323:3:55", + "nodeType": "YulIdentifier", + "src": "323:3:55" + }, + "nativeSrc": "323:10:55", + "nodeType": "YulFunctionCall", + "src": "323:10:55" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "318:1:55", + "nodeType": "YulIdentifier", + "src": "318:1:55" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "298:3:55", + "nodeType": "YulBlock", + "src": "298:3:55", + "statements": [] + }, + "src": "294:140:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "458:9:55", + "nodeType": "YulIdentifier", + "src": "458:9:55" + }, + { + "name": "length", + "nativeSrc": "469:6:55", + "nodeType": "YulIdentifier", + "src": "469:6:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "454:3:55", + "nodeType": "YulIdentifier", + "src": "454:3:55" + }, + "nativeSrc": "454:22:55", + "nodeType": "YulFunctionCall", + "src": "454:22:55" + }, + { + "kind": "number", + "nativeSrc": "478:2:55", + "nodeType": "YulLiteral", + "src": "478:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "450:3:55", + "nodeType": "YulIdentifier", + "src": "450:3:55" + }, + "nativeSrc": "450:31:55", + "nodeType": "YulFunctionCall", + "src": "450:31:55" + }, + { + "kind": "number", + "nativeSrc": "483:1:55", + "nodeType": "YulLiteral", + "src": "483:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "443:6:55", + "nodeType": "YulIdentifier", + "src": "443:6:55" + }, + "nativeSrc": "443:42:55", + "nodeType": "YulFunctionCall", + "src": "443:42:55" + }, + "nativeSrc": "443:42:55", + "nodeType": "YulExpressionStatement", + "src": "443:42:55" + }, + { + "nativeSrc": "494:62:55", + "nodeType": "YulAssignment", + "src": "494:62:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "510:9:55", + "nodeType": "YulIdentifier", + "src": "510:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "529:6:55", + "nodeType": "YulIdentifier", + "src": "529:6:55" + }, + { + "kind": "number", + "nativeSrc": "537:2:55", + "nodeType": "YulLiteral", + "src": "537:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "525:3:55", + "nodeType": "YulIdentifier", + "src": "525:3:55" + }, + "nativeSrc": "525:15:55", + "nodeType": "YulFunctionCall", + "src": "525:15:55" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "546:2:55", + "nodeType": "YulLiteral", + "src": "546:2:55", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "542:3:55", + "nodeType": "YulIdentifier", + "src": "542:3:55" + }, + "nativeSrc": "542:7:55", + "nodeType": "YulFunctionCall", + "src": "542:7:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "521:3:55", + "nodeType": "YulIdentifier", + "src": "521:3:55" + }, + "nativeSrc": "521:29:55", + "nodeType": "YulFunctionCall", + "src": "521:29:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "506:3:55", + "nodeType": "YulIdentifier", + "src": "506:3:55" + }, + "nativeSrc": "506:45:55", + "nodeType": "YulFunctionCall", + "src": "506:45:55" + }, + { + "kind": "number", + "nativeSrc": "553:2:55", + "nodeType": "YulLiteral", + "src": "553:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "502:3:55", + "nodeType": "YulIdentifier", + "src": "502:3:55" + }, + "nativeSrc": "502:54:55", + "nodeType": "YulFunctionCall", + "src": "502:54:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "494:4:55", + "nodeType": "YulIdentifier", + "src": "494:4:55" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "14:548:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "104:9:55", + "nodeType": "YulTypedName", + "src": "104:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "115:6:55", + "nodeType": "YulTypedName", + "src": "115:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "126:4:55", + "nodeType": "YulTypedName", + "src": "126:4:55", + "type": "" + } + ], + "src": "14:548:55" + }, + { + "body": { + "nativeSrc": "616:124:55", + "nodeType": "YulBlock", + "src": "616:124:55", + "statements": [ + { + "nativeSrc": "626:29:55", + "nodeType": "YulAssignment", + "src": "626:29:55", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "648:6:55", + "nodeType": "YulIdentifier", + "src": "648:6:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "635:12:55", + "nodeType": "YulIdentifier", + "src": "635:12:55" + }, + "nativeSrc": "635:20:55", + "nodeType": "YulFunctionCall", + "src": "635:20:55" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "626:5:55", + "nodeType": "YulIdentifier", + "src": "626:5:55" + } + ] + }, + { + "body": { + "nativeSrc": "718:16:55", + "nodeType": "YulBlock", + "src": "718:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "727:1:55", + "nodeType": "YulLiteral", + "src": "727:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "730:1:55", + "nodeType": "YulLiteral", + "src": "730:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "720:6:55", + "nodeType": "YulIdentifier", + "src": "720:6:55" + }, + "nativeSrc": "720:12:55", + "nodeType": "YulFunctionCall", + "src": "720:12:55" + }, + "nativeSrc": "720:12:55", + "nodeType": "YulExpressionStatement", + "src": "720:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "677:5:55", + "nodeType": "YulIdentifier", + "src": "677:5:55" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "688:5:55", + "nodeType": "YulIdentifier", + "src": "688:5:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "703:3:55", + "nodeType": "YulLiteral", + "src": "703:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "708:1:55", + "nodeType": "YulLiteral", + "src": "708:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "699:3:55", + "nodeType": "YulIdentifier", + "src": "699:3:55" + }, + "nativeSrc": "699:11:55", + "nodeType": "YulFunctionCall", + "src": "699:11:55" + }, + { + "kind": "number", + "nativeSrc": "712:1:55", + "nodeType": "YulLiteral", + "src": "712:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "695:3:55", + "nodeType": "YulIdentifier", + "src": "695:3:55" + }, + "nativeSrc": "695:19:55", + "nodeType": "YulFunctionCall", + "src": "695:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "684:3:55", + "nodeType": "YulIdentifier", + "src": "684:3:55" + }, + "nativeSrc": "684:31:55", + "nodeType": "YulFunctionCall", + "src": "684:31:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "674:2:55", + "nodeType": "YulIdentifier", + "src": "674:2:55" + }, + "nativeSrc": "674:42:55", + "nodeType": "YulFunctionCall", + "src": "674:42:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "667:6:55", + "nodeType": "YulIdentifier", + "src": "667:6:55" + }, + "nativeSrc": "667:50:55", + "nodeType": "YulFunctionCall", + "src": "667:50:55" + }, + "nativeSrc": "664:70:55", + "nodeType": "YulIf", + "src": "664:70:55" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "567:173:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "595:6:55", + "nodeType": "YulTypedName", + "src": "595:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "606:5:55", + "nodeType": "YulTypedName", + "src": "606:5:55", + "type": "" + } + ], + "src": "567:173:55" + }, + { + "body": { + "nativeSrc": "832:167:55", + "nodeType": "YulBlock", + "src": "832:167:55", + "statements": [ + { + "body": { + "nativeSrc": "878:16:55", + "nodeType": "YulBlock", + "src": "878:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "887:1:55", + "nodeType": "YulLiteral", + "src": "887:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "890:1:55", + "nodeType": "YulLiteral", + "src": "890:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "880:6:55", + "nodeType": "YulIdentifier", + "src": "880:6:55" + }, + "nativeSrc": "880:12:55", + "nodeType": "YulFunctionCall", + "src": "880:12:55" + }, + "nativeSrc": "880:12:55", + "nodeType": "YulExpressionStatement", + "src": "880:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "853:7:55", + "nodeType": "YulIdentifier", + "src": "853:7:55" + }, + { + "name": "headStart", + "nativeSrc": "862:9:55", + "nodeType": "YulIdentifier", + "src": "862:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "849:3:55", + "nodeType": "YulIdentifier", + "src": "849:3:55" + }, + "nativeSrc": "849:23:55", + "nodeType": "YulFunctionCall", + "src": "849:23:55" + }, + { + "kind": "number", + "nativeSrc": "874:2:55", + "nodeType": "YulLiteral", + "src": "874:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "845:3:55", + "nodeType": "YulIdentifier", + "src": "845:3:55" + }, + "nativeSrc": "845:32:55", + "nodeType": "YulFunctionCall", + "src": "845:32:55" + }, + "nativeSrc": "842:52:55", + "nodeType": "YulIf", + "src": "842:52:55" + }, + { + "nativeSrc": "903:39:55", + "nodeType": "YulAssignment", + "src": "903:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "932:9:55", + "nodeType": "YulIdentifier", + "src": "932:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "913:18:55", + "nodeType": "YulIdentifier", + "src": "913:18:55" + }, + "nativeSrc": "913:29:55", + "nodeType": "YulFunctionCall", + "src": "913:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "903:6:55", + "nodeType": "YulIdentifier", + "src": "903:6:55" + } + ] + }, + { + "nativeSrc": "951:42:55", + "nodeType": "YulAssignment", + "src": "951:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "978:9:55", + "nodeType": "YulIdentifier", + "src": "978:9:55" + }, + { + "kind": "number", + "nativeSrc": "989:2:55", + "nodeType": "YulLiteral", + "src": "989:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "974:3:55", + "nodeType": "YulIdentifier", + "src": "974:3:55" + }, + "nativeSrc": "974:18:55", + "nodeType": "YulFunctionCall", + "src": "974:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "961:12:55", + "nodeType": "YulIdentifier", + "src": "961:12:55" + }, + "nativeSrc": "961:32:55", + "nodeType": "YulFunctionCall", + "src": "961:32:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "951:6:55", + "nodeType": "YulIdentifier", + "src": "951:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "745:254:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "790:9:55", + "nodeType": "YulTypedName", + "src": "790:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "801:7:55", + "nodeType": "YulTypedName", + "src": "801:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "813:6:55", + "nodeType": "YulTypedName", + "src": "813:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "821:6:55", + "nodeType": "YulTypedName", + "src": "821:6:55", + "type": "" + } + ], + "src": "745:254:55" + }, + { + "body": { + "nativeSrc": "1099:92:55", + "nodeType": "YulBlock", + "src": "1099:92:55", + "statements": [ + { + "nativeSrc": "1109:26:55", + "nodeType": "YulAssignment", + "src": "1109:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1121:9:55", + "nodeType": "YulIdentifier", + "src": "1121:9:55" + }, + { + "kind": "number", + "nativeSrc": "1132:2:55", + "nodeType": "YulLiteral", + "src": "1132:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1117:3:55", + "nodeType": "YulIdentifier", + "src": "1117:3:55" + }, + "nativeSrc": "1117:18:55", + "nodeType": "YulFunctionCall", + "src": "1117:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1109:4:55", + "nodeType": "YulIdentifier", + "src": "1109:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1151:9:55", + "nodeType": "YulIdentifier", + "src": "1151:9:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1176:6:55", + "nodeType": "YulIdentifier", + "src": "1176:6:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1169:6:55", + "nodeType": "YulIdentifier", + "src": "1169:6:55" + }, + "nativeSrc": "1169:14:55", + "nodeType": "YulFunctionCall", + "src": "1169:14:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1162:6:55", + "nodeType": "YulIdentifier", + "src": "1162:6:55" + }, + "nativeSrc": "1162:22:55", + "nodeType": "YulFunctionCall", + "src": "1162:22:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1144:6:55", + "nodeType": "YulIdentifier", + "src": "1144:6:55" + }, + "nativeSrc": "1144:41:55", + "nodeType": "YulFunctionCall", + "src": "1144:41:55" + }, + "nativeSrc": "1144:41:55", + "nodeType": "YulExpressionStatement", + "src": "1144:41:55" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "1004:187:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1068:9:55", + "nodeType": "YulTypedName", + "src": "1068:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1079:6:55", + "nodeType": "YulTypedName", + "src": "1079:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1090:4:55", + "nodeType": "YulTypedName", + "src": "1090:4:55", + "type": "" + } + ], + "src": "1004:187:55" + }, + { + "body": { + "nativeSrc": "1297:76:55", + "nodeType": "YulBlock", + "src": "1297:76:55", + "statements": [ + { + "nativeSrc": "1307:26:55", + "nodeType": "YulAssignment", + "src": "1307:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1319:9:55", + "nodeType": "YulIdentifier", + "src": "1319:9:55" + }, + { + "kind": "number", + "nativeSrc": "1330:2:55", + "nodeType": "YulLiteral", + "src": "1330:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1315:3:55", + "nodeType": "YulIdentifier", + "src": "1315:3:55" + }, + "nativeSrc": "1315:18:55", + "nodeType": "YulFunctionCall", + "src": "1315:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1307:4:55", + "nodeType": "YulIdentifier", + "src": "1307:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1349:9:55", + "nodeType": "YulIdentifier", + "src": "1349:9:55" + }, + { + "name": "value0", + "nativeSrc": "1360:6:55", + "nodeType": "YulIdentifier", + "src": "1360:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1342:6:55", + "nodeType": "YulIdentifier", + "src": "1342:6:55" + }, + "nativeSrc": "1342:25:55", + "nodeType": "YulFunctionCall", + "src": "1342:25:55" + }, + "nativeSrc": "1342:25:55", + "nodeType": "YulExpressionStatement", + "src": "1342:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "1196:177:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1266:9:55", + "nodeType": "YulTypedName", + "src": "1266:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1277:6:55", + "nodeType": "YulTypedName", + "src": "1277:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1288:4:55", + "nodeType": "YulTypedName", + "src": "1288:4:55", + "type": "" + } + ], + "src": "1196:177:55" + }, + { + "body": { + "nativeSrc": "1482:224:55", + "nodeType": "YulBlock", + "src": "1482:224:55", + "statements": [ + { + "body": { + "nativeSrc": "1528:16:55", + "nodeType": "YulBlock", + "src": "1528:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1537:1:55", + "nodeType": "YulLiteral", + "src": "1537:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1540:1:55", + "nodeType": "YulLiteral", + "src": "1540:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1530:6:55", + "nodeType": "YulIdentifier", + "src": "1530:6:55" + }, + "nativeSrc": "1530:12:55", + "nodeType": "YulFunctionCall", + "src": "1530:12:55" + }, + "nativeSrc": "1530:12:55", + "nodeType": "YulExpressionStatement", + "src": "1530:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1503:7:55", + "nodeType": "YulIdentifier", + "src": "1503:7:55" + }, + { + "name": "headStart", + "nativeSrc": "1512:9:55", + "nodeType": "YulIdentifier", + "src": "1512:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1499:3:55", + "nodeType": "YulIdentifier", + "src": "1499:3:55" + }, + "nativeSrc": "1499:23:55", + "nodeType": "YulFunctionCall", + "src": "1499:23:55" + }, + { + "kind": "number", + "nativeSrc": "1524:2:55", + "nodeType": "YulLiteral", + "src": "1524:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1495:3:55", + "nodeType": "YulIdentifier", + "src": "1495:3:55" + }, + "nativeSrc": "1495:32:55", + "nodeType": "YulFunctionCall", + "src": "1495:32:55" + }, + "nativeSrc": "1492:52:55", + "nodeType": "YulIf", + "src": "1492:52:55" + }, + { + "nativeSrc": "1553:39:55", + "nodeType": "YulAssignment", + "src": "1553:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1582:9:55", + "nodeType": "YulIdentifier", + "src": "1582:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1563:18:55", + "nodeType": "YulIdentifier", + "src": "1563:18:55" + }, + "nativeSrc": "1563:29:55", + "nodeType": "YulFunctionCall", + "src": "1563:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1553:6:55", + "nodeType": "YulIdentifier", + "src": "1553:6:55" + } + ] + }, + { + "nativeSrc": "1601:48:55", + "nodeType": "YulAssignment", + "src": "1601:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1634:9:55", + "nodeType": "YulIdentifier", + "src": "1634:9:55" + }, + { + "kind": "number", + "nativeSrc": "1645:2:55", + "nodeType": "YulLiteral", + "src": "1645:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1630:3:55", + "nodeType": "YulIdentifier", + "src": "1630:3:55" + }, + "nativeSrc": "1630:18:55", + "nodeType": "YulFunctionCall", + "src": "1630:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1611:18:55", + "nodeType": "YulIdentifier", + "src": "1611:18:55" + }, + "nativeSrc": "1611:38:55", + "nodeType": "YulFunctionCall", + "src": "1611:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1601:6:55", + "nodeType": "YulIdentifier", + "src": "1601:6:55" + } + ] + }, + { + "nativeSrc": "1658:42:55", + "nodeType": "YulAssignment", + "src": "1658:42:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1685:9:55", + "nodeType": "YulIdentifier", + "src": "1685:9:55" + }, + { + "kind": "number", + "nativeSrc": "1696:2:55", + "nodeType": "YulLiteral", + "src": "1696:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1681:3:55", + "nodeType": "YulIdentifier", + "src": "1681:3:55" + }, + "nativeSrc": "1681:18:55", + "nodeType": "YulFunctionCall", + "src": "1681:18:55" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1668:12:55", + "nodeType": "YulIdentifier", + "src": "1668:12:55" + }, + "nativeSrc": "1668:32:55", + "nodeType": "YulFunctionCall", + "src": "1668:32:55" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1658:6:55", + "nodeType": "YulIdentifier", + "src": "1658:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "1378:328:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1432:9:55", + "nodeType": "YulTypedName", + "src": "1432:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1443:7:55", + "nodeType": "YulTypedName", + "src": "1443:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1455:6:55", + "nodeType": "YulTypedName", + "src": "1455:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1463:6:55", + "nodeType": "YulTypedName", + "src": "1463:6:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "1471:6:55", + "nodeType": "YulTypedName", + "src": "1471:6:55", + "type": "" + } + ], + "src": "1378:328:55" + }, + { + "body": { + "nativeSrc": "1808:87:55", + "nodeType": "YulBlock", + "src": "1808:87:55", + "statements": [ + { + "nativeSrc": "1818:26:55", + "nodeType": "YulAssignment", + "src": "1818:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1830:9:55", + "nodeType": "YulIdentifier", + "src": "1830:9:55" + }, + { + "kind": "number", + "nativeSrc": "1841:2:55", + "nodeType": "YulLiteral", + "src": "1841:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1826:3:55", + "nodeType": "YulIdentifier", + "src": "1826:3:55" + }, + "nativeSrc": "1826:18:55", + "nodeType": "YulFunctionCall", + "src": "1826:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1818:4:55", + "nodeType": "YulIdentifier", + "src": "1818:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1860:9:55", + "nodeType": "YulIdentifier", + "src": "1860:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1875:6:55", + "nodeType": "YulIdentifier", + "src": "1875:6:55" + }, + { + "kind": "number", + "nativeSrc": "1883:4:55", + "nodeType": "YulLiteral", + "src": "1883:4:55", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1871:3:55", + "nodeType": "YulIdentifier", + "src": "1871:3:55" + }, + "nativeSrc": "1871:17:55", + "nodeType": "YulFunctionCall", + "src": "1871:17:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1853:6:55", + "nodeType": "YulIdentifier", + "src": "1853:6:55" + }, + "nativeSrc": "1853:36:55", + "nodeType": "YulFunctionCall", + "src": "1853:36:55" + }, + "nativeSrc": "1853:36:55", + "nodeType": "YulExpressionStatement", + "src": "1853:36:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nativeSrc": "1711:184:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1777:9:55", + "nodeType": "YulTypedName", + "src": "1777:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1788:6:55", + "nodeType": "YulTypedName", + "src": "1788:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1799:4:55", + "nodeType": "YulTypedName", + "src": "1799:4:55", + "type": "" + } + ], + "src": "1711:184:55" + }, + { + "body": { + "nativeSrc": "1970:116:55", + "nodeType": "YulBlock", + "src": "1970:116:55", + "statements": [ + { + "body": { + "nativeSrc": "2016:16:55", + "nodeType": "YulBlock", + "src": "2016:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2025:1:55", + "nodeType": "YulLiteral", + "src": "2025:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2028:1:55", + "nodeType": "YulLiteral", + "src": "2028:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2018:6:55", + "nodeType": "YulIdentifier", + "src": "2018:6:55" + }, + "nativeSrc": "2018:12:55", + "nodeType": "YulFunctionCall", + "src": "2018:12:55" + }, + "nativeSrc": "2018:12:55", + "nodeType": "YulExpressionStatement", + "src": "2018:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1991:7:55", + "nodeType": "YulIdentifier", + "src": "1991:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2000:9:55", + "nodeType": "YulIdentifier", + "src": "2000:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1987:3:55", + "nodeType": "YulIdentifier", + "src": "1987:3:55" + }, + "nativeSrc": "1987:23:55", + "nodeType": "YulFunctionCall", + "src": "1987:23:55" + }, + { + "kind": "number", + "nativeSrc": "2012:2:55", + "nodeType": "YulLiteral", + "src": "2012:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1983:3:55", + "nodeType": "YulIdentifier", + "src": "1983:3:55" + }, + "nativeSrc": "1983:32:55", + "nodeType": "YulFunctionCall", + "src": "1983:32:55" + }, + "nativeSrc": "1980:52:55", + "nodeType": "YulIf", + "src": "1980:52:55" + }, + { + "nativeSrc": "2041:39:55", + "nodeType": "YulAssignment", + "src": "2041:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2070:9:55", + "nodeType": "YulIdentifier", + "src": "2070:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2051:18:55", + "nodeType": "YulIdentifier", + "src": "2051:18:55" + }, + "nativeSrc": "2051:29:55", + "nodeType": "YulFunctionCall", + "src": "2051:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2041:6:55", + "nodeType": "YulIdentifier", + "src": "2041:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1900:186:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1936:9:55", + "nodeType": "YulTypedName", + "src": "1936:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1947:7:55", + "nodeType": "YulTypedName", + "src": "1947:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1959:6:55", + "nodeType": "YulTypedName", + "src": "1959:6:55", + "type": "" + } + ], + "src": "1900:186:55" + }, + { + "body": { + "nativeSrc": "2178:173:55", + "nodeType": "YulBlock", + "src": "2178:173:55", + "statements": [ + { + "body": { + "nativeSrc": "2224:16:55", + "nodeType": "YulBlock", + "src": "2224:16:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2233:1:55", + "nodeType": "YulLiteral", + "src": "2233:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2236:1:55", + "nodeType": "YulLiteral", + "src": "2236:1:55", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2226:6:55", + "nodeType": "YulIdentifier", + "src": "2226:6:55" + }, + "nativeSrc": "2226:12:55", + "nodeType": "YulFunctionCall", + "src": "2226:12:55" + }, + "nativeSrc": "2226:12:55", + "nodeType": "YulExpressionStatement", + "src": "2226:12:55" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2199:7:55", + "nodeType": "YulIdentifier", + "src": "2199:7:55" + }, + { + "name": "headStart", + "nativeSrc": "2208:9:55", + "nodeType": "YulIdentifier", + "src": "2208:9:55" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2195:3:55", + "nodeType": "YulIdentifier", + "src": "2195:3:55" + }, + "nativeSrc": "2195:23:55", + "nodeType": "YulFunctionCall", + "src": "2195:23:55" + }, + { + "kind": "number", + "nativeSrc": "2220:2:55", + "nodeType": "YulLiteral", + "src": "2220:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2191:3:55", + "nodeType": "YulIdentifier", + "src": "2191:3:55" + }, + "nativeSrc": "2191:32:55", + "nodeType": "YulFunctionCall", + "src": "2191:32:55" + }, + "nativeSrc": "2188:52:55", + "nodeType": "YulIf", + "src": "2188:52:55" + }, + { + "nativeSrc": "2249:39:55", + "nodeType": "YulAssignment", + "src": "2249:39:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2278:9:55", + "nodeType": "YulIdentifier", + "src": "2278:9:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2259:18:55", + "nodeType": "YulIdentifier", + "src": "2259:18:55" + }, + "nativeSrc": "2259:29:55", + "nodeType": "YulFunctionCall", + "src": "2259:29:55" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2249:6:55", + "nodeType": "YulIdentifier", + "src": "2249:6:55" + } + ] + }, + { + "nativeSrc": "2297:48:55", + "nodeType": "YulAssignment", + "src": "2297:48:55", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2330:9:55", + "nodeType": "YulIdentifier", + "src": "2330:9:55" + }, + { + "kind": "number", + "nativeSrc": "2341:2:55", + "nodeType": "YulLiteral", + "src": "2341:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2326:3:55", + "nodeType": "YulIdentifier", + "src": "2326:3:55" + }, + "nativeSrc": "2326:18:55", + "nodeType": "YulFunctionCall", + "src": "2326:18:55" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2307:18:55", + "nodeType": "YulIdentifier", + "src": "2307:18:55" + }, + "nativeSrc": "2307:38:55", + "nodeType": "YulFunctionCall", + "src": "2307:38:55" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2297:6:55", + "nodeType": "YulIdentifier", + "src": "2297:6:55" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "2091:260:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2136:9:55", + "nodeType": "YulTypedName", + "src": "2136:9:55", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2147:7:55", + "nodeType": "YulTypedName", + "src": "2147:7:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2159:6:55", + "nodeType": "YulTypedName", + "src": "2159:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2167:6:55", + "nodeType": "YulTypedName", + "src": "2167:6:55", + "type": "" + } + ], + "src": "2091:260:55" + }, + { + "body": { + "nativeSrc": "2411:325:55", + "nodeType": "YulBlock", + "src": "2411:325:55", + "statements": [ + { + "nativeSrc": "2421:22:55", + "nodeType": "YulAssignment", + "src": "2421:22:55", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2435:1:55", + "nodeType": "YulLiteral", + "src": "2435:1:55", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "2438:4:55", + "nodeType": "YulIdentifier", + "src": "2438:4:55" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2431:3:55", + "nodeType": "YulIdentifier", + "src": "2431:3:55" + }, + "nativeSrc": "2431:12:55", + "nodeType": "YulFunctionCall", + "src": "2431:12:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "2421:6:55", + "nodeType": "YulIdentifier", + "src": "2421:6:55" + } + ] + }, + { + "nativeSrc": "2452:38:55", + "nodeType": "YulVariableDeclaration", + "src": "2452:38:55", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "2482:4:55", + "nodeType": "YulIdentifier", + "src": "2482:4:55" + }, + { + "kind": "number", + "nativeSrc": "2488:1:55", + "nodeType": "YulLiteral", + "src": "2488:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2478:3:55", + "nodeType": "YulIdentifier", + "src": "2478:3:55" + }, + "nativeSrc": "2478:12:55", + "nodeType": "YulFunctionCall", + "src": "2478:12:55" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2456:18:55", + "nodeType": "YulTypedName", + "src": "2456:18:55", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2529:31:55", + "nodeType": "YulBlock", + "src": "2529:31:55", + "statements": [ + { + "nativeSrc": "2531:27:55", + "nodeType": "YulAssignment", + "src": "2531:27:55", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "2545:6:55", + "nodeType": "YulIdentifier", + "src": "2545:6:55" + }, + { + "kind": "number", + "nativeSrc": "2553:4:55", + "nodeType": "YulLiteral", + "src": "2553:4:55", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2541:3:55", + "nodeType": "YulIdentifier", + "src": "2541:3:55" + }, + "nativeSrc": "2541:17:55", + "nodeType": "YulFunctionCall", + "src": "2541:17:55" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "2531:6:55", + "nodeType": "YulIdentifier", + "src": "2531:6:55" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2509:18:55", + "nodeType": "YulIdentifier", + "src": "2509:18:55" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2502:6:55", + "nodeType": "YulIdentifier", + "src": "2502:6:55" + }, + "nativeSrc": "2502:26:55", + "nodeType": "YulFunctionCall", + "src": "2502:26:55" + }, + "nativeSrc": "2499:61:55", + "nodeType": "YulIf", + "src": "2499:61:55" + }, + { + "body": { + "nativeSrc": "2619:111:55", + "nodeType": "YulBlock", + "src": "2619:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2640:1:55", + "nodeType": "YulLiteral", + "src": "2640:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2647:3:55", + "nodeType": "YulLiteral", + "src": "2647:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2652:10:55", + "nodeType": "YulLiteral", + "src": "2652:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2643:3:55", + "nodeType": "YulIdentifier", + "src": "2643:3:55" + }, + "nativeSrc": "2643:20:55", + "nodeType": "YulFunctionCall", + "src": "2643:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2633:6:55", + "nodeType": "YulIdentifier", + "src": "2633:6:55" + }, + "nativeSrc": "2633:31:55", + "nodeType": "YulFunctionCall", + "src": "2633:31:55" + }, + "nativeSrc": "2633:31:55", + "nodeType": "YulExpressionStatement", + "src": "2633:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2684:1:55", + "nodeType": "YulLiteral", + "src": "2684:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2687:4:55", + "nodeType": "YulLiteral", + "src": "2687:4:55", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2677:6:55", + "nodeType": "YulIdentifier", + "src": "2677:6:55" + }, + "nativeSrc": "2677:15:55", + "nodeType": "YulFunctionCall", + "src": "2677:15:55" + }, + "nativeSrc": "2677:15:55", + "nodeType": "YulExpressionStatement", + "src": "2677:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2712:1:55", + "nodeType": "YulLiteral", + "src": "2712:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2715:4:55", + "nodeType": "YulLiteral", + "src": "2715:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2705:6:55", + "nodeType": "YulIdentifier", + "src": "2705:6:55" + }, + "nativeSrc": "2705:15:55", + "nodeType": "YulFunctionCall", + "src": "2705:15:55" + }, + "nativeSrc": "2705:15:55", + "nodeType": "YulExpressionStatement", + "src": "2705:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2575:18:55", + "nodeType": "YulIdentifier", + "src": "2575:18:55" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "2598:6:55", + "nodeType": "YulIdentifier", + "src": "2598:6:55" + }, + { + "kind": "number", + "nativeSrc": "2606:2:55", + "nodeType": "YulLiteral", + "src": "2606:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2595:2:55", + "nodeType": "YulIdentifier", + "src": "2595:2:55" + }, + "nativeSrc": "2595:14:55", + "nodeType": "YulFunctionCall", + "src": "2595:14:55" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2572:2:55", + "nodeType": "YulIdentifier", + "src": "2572:2:55" + }, + "nativeSrc": "2572:38:55", + "nodeType": "YulFunctionCall", + "src": "2572:38:55" + }, + "nativeSrc": "2569:161:55", + "nodeType": "YulIf", + "src": "2569:161:55" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "2356:380:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "2391:4:55", + "nodeType": "YulTypedName", + "src": "2391:4:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "2400:6:55", + "nodeType": "YulTypedName", + "src": "2400:6:55", + "type": "" + } + ], + "src": "2356:380:55" + }, + { + "body": { + "nativeSrc": "2898:188:55", + "nodeType": "YulBlock", + "src": "2898:188:55", + "statements": [ + { + "nativeSrc": "2908:26:55", + "nodeType": "YulAssignment", + "src": "2908:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2920:9:55", + "nodeType": "YulIdentifier", + "src": "2920:9:55" + }, + { + "kind": "number", + "nativeSrc": "2931:2:55", + "nodeType": "YulLiteral", + "src": "2931:2:55", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2916:3:55", + "nodeType": "YulIdentifier", + "src": "2916:3:55" + }, + "nativeSrc": "2916:18:55", + "nodeType": "YulFunctionCall", + "src": "2916:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2908:4:55", + "nodeType": "YulIdentifier", + "src": "2908:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2950:9:55", + "nodeType": "YulIdentifier", + "src": "2950:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2965:6:55", + "nodeType": "YulIdentifier", + "src": "2965:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2981:3:55", + "nodeType": "YulLiteral", + "src": "2981:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2986:1:55", + "nodeType": "YulLiteral", + "src": "2986:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2977:3:55", + "nodeType": "YulIdentifier", + "src": "2977:3:55" + }, + "nativeSrc": "2977:11:55", + "nodeType": "YulFunctionCall", + "src": "2977:11:55" + }, + { + "kind": "number", + "nativeSrc": "2990:1:55", + "nodeType": "YulLiteral", + "src": "2990:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2973:3:55", + "nodeType": "YulIdentifier", + "src": "2973:3:55" + }, + "nativeSrc": "2973:19:55", + "nodeType": "YulFunctionCall", + "src": "2973:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2961:3:55", + "nodeType": "YulIdentifier", + "src": "2961:3:55" + }, + "nativeSrc": "2961:32:55", + "nodeType": "YulFunctionCall", + "src": "2961:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2943:6:55", + "nodeType": "YulIdentifier", + "src": "2943:6:55" + }, + "nativeSrc": "2943:51:55", + "nodeType": "YulFunctionCall", + "src": "2943:51:55" + }, + "nativeSrc": "2943:51:55", + "nodeType": "YulExpressionStatement", + "src": "2943:51:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3014:9:55", + "nodeType": "YulIdentifier", + "src": "3014:9:55" + }, + { + "kind": "number", + "nativeSrc": "3025:2:55", + "nodeType": "YulLiteral", + "src": "3025:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3010:3:55", + "nodeType": "YulIdentifier", + "src": "3010:3:55" + }, + "nativeSrc": "3010:18:55", + "nodeType": "YulFunctionCall", + "src": "3010:18:55" + }, + { + "name": "value1", + "nativeSrc": "3030:6:55", + "nodeType": "YulIdentifier", + "src": "3030:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3003:6:55", + "nodeType": "YulIdentifier", + "src": "3003:6:55" + }, + "nativeSrc": "3003:34:55", + "nodeType": "YulFunctionCall", + "src": "3003:34:55" + }, + "nativeSrc": "3003:34:55", + "nodeType": "YulExpressionStatement", + "src": "3003:34:55" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3057:9:55", + "nodeType": "YulIdentifier", + "src": "3057:9:55" + }, + { + "kind": "number", + "nativeSrc": "3068:2:55", + "nodeType": "YulLiteral", + "src": "3068:2:55", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3053:3:55", + "nodeType": "YulIdentifier", + "src": "3053:3:55" + }, + "nativeSrc": "3053:18:55", + "nodeType": "YulFunctionCall", + "src": "3053:18:55" + }, + { + "name": "value2", + "nativeSrc": "3073:6:55", + "nodeType": "YulIdentifier", + "src": "3073:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3046:6:55", + "nodeType": "YulIdentifier", + "src": "3046:6:55" + }, + "nativeSrc": "3046:34:55", + "nodeType": "YulFunctionCall", + "src": "3046:34:55" + }, + "nativeSrc": "3046:34:55", + "nodeType": "YulExpressionStatement", + "src": "3046:34:55" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "2741:345:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2851:9:55", + "nodeType": "YulTypedName", + "src": "2851:9:55", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "2862:6:55", + "nodeType": "YulTypedName", + "src": "2862:6:55", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2870:6:55", + "nodeType": "YulTypedName", + "src": "2870:6:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2878:6:55", + "nodeType": "YulTypedName", + "src": "2878:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2889:4:55", + "nodeType": "YulTypedName", + "src": "2889:4:55", + "type": "" + } + ], + "src": "2741:345:55" + }, + { + "body": { + "nativeSrc": "3192:102:55", + "nodeType": "YulBlock", + "src": "3192:102:55", + "statements": [ + { + "nativeSrc": "3202:26:55", + "nodeType": "YulAssignment", + "src": "3202:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3214:9:55", + "nodeType": "YulIdentifier", + "src": "3214:9:55" + }, + { + "kind": "number", + "nativeSrc": "3225:2:55", + "nodeType": "YulLiteral", + "src": "3225:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3210:3:55", + "nodeType": "YulIdentifier", + "src": "3210:3:55" + }, + "nativeSrc": "3210:18:55", + "nodeType": "YulFunctionCall", + "src": "3210:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3202:4:55", + "nodeType": "YulIdentifier", + "src": "3202:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3244:9:55", + "nodeType": "YulIdentifier", + "src": "3244:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3259:6:55", + "nodeType": "YulIdentifier", + "src": "3259:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3275:3:55", + "nodeType": "YulLiteral", + "src": "3275:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3280:1:55", + "nodeType": "YulLiteral", + "src": "3280:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3271:3:55", + "nodeType": "YulIdentifier", + "src": "3271:3:55" + }, + "nativeSrc": "3271:11:55", + "nodeType": "YulFunctionCall", + "src": "3271:11:55" + }, + { + "kind": "number", + "nativeSrc": "3284:1:55", + "nodeType": "YulLiteral", + "src": "3284:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3267:3:55", + "nodeType": "YulIdentifier", + "src": "3267:3:55" + }, + "nativeSrc": "3267:19:55", + "nodeType": "YulFunctionCall", + "src": "3267:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3255:3:55", + "nodeType": "YulIdentifier", + "src": "3255:3:55" + }, + "nativeSrc": "3255:32:55", + "nodeType": "YulFunctionCall", + "src": "3255:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3237:6:55", + "nodeType": "YulIdentifier", + "src": "3237:6:55" + }, + "nativeSrc": "3237:51:55", + "nodeType": "YulFunctionCall", + "src": "3237:51:55" + }, + "nativeSrc": "3237:51:55", + "nodeType": "YulExpressionStatement", + "src": "3237:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "3091:203:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3161:9:55", + "nodeType": "YulTypedName", + "src": "3161:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3172:6:55", + "nodeType": "YulTypedName", + "src": "3172:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3183:4:55", + "nodeType": "YulTypedName", + "src": "3183:4:55", + "type": "" + } + ], + "src": "3091:203:55" + }, + { + "body": { + "nativeSrc": "3347:174:55", + "nodeType": "YulBlock", + "src": "3347:174:55", + "statements": [ + { + "nativeSrc": "3357:16:55", + "nodeType": "YulAssignment", + "src": "3357:16:55", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "3368:1:55", + "nodeType": "YulIdentifier", + "src": "3368:1:55" + }, + { + "name": "y", + "nativeSrc": "3371:1:55", + "nodeType": "YulIdentifier", + "src": "3371:1:55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3364:3:55", + "nodeType": "YulIdentifier", + "src": "3364:3:55" + }, + "nativeSrc": "3364:9:55", + "nodeType": "YulFunctionCall", + "src": "3364:9:55" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "3357:3:55", + "nodeType": "YulIdentifier", + "src": "3357:3:55" + } + ] + }, + { + "body": { + "nativeSrc": "3404:111:55", + "nodeType": "YulBlock", + "src": "3404:111:55", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3425:1:55", + "nodeType": "YulLiteral", + "src": "3425:1:55", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3432:3:55", + "nodeType": "YulLiteral", + "src": "3432:3:55", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "3437:10:55", + "nodeType": "YulLiteral", + "src": "3437:10:55", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3428:3:55", + "nodeType": "YulIdentifier", + "src": "3428:3:55" + }, + "nativeSrc": "3428:20:55", + "nodeType": "YulFunctionCall", + "src": "3428:20:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3418:6:55", + "nodeType": "YulIdentifier", + "src": "3418:6:55" + }, + "nativeSrc": "3418:31:55", + "nodeType": "YulFunctionCall", + "src": "3418:31:55" + }, + "nativeSrc": "3418:31:55", + "nodeType": "YulExpressionStatement", + "src": "3418:31:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3469:1:55", + "nodeType": "YulLiteral", + "src": "3469:1:55", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "3472:4:55", + "nodeType": "YulLiteral", + "src": "3472:4:55", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3462:6:55", + "nodeType": "YulIdentifier", + "src": "3462:6:55" + }, + "nativeSrc": "3462:15:55", + "nodeType": "YulFunctionCall", + "src": "3462:15:55" + }, + "nativeSrc": "3462:15:55", + "nodeType": "YulExpressionStatement", + "src": "3462:15:55" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3497:1:55", + "nodeType": "YulLiteral", + "src": "3497:1:55", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3500:4:55", + "nodeType": "YulLiteral", + "src": "3500:4:55", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3490:6:55", + "nodeType": "YulIdentifier", + "src": "3490:6:55" + }, + "nativeSrc": "3490:15:55", + "nodeType": "YulFunctionCall", + "src": "3490:15:55" + }, + "nativeSrc": "3490:15:55", + "nodeType": "YulExpressionStatement", + "src": "3490:15:55" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "3388:1:55", + "nodeType": "YulIdentifier", + "src": "3388:1:55" + }, + { + "name": "sum", + "nativeSrc": "3391:3:55", + "nodeType": "YulIdentifier", + "src": "3391:3:55" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3385:2:55", + "nodeType": "YulIdentifier", + "src": "3385:2:55" + }, + "nativeSrc": "3385:10:55", + "nodeType": "YulFunctionCall", + "src": "3385:10:55" + }, + "nativeSrc": "3382:133:55", + "nodeType": "YulIf", + "src": "3382:133:55" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "3299:222:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "3330:1:55", + "nodeType": "YulTypedName", + "src": "3330:1:55", + "type": "" + }, + { + "name": "y", + "nativeSrc": "3333:1:55", + "nodeType": "YulTypedName", + "src": "3333:1:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "3339:3:55", + "nodeType": "YulTypedName", + "src": "3339:3:55", + "type": "" + } + ], + "src": "3299:222:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b4366004610590565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105ba565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f6565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c366004610590565b610233565b6100cd61014f366004610618565b610241565b6060600380546101639061064b565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064b565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064b565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610685565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a6565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a6565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a6565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a6565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106ba565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610685565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561055357858101830151858201604001528201610537565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058b57600080fd5b919050565b600080604083850312156105a357600080fd5b6105ac83610574565b946020939093013593505050565b6000806000606084860312156105cf57600080fd5b6105d884610574565b92506105e660208501610574565b9150604084013590509250925092565b60006020828403121561060857600080fd5b61061182610574565b9392505050565b6000806040838503121561062b57600080fd5b61063483610574565b915061064260208401610574565b90509250929050565b600181811c9082168061065f57607f821691505b60208210810361067f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea26469706673582212203a5dde0826537fcd09dba652e742dfd97d6b253ef5d2eab88d151f7b0fa35dda64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x18F SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6BA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x537 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AC DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP5 PUSH2 0x574 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E6 PUSH1 0x20 DUP6 ADD PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x611 DUP3 PUSH2 0x574 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x634 DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH2 0x642 PUSH1 0x20 DUP5 ADD PUSH2 0x574 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE TSTORE 0xDE ADDMOD 0x26 MSTORE8 PUSH32 0xCD09DBA652E742DFD97D6B253EF5D2EAB88D151F7B0FA35DDA64736F6C634300 ADDMOD XOR STOP CALLER ", + "sourceMap": "183:135:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:55;;1162:22;1144:41;;1132:2;1117:18;4293:186:22;1004:187:55;3144:97:22;3222:12;;3144:97;;;1342:25:55;;;1330:2;1315:18;3144:97:22;1196:177:55;5039:244:22;;;;;;:::i;:::-;;:::i;3002:82::-;;;3075:2;1853:36:55;;1841:2;1826:18;3002:82:22;1711:184:55;3299:116:22;;;;;;:::i;:::-;-1:-1:-1;;;;;3390:18:22;3364:7;3390:18;;;;;;;;;;;;3299:116;2276:93;;;:::i;3610:178::-;;;;;;:::i;:::-;;:::i;3846:140::-;;;;;;:::i;:::-;;:::i;2074:89::-;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:32;4420:31:22;735:10:32;4436:7:22;4445:5;4420:8;:31::i;:::-;4468:4;4461:11;;;4293:186;;;;;:::o;5039:244::-;5126:4;735:10:32;5182:37:22;5198:4;735:10:32;5213:5:22;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:22;;5039:244;-1:-1:-1;;;;5039:244:22:o;2276:93::-;2323:13;2355:7;2348:14;;;;;:::i;3610:178::-;3679:4;735:10:32;3733:27:22;735:10:32;3750:2:22;3754:5;3733:9;:27::i;3846:140::-;-1:-1:-1;;;;;3952:18:22;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140::o;8989:128::-;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;:::-;8989:128;;;:::o;10663:477::-;10762:24;10789:25;10799:5;10806:7;10789:9;:25::i;:::-;10762:52;;-1:-1:-1;;10828:16:22;:37;10824:310;;10904:5;10885:16;:24;10881:130;;;10963:7;10972:16;10990:5;10936:60;;-1:-1:-1;;;10936:60:22;;;;;;;;;;:::i;:::-;;;;;;;;10881:130;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;:::-;10752:388;10663:477;;;:::o;5656:300::-;-1:-1:-1;;;;;5739:18:22;;5735:86;;5807:1;5780:30;;-1:-1:-1;;;5780:30:22;;;;;;;;:::i;5735:86::-;-1:-1:-1;;;;;5834:16:22;;5830:86;;5902:1;5873:32;;-1:-1:-1;;;5873:32:22;;;;;;;;:::i;5830:86::-;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;9949:432::-;-1:-1:-1;;;;;10061:19:22;;10057:89;;10132:1;10103:32;;-1:-1:-1;;;10103:32:22;;;;;;;;:::i;10057:89::-;-1:-1:-1;;;;;10159:21:22;;10155:90;;10231:1;10203:31;;-1:-1:-1;;;10203:31:22;;;;;;;;:::i;10155:90::-;-1:-1:-1;;;;;10254:18:22;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;-1:-1:-1;;;;;10333:31:22;10342:5;-1:-1:-1;;;;;10333:31:22;;10358:5;10333:31;;;;1342:25:55;;1330:2;1315:18;;1196:177;10333:31:22;;;;;;;;9949:432;;;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:22;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:22;;-1:-1:-1;6356:540:22;;-1:-1:-1;;;;;6570:15:22;;6548:19;6570:15;;;;;;;;;;;6603:19;;;6599:115;;;6674:4;6680:11;6693:5;6649:50;;-1:-1:-1;;;6649:50:22;;;;;;;;;;:::i;6599:115::-;-1:-1:-1;;;;;6834:15:22;;:9;:15;;;;;;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:22;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:22;;:9;:13;;;;;;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:22;7355:4;-1:-1:-1;;;;;7346:25:22;;7365:5;7346:25;;;;1342::55;;1330:2;1315:18;;1196:177;7346:25:22;;;;;;;;6271:1107;;;:::o;14:548:55:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:55;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:55:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:55:o;2091:260::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;:::-;2249:39;;2307:38;2341:2;2330:9;2326:18;2307:38;:::i;:::-;2297:48;;2091:260;;;;;:::o;2356:380::-;2435:1;2431:12;;;;2478;;;2499:61;;2553:4;2545:6;2541:17;2531:27;;2499:61;2606:2;2598:6;2595:14;2575:18;2572:38;2569:161;;2652:10;2647:3;2643:20;2640:1;2633:31;2687:4;2684:1;2677:15;2715:4;2712:1;2705:15;2569:161;;2356:380;;;:::o;2741:345::-;-1:-1:-1;;;;;2961:32:55;;;;2943:51;;3025:2;3010:18;;3003:34;;;;3068:2;3053:18;;3046:34;2931:2;2916:18;;2741:345::o;3091:203::-;-1:-1:-1;;;;;3255:32:55;;;;3237:51;;3225:2;3210:18;;3091:203::o;3299:222::-;3364:9;;;3385:10;;;3382:133;;;3437:10;3432:3;3428:20;3425:1;3418:31;3472:4;3469:1;3462:15;3500:4;3497:1;3490:15" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/NullUSD.sol\":\"NullUSD\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/test/NullUSD.sol\":{\"keccak256\":\"0x56d2f4a76e4449be9f43c79606ccb1bd84f44dbc81749eaa330bf51722f73a45\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b59987fc2f37b5b0ce06b8322445dac670a0bf37fa3a622bf0a31b8f9ee576a6\",\"dweb:/ipfs/QmWxMECrNJjN3geCdgPQPQ2AADKtPhxaED8vVvrDPcA5dG\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3875, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 3881, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 3883, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 3885, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 3887, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } + } + }, + "contracts/utils/KYCUtils.sol": { + "ICaminoAdmin": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getKycState", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getKycState(address)": "bb03fa1d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getKycState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/KYCUtils.sol\":\"ICaminoAdmin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/utils/KYCUtils.sol\":{\"keccak256\":\"0xd0e8271c66706316768910c925587e12bb8176555252e9c44db5f23c4742a394\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ebb8b3c87e6511a906d0bb7ceec48b1726359d1f21e3b17cae8383c0836a82f9\",\"dweb:/ipfs/QmbMdvS84XG6wi8cgodfVWcwZs1UiGBkezdqdToQAMZsee\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + }, + "KYCUtils": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotKYBVerified", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotKYCVerified", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotVerified", + "type": "error" + }, + { + "inputs": [], + "name": "ADMIN_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "KYB_VERIFIED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "KYC_EXPIRED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "KYC_VERIFIED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60d9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060515760003560e01c8063517103bf14605657806397041685146070578063a58a021e146077578063b11569f514607f575b600080fd5b605d600181565b6040519081526020015b60405180910390f35b605d600281565b605d61010081565b608c600a600160981b0181565b6040516001600160a01b039091168152602001606756fea26469706673582212202263f5b1f1be2d35d0052d3e41168145674c6668a9dcdbeba8ec81373276c78464736f6c63430008180033", + "opcodes": "PUSH1 0xD9 PUSH2 0x39 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x51 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x517103BF EQ PUSH1 0x56 JUMPI DUP1 PUSH4 0x97041685 EQ PUSH1 0x70 JUMPI DUP1 PUSH4 0xA58A021E EQ PUSH1 0x77 JUMPI DUP1 PUSH4 0xB11569F5 EQ PUSH1 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5D PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x5D PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x5D PUSH2 0x100 DUP2 JUMP JUMPDEST PUSH1 0x8C PUSH1 0xA PUSH1 0x1 PUSH1 0x98 SHL ADD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x67 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PUSH4 0xF5B1F1BE 0x2D CALLDATALOAD 0xD0 SDIV 0x2D RETURNDATACOPY COINBASE AND DUP2 GASLIMIT PUSH8 0x4C6668A9DCDBEBA8 0xEC DUP2 CALLDATACOPY ORIGIN PUSH23 0xC78464736F6C6343000818003300000000000000000000 ", + "sourceMap": "196:2691:54:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;196:2691:54;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@ADMIN_ADDR_13252": { + "entryPoint": null, + "id": 13252, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@KYB_VERIFIED_13268": { + "entryPoint": null, + "id": 13268, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@KYC_EXPIRED_13263": { + "entryPoint": null, + "id": 13263, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@KYC_VERIFIED_13258": { + "entryPoint": null, + "id": 13258, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:417:55", + "nodeType": "YulBlock", + "src": "0:417:55", + "statements": [ + { + "nativeSrc": "6:3:55", + "nodeType": "YulBlock", + "src": "6:3:55", + "statements": [] + }, + { + "body": { + "nativeSrc": "123:76:55", + "nodeType": "YulBlock", + "src": "123:76:55", + "statements": [ + { + "nativeSrc": "133:26:55", + "nodeType": "YulAssignment", + "src": "133:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "145:9:55", + "nodeType": "YulIdentifier", + "src": "145:9:55" + }, + { + "kind": "number", + "nativeSrc": "156:2:55", + "nodeType": "YulLiteral", + "src": "156:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141:3:55", + "nodeType": "YulIdentifier", + "src": "141:3:55" + }, + "nativeSrc": "141:18:55", + "nodeType": "YulFunctionCall", + "src": "141:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "133:4:55", + "nodeType": "YulIdentifier", + "src": "133:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "175:9:55", + "nodeType": "YulIdentifier", + "src": "175:9:55" + }, + { + "name": "value0", + "nativeSrc": "186:6:55", + "nodeType": "YulIdentifier", + "src": "186:6:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "168:6:55", + "nodeType": "YulIdentifier", + "src": "168:6:55" + }, + "nativeSrc": "168:25:55", + "nodeType": "YulFunctionCall", + "src": "168:25:55" + }, + "nativeSrc": "168:25:55", + "nodeType": "YulExpressionStatement", + "src": "168:25:55" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed", + "nativeSrc": "14:185:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "92:9:55", + "nodeType": "YulTypedName", + "src": "92:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "103:6:55", + "nodeType": "YulTypedName", + "src": "103:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "114:4:55", + "nodeType": "YulTypedName", + "src": "114:4:55", + "type": "" + } + ], + "src": "14:185:55" + }, + { + "body": { + "nativeSrc": "313:102:55", + "nodeType": "YulBlock", + "src": "313:102:55", + "statements": [ + { + "nativeSrc": "323:26:55", + "nodeType": "YulAssignment", + "src": "323:26:55", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "335:9:55", + "nodeType": "YulIdentifier", + "src": "335:9:55" + }, + { + "kind": "number", + "nativeSrc": "346:2:55", + "nodeType": "YulLiteral", + "src": "346:2:55", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "331:3:55", + "nodeType": "YulIdentifier", + "src": "331:3:55" + }, + "nativeSrc": "331:18:55", + "nodeType": "YulFunctionCall", + "src": "331:18:55" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "323:4:55", + "nodeType": "YulIdentifier", + "src": "323:4:55" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "365:9:55", + "nodeType": "YulIdentifier", + "src": "365:9:55" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "380:6:55", + "nodeType": "YulIdentifier", + "src": "380:6:55" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "396:3:55", + "nodeType": "YulLiteral", + "src": "396:3:55", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "401:1:55", + "nodeType": "YulLiteral", + "src": "401:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "392:3:55", + "nodeType": "YulIdentifier", + "src": "392:3:55" + }, + "nativeSrc": "392:11:55", + "nodeType": "YulFunctionCall", + "src": "392:11:55" + }, + { + "kind": "number", + "nativeSrc": "405:1:55", + "nodeType": "YulLiteral", + "src": "405:1:55", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "388:3:55", + "nodeType": "YulIdentifier", + "src": "388:3:55" + }, + "nativeSrc": "388:19:55", + "nodeType": "YulFunctionCall", + "src": "388:19:55" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "376:3:55", + "nodeType": "YulIdentifier", + "src": "376:3:55" + }, + "nativeSrc": "376:32:55", + "nodeType": "YulFunctionCall", + "src": "376:32:55" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "358:6:55", + "nodeType": "YulIdentifier", + "src": "358:6:55" + }, + "nativeSrc": "358:51:55", + "nodeType": "YulFunctionCall", + "src": "358:51:55" + }, + "nativeSrc": "358:51:55", + "nodeType": "YulExpressionStatement", + "src": "358:51:55" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed", + "nativeSrc": "204:211:55", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "282:9:55", + "nodeType": "YulTypedName", + "src": "282:9:55", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "293:6:55", + "nodeType": "YulTypedName", + "src": "293:6:55", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "304:4:55", + "nodeType": "YulTypedName", + "src": "304:4:55", + "type": "" + } + ], + "src": "204:211:55" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}", + "id": 55, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040526004361060515760003560e01c8063517103bf14605657806397041685146070578063a58a021e146077578063b11569f514607f575b600080fd5b605d600181565b6040519081526020015b60405180910390f35b605d600281565b605d61010081565b608c600a600160981b0181565b6040516001600160a01b039091168152602001606756fea26469706673582212202263f5b1f1be2d35d0052d3e41168145674c6668a9dcdbeba8ec81373276c78464736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x51 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x517103BF EQ PUSH1 0x56 JUMPI DUP1 PUSH4 0x97041685 EQ PUSH1 0x70 JUMPI DUP1 PUSH4 0xA58A021E EQ PUSH1 0x77 JUMPI DUP1 PUSH4 0xB11569F5 EQ PUSH1 0x7F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5D PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x5D PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x5D PUSH2 0x100 DUP2 JUMP JUMPDEST PUSH1 0x8C PUSH1 0xA PUSH1 0x1 PUSH1 0x98 SHL ADD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x67 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PUSH4 0xF5B1F1BE 0x2D CALLDATALOAD 0xD0 SDIV 0x2D RETURNDATACOPY COINBASE AND DUP2 GASLIMIT PUSH8 0x4C6668A9DCDBEBA8 0xEC DUP2 CALLDATACOPY ORIGIN PUSH23 0xC78464736F6C6343000818003300000000000000000000 ", + "sourceMap": "196:2691:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;407:45;;446:6;407:45;;;;;168:25:55;;;156:2;141:18;407:45:54;;;;;;;;467:44;;505:6;467:44;;526:45;;565:6;526:45;;273:79;;-1:-1:-1;;;;;273:79:54;;;;;-1:-1:-1;;;;;376:32:55;;;358:51;;346:2;331:18;273:79:54;204:211:55" + }, + "methodIdentifiers": { + "ADMIN_ADDR()": "b11569f5", + "KYB_VERIFIED()": "a58a021e", + "KYC_EXPIRED()": "97041685", + "KYC_VERIFIED()": "517103bf" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotKYBVerified\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotKYCVerified\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ADMIN_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KYB_VERIFIED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KYC_EXPIRED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KYC_VERIFIED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"NotKYCVerified(address)\":[{\"notice\":\"Errors\"}]},\"kind\":\"user\",\"methods\":{\"ADMIN_ADDR()\":{\"notice\":\"Admin contract address\"},\"KYC_VERIFIED()\":{\"notice\":\"Constants for KYC states\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/KYCUtils.sol\":\"KYCUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/utils/KYCUtils.sol\":{\"keccak256\":\"0xd0e8271c66706316768910c925587e12bb8176555252e9c44db5f23c4742a394\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ebb8b3c87e6511a906d0bb7ceec48b1726359d1f21e3b17cae8383c0836a82f9\",\"dweb:/ipfs/QmbMdvS84XG6wi8cgodfVWcwZs1UiGBkezdqdToQAMZsee\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + } + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/build-info/9ce97939ae38a806f04fa641296260ce.json b/ignition/deployments/chain-501/build-info/9ce97939ae38a806f04fa641296260ce.json new file mode 100644 index 0000000..8b5bd26 --- /dev/null +++ b/ignition/deployments/chain-501/build-info/9ce97939ae38a806f04fa641296260ce.json @@ -0,0 +1,132746 @@ +{ + "id": "9ce97939ae38a806f04fa641296260ce", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.24", + "solcLongVersion": "0.8.24+commit.e11b9ed9", + "input": { + "language": "Solidity", + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/extensions/AccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControlEnumerable} from \"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\";\nimport {AccessControlUpgradeable} from \"../AccessControlUpgradeable.sol\";\nimport {EnumerableSet} from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerable, AccessControlUpgradeable {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable\n struct AccessControlEnumerableStorage {\n mapping(bytes32 role => EnumerableSet.AddressSet) _roleMembers;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControlEnumerable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlEnumerableStorageLocation = 0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000;\n\n function _getAccessControlEnumerableStorage() private pure returns (AccessControlEnumerableStorage storage $) {\n assembly {\n $.slot := AccessControlEnumerableStorageLocation\n }\n }\n\n function __AccessControlEnumerable_init() internal onlyInitializing {\n }\n\n function __AccessControlEnumerable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view virtual returns (address) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view virtual returns (uint256) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].length();\n }\n\n /**\n * @dev Overload {AccessControl-_grantRole} to track enumerable memberships\n */\n function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool granted = super._grantRole(role, account);\n if (granted) {\n $._roleMembers[role].add(account);\n }\n return granted;\n }\n\n /**\n * @dev Overload {AccessControl-_revokeRole} to track enumerable memberships\n */\n function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool revoked = super._revokeRole(role, account);\n if (revoked) {\n $._roleMembers[role].remove(account);\n }\n return revoked;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n * See {_onlyProxy}.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n struct ReentrancyGuardStorage {\n uint256 _status;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n assembly {\n $.slot := ReentrancyGuardStorageLocation\n }\n }\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n function __ReentrancyGuard_init() internal onlyInitializing {\n __ReentrancyGuard_init_unchained();\n }\n\n function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if ($._status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n $._status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n return $._status == ENTERED;\n }\n}\n" + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/extensions/IAccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"../IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\n */\ninterface IAccessControlEnumerable is IAccessControl {\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.20;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n * doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n * token.safeTransferFrom(msg.sender, address(this), value);\n * ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n *\n * CAUTION: See Security Considerations above.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC20Permit} from \"../extensions/IERC20Permit.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n /**\n * @dev An operation with an ERC20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data);\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n * {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n * reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError, bytes32) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position is the index of the value in the `values` array plus 1.\n // Position 0 is used to mean a value is not in the set.\n mapping(bytes32 value => uint256) _positions;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._positions[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We cache the value's position to prevent multiple reads from the same storage slot\n uint256 position = set._positions[value];\n\n if (position != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 valueIndex = position - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (valueIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the lastValue to the index where the value to delete is\n set._values[valueIndex] = lastValue;\n // Update the tracked position of the lastValue (that was just moved)\n set._positions[lastValue] = position;\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the tracked position for the deleted slot\n delete set._positions[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._positions[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n bytes32[] memory store = _values(set._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "contracts/account/ChequeManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Cheque Manager\n\npragma solidity ^0.8.0;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { ECDSA } from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// Manager Interface\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\n\n/**\n * @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n *\n * EIP712 Domain name & version:\n * DOMAIN_NAME = \"CaminoMessenger\"\n * DOMAIN_VERSION= \"1\"\n */\nabstract contract ChequeManager is Initializable, ReentrancyGuardUpgradeable {\n using ECDSA for bytes32;\n using Address for address payable;\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @notice Pre-computed hash of the MessengerCheque type\n *\n * ```\n * keccak256(\n * \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n * );\n * ```\n */\n bytes32 public constant MESSENGER_CHEQUE_TYPEHASH =\n 0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb;\n\n /**\n * @notice Pre-computed hash of the EIP712Domain type\n *\n * ```\n * keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n * ```\n */\n bytes32 public constant DOMAIN_TYPEHASH = 0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e;\n\n /***************************************************\n * STRUCTS *\n ***************************************************/\n\n /**\n * @notice Struct representing a Messenger Cheque.\n */\n struct MessengerCheque {\n address fromCMAccount; // CM Account that will pay the amount\n address toCMAccount; // CM Account that will receive the amount\n address toBot; // The address of the bot that receives the cheque\n uint256 counter; // This should be increased with every cheque\n uint256 amount; // The amount to be transferred\n uint256 createdAt; // Creation timestamp of the cheque\n uint256 expiresAt; // Expiration timestamp of the cheque\n }\n\n /**\n * @notice Struct for tracking the counter, amount and timestamps used for the last\n * cash-in operation.\n */\n struct LastCashIn {\n uint256 counter;\n uint256 amount;\n uint256 createdAt;\n uint256 expiresAt;\n }\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.ChequeManager\n struct ChequeManagerStorage {\n /**\n * @notice Mapping to track the cash-in details for each pair of fromBot and toBot addresses.\n */\n mapping(address fromBot => mapping(address toBot => LastCashIn)) _lastCashIns;\n /**\n * @notice Total amount of cheques that have been cashed in.\n */\n uint256 _totalChequePayments;\n /**\n * @notice EIP712 Domain Separator used for signature verification. This variable includes\n * dynamic chain ID, hence it is not a constant.\n */\n bytes32 _domainSeparator;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.ChequeManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant ChequeManagerStorageLocation =\n 0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600;\n\n function _getChequeManagerStorage() private pure returns (ChequeManagerStorage storage $) {\n assembly {\n $.slot := ChequeManagerStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Cash-in event. Emitted when a cheque is cashed in.\n */\n event ChequeCashedIn(\n address indexed fromCMAccount,\n address indexed toCMAccount,\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 paidChequeAmount,\n uint256 paidDeveloperFee\n );\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\n */\n error InvalidFromCMAccount(address fromCMAccount);\n\n /**\n * @notice `toCMAccount` address is not a registered CMAccount on the manager.\n */\n error InvalidToCMAccount(address toCMAccount);\n\n /**\n * @notice The signer is not allowed to sign cheques\n */\n error NotAllowedToSignCheques(address signer);\n\n /**\n * @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n * recorded counter.\n */\n error InvalidCounter(uint256 chequeCounter, uint256 lastCounter);\n\n /**\n * @notice Last recorded amount is lower than the cheque's amount.\n */\n error InvalidAmount(uint256 chequeAmount, uint256 lastAmount);\n\n /**\n * @notice The cheque is expired at the given timestamp.\n */\n error ChequeExpired(uint256 expiresAt);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n * the domain.\n *\n * EIP712Domain {\n * string name;\n * string version;\n * uint256 chainid;\n * }\n */\n function __ChequeManager_init() internal onlyInitializing {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n\n $._domainSeparator = keccak256(\n abi.encode(DOMAIN_TYPEHASH, keccak256(\"CaminoMessenger\"), keccak256(\"1\"), block.chainid)\n );\n }\n\n /**\n * @notice Returns the domain separator.\n */\n function getDomainSeparator() public view returns (bytes32) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._domainSeparator;\n }\n\n /**\n * @notice Returns the hash of the `MessengerCheque` encoded with\n * `MESSENGER_CHEQUE_TYPEHASH`.\n */\n function hashMessengerCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public pure returns (bytes32) {\n return\n keccak256(\n abi.encode(\n MESSENGER_CHEQUE_TYPEHASH,\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt\n )\n );\n }\n\n /**\n * @notice Returns the hash of the typed data (cheque) with prefix and domain\n * separator.\n */\n function hashTypedDataV4(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public view returns (bytes32) {\n return\n keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n getDomainSeparator(),\n hashMessengerCheque(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt)\n )\n );\n }\n\n /**\n * @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n * recover the signer.\n */\n function recoverSigner(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) internal view returns (address signer) {\n bytes32 digest = hashTypedDataV4(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt);\n signer = digest.recover(signature);\n return signer;\n }\n\n /**\n * @notice Returns signer and payment amount if the signature is valid for the\n * given cheque, the signer is an allowed bot, cheque counter and amounts are\n * valid according to last cash ins.\n *\n * Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n * long as the last amount is lower than the cheque amount. Only the difference\n * between the cheque amount and the last recorded amount is paid.\n */\n function verifyCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public view returns (address signer, uint256 paymentAmount) {\n // Revert if cheque is not for this contract\n if (fromCMAccount != address(this)) {\n revert InvalidFromCMAccount(fromCMAccount);\n }\n\n // Revert if cheque payee is not a CM account\n if (!ICMAccountManager(getManagerAddress()).isCMAccount(toCMAccount)) {\n revert InvalidToCMAccount(toCMAccount);\n }\n\n // Revert if the cheque is expired\n if (block.timestamp >= expiresAt) {\n revert ChequeExpired(expiresAt);\n }\n\n // Recover signer\n signer = recoverSigner(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt, signature);\n\n // Check if the signer is an allowed bot.\n if (!isBotAllowed(signer)) {\n revert NotAllowedToSignCheques(signer);\n }\n\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[signer][toBot];\n\n // Revert if the cheque amount is lower then the last recorded amount\n if (amount < lastCashIn.amount) {\n revert InvalidAmount(amount, lastCashIn.amount);\n }\n\n // Ensure the current cheque's counter is greater than the last recorded one\n if (counter <= lastCashIn.counter) {\n revert InvalidCounter(counter, lastCashIn.counter);\n }\n\n // Everything is valid. Calculate payment amount.\n paymentAmount = amount - lastCashIn.amount;\n\n return (signer, paymentAmount);\n }\n\n /**\n * @notice Cash in a cheque by verifying it and paying the difference between the\n * cheque amount and the last recorded amount for the signer and `toBot` pair.\n *\n * A percentage of the amount is also paid to the developer wallet.\n *\n * @param fromCMAccount The CM Account that will pay the amount. This contract.\n * @param toCMAccount The CM Account that will receive the amount.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque. Should be increased with every\n * cheque.\n * @param amount The amount on the cheque. Should be greater then or equal the\n * last recorded amount.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n * @param signature The signature of the cheque.\n */\n function cashInCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public nonReentrant {\n // Verify the cheque and get the signer and payment amount\n (address signer, uint256 paymentAmount) = verifyCheque(\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt,\n signature\n );\n\n // If we didn't revert in the verifyCheque above, the cheque is valid.\n // Update the last cash ins.\n setLastCashIn(signer, toBot, counter, amount, createdAt, expiresAt);\n\n // Calculate developer fee\n // For amounts lower then fee basis point, the developer fee is 0.\n uint256 developerFee = (paymentAmount * ICMAccountManager(getManagerAddress()).getDeveloperFeeBp()) / 10000;\n\n // Subtract developer fee from payment amount\n uint256 chequePaymentAmount = paymentAmount - developerFee;\n\n // Update total cheque payments excluding cheques to the same account\n if (fromCMAccount != toCMAccount) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._totalChequePayments += paymentAmount;\n }\n\n // Transfer developer fee to the developer wallet\n payable(ICMAccountManager(getManagerAddress()).getDeveloperWallet()).sendValue(developerFee);\n\n // Transfer the cheque payment amount to the `toCMAccount`\n payable(toCMAccount).sendValue(chequePaymentAmount);\n\n // Emit cash-in event\n emit ChequeCashedIn(\n fromCMAccount,\n toCMAccount,\n signer, // fromBot\n toBot,\n counter,\n amount, // Amount of the cheque\n chequePaymentAmount, // Paid cheque amount to the `toCMAccount`\n developerFee // Paid developer fee (cut from the cheque amount)\n );\n }\n\n /**\n * @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n *\n * Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n *\n * @return lastCounter The last counter of the cheque.\n * @return lastAmount The last amount of the cheque.\n * @return lastCreatedAt The last creation timestamp of the cheque.\n * @return lastExpiresAt The last expiration timestamp of the cheque.\n */\n function getLastCashIn(\n address fromBot,\n address toBot\n ) public view returns (uint256 lastCounter, uint256 lastAmount, uint256 lastCreatedAt, uint256 lastExpiresAt) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[fromBot][toBot];\n return (lastCashIn.counter, lastCashIn.amount, lastCashIn.createdAt, lastCashIn.expiresAt);\n }\n\n /**\n * @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque.\n * @param amount The amount of the cheque.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n */\n function setLastCashIn(\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) internal {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._lastCashIns[fromBot][toBot] = LastCashIn(counter, amount, createdAt, expiresAt);\n }\n\n /**\n * @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n *\n * @return totalChequePayments The total cheque payments made.\n */\n function getTotalChequePayments() public view returns (uint256) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._totalChequePayments;\n }\n\n /***************************************************\n * ABSTRACT *\n ***************************************************/\n\n /**\n * @notice Abstract function to check if a bot is allowed to sign cheques. This\n * must be implemented by the inheriting contract.\n */\n function isBotAllowed(address bot) public view virtual returns (bool);\n\n /**\n * @notice Abstract function to get the manager address. This must be implemented\n * by the inheriting contract.\n */\n function getManagerAddress() public view virtual returns (address);\n}\n" + }, + "contracts/account/CMAccount.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Implementation\n\npragma solidity ^0.8.24;\n\nimport { ERC1967Proxy } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport { AccessControlEnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { IERC721 } from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport { IERC721Receiver } from \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport { ERC1967Utils } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\n\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\nimport { ChequeManager } from \"./ChequeManager.sol\";\nimport { BookingTokenOperator } from \"../booking-token/BookingTokenOperator.sol\";\nimport { PartnerConfiguration } from \"../partner/PartnerConfiguration.sol\";\nimport { GasMoneyManager } from \"./GasMoneyManager.sol\";\n\n/**\n * @title Camino Messenger Account\n * @notice A CM Account manages funds, minting/buying of booking tokens, provided\n * or wanted services, and multiple bots for distributors and suppliers on\n * Camino Messenger ecosystem.\n *\n * Registering bots is done by role based access control. Bot's with\n * `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n * Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n *\n * `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n * contract to be used as gas money. This restricted with a `limit`\n * (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n * values are 10 CAM per 24 hours.\n *\n * `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n * calling the corresponding functions on the {BookingToken} contract. The buy\n * operation pays the price of the Booking Token with the funds on the\n * {CMAccount} contract.\n *\n * @dev This contract uses UUPS style upgradeability. The authorization function\n * `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n * restricted to only upgrade to the implementation address registered on the\n * {CMAccountManager} contract.\n * @custom:security-contact https://r.xyz/program/camino-network\n */\ncontract CMAccount is\n Initializable,\n AccessControlEnumerableUpgradeable,\n UUPSUpgradeable,\n IERC721Receiver,\n ChequeManager,\n PartnerConfiguration,\n GasMoneyManager\n{\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /***************************************************\n * ROLES *\n ***************************************************/\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice Bot admin role can add & remove bots and set gas money withdrawal\n * parameters.\n */\n bytes32 public constant BOT_ADMIN_ROLE = keccak256(\"BOT_ADMIN_ROLE\");\n\n /**\n * @notice Cheque operator role can issue cheques to be paid by this CMAccount\n * contract.\n */\n bytes32 public constant CHEQUE_OPERATOR_ROLE = keccak256(\"CHEQUE_OPERATOR_ROLE\");\n\n /**\n * @notice Gas withdrawer role can withdraw gas money from the contract. This is\n * intended to be used by the bots and is granted when `addMessengerBot` is\n * called.\n */\n bytes32 public constant GAS_WITHDRAWER_ROLE = keccak256(\"GAS_WITHDRAWER_ROLE\");\n\n /**\n * @notice Withdrawer role can withdraw funds from the contract.\n */\n bytes32 public constant WITHDRAWER_ROLE = keccak256(\"WITHDRAWER_ROLE\");\n\n /**\n * @notice Booking operator role can mint and buy booking tokens using the\n * functions on this contract. This is generally used by the bots. The\n * price for the booking token is paid by this contract.\n */\n bytes32 public constant BOOKING_OPERATOR_ROLE = keccak256(\"BOOKING_OPERATOR_ROLE\");\n\n /**\n * @notice Service admin role can add & remove supported & wanted services.\n */\n bytes32 public constant SERVICE_ADMIN_ROLE = keccak256(\"SERVICE_ADMIN_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.CMAccount\n struct CMAccountStorage {\n /**\n * @dev Address of the CMAccountManager\n */\n address _manager;\n /**\n * @dev Address of the BookingToken contract\n */\n address _bookingToken;\n /**\n * @dev Prefund amount\n */\n uint256 _prefundAmount;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.CMAccount\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant CMAccountStorageLocation =\n 0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100;\n\n function _getCMAccountStorage() private pure returns (CMAccountStorage storage $) {\n assembly {\n $.slot := CMAccountStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\n */\n event CMAccountUpgraded(address indexed oldImplementation, address indexed newImplementation);\n\n /**\n * @notice Deposit event, emitted when there is a new deposit\n */\n event Deposit(address indexed sender, uint256 amount);\n\n /**\n * @notice Withdraw event, emitted when there is a new withdrawal\n */\n event Withdraw(address indexed receiver, uint256 amount);\n\n /**\n * @notice Messenger bot added\n */\n event MessengerBotAdded(address indexed bot);\n\n /**\n * @notice Messenger bot removed\n */\n event MessengerBotRemoved(address indexed bot);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice CMAccount implementation address does not match the one in the manager\n */\n error CMAccountImplementationMismatch(address latestImplementation, address newImplementation);\n\n /**\n * @notice New implementation is the same as the current implementation, no update needed\n */\n error CMAccountNoUpgradeNeeded(address oldImplementation, address newImplementation);\n\n /**\n * @notice Error to revert with if depositer is not allowed\n */\n error DepositorNotAllowed(address sender);\n\n /**\n * @notice Error to revert zero value deposits\n */\n error ZeroValueDeposit(address sender);\n\n /**\n * @notice Error to revert with if the prefund is not spent yet\n */\n error PrefundNotSpentYet(uint256 withdrawableAmount, uint256 prefundLeft, uint256 amount);\n\n /**\n * @notice Error to revert if transfer to zero address\n */\n error TransferToZeroAddress();\n\n /***************************************************\n * CONSTRUCTOR & INITIALIZATION *\n ***************************************************/\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(\n address manager,\n address bookingToken,\n uint256 prefundAmount,\n address defaultAdmin,\n address upgrader\n ) public initializer {\n __AccessControl_init();\n __UUPSUpgradeable_init();\n __ChequeManager_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(SERVICE_ADMIN_ROLE, defaultAdmin);\n _grantRole(BOT_ADMIN_ROLE, defaultAdmin);\n _grantRole(UPGRADER_ROLE, upgrader);\n\n CMAccountStorage storage $ = _getCMAccountStorage();\n\n $._manager = manager;\n $._bookingToken = bookingToken;\n $._prefundAmount = prefundAmount;\n\n // Initialize GasMoneyManager\n uint256 withdrawalLimit = 10 ether; // 10 CAM\n uint256 withdrawalPeriod = 24 hours; // per 24 hours\n __GasMoneyManager_init(withdrawalLimit, withdrawalPeriod);\n }\n\n receive() external payable {}\n\n /***************************************************\n * Getters *\n ***************************************************/\n\n /**\n * @notice Returns the CMAccountManager address.\n *\n * @return CMAccountManager address\n */\n function getManagerAddress() public view override returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._manager;\n }\n\n /**\n * @notice Returns the booking token address.\n *\n * @return BookingToken address\n */\n function getBookingTokenAddress() public view returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._bookingToken;\n }\n\n /**\n * @notice Returns the prefund amount.\n *\n * @return prefund amount\n */\n function getPrefundAmount() public view returns (uint256) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._prefundAmount;\n }\n\n /***************************************************\n * Account *\n ***************************************************/\n\n /**\n * @notice Authorizes the upgrade of the CMAccount.\n *\n * Reverts if the new implementation is the same as the old one.\n *\n * Reverts if the new implementation does not match the implementation address\n * in the manager. Only implementations registered at the manager are allowed.\n *\n * @dev Emits a {CMAccountUpgraded} event.\n *\n * @param newImplementation The new implementation address\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {\n // Get the implementation address from the manager\n address managerImplementation = ICMAccountManager(getManagerAddress()).getAccountImplementation();\n address oldImplementation = ERC1967Utils.getImplementation();\n\n // Revert if the new implementation is the same as the old one\n if (oldImplementation == newImplementation) {\n revert CMAccountNoUpgradeNeeded(oldImplementation, newImplementation);\n }\n\n // Check if new implementation matches the implementation address in the manager\n if (newImplementation != managerImplementation) {\n revert CMAccountImplementationMismatch(managerImplementation, newImplementation);\n }\n\n emit CMAccountUpgraded(oldImplementation, newImplementation);\n }\n\n /**\n * @notice Returns true if an address is authorized to sign cheques\n *\n * @param bot The bot's address\n */\n function isBotAllowed(address bot) public view override returns (bool) {\n return hasRole(CHEQUE_OPERATOR_ROLE, bot);\n }\n\n /**\n * @notice Verifies if the amount is withdrawable by checking if prefund is spent\n *\n * @param amount The amount to check if it's withdrawable\n */\n function _checkPrefundSpent(uint256 amount) private view {\n uint256 prefundAmount = getPrefundAmount();\n uint256 totalChequePayments = getTotalChequePayments();\n\n // Check if prefund is spent. If total cheque payments is bigger or equal to\n // prefund amount it's ok to withdraw any amount\n if (totalChequePayments < prefundAmount) {\n // Balance should be bigger or equal to the { prefundLeft } because the\n // total sum of prefund is not yet spent. So, we substact that\n // (prefundLeft) from the balance to find the withdrawable amount.\n uint256 prefundLeft = prefundAmount - totalChequePayments;\n uint256 withdrawableAmount = address(this).balance - prefundLeft;\n\n // If amount is bigger than withdrawable amount, revert.\n // Otherwise, it's ok to withdraw the amount.\n if (amount > withdrawableAmount) {\n revert PrefundNotSpentYet(withdrawableAmount, prefundLeft, amount);\n }\n }\n }\n\n /**\n * @notice Withdraw CAM from the CMAccount\n *\n * This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n * spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n * and withdraw the prefund.\n */\n function withdraw(address payable recipient, uint256 amount) external nonReentrant onlyRole(WITHDRAWER_ROLE) {\n // Check if amount is withdrawable according to the prefund spent amount\n _checkPrefundSpent(amount);\n\n recipient.sendValue(amount);\n emit Withdraw(recipient, amount);\n }\n\n /***************************************************\n * BOOKING TOKEN *\n ***************************************************/\n\n /**\n * @notice Mints booking token.\n *\n * @param reservedFor The account to reserve the token for\n * @param uri The URI of the token\n * @param expirationTimestamp The expiration timestamp\n * @param price The price of the token\n * @param paymentToken The payment token, if address(0) then native\n */\n function mintBookingToken(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n // Mint the token\n BookingTokenOperator.mintBookingToken(\n getBookingTokenAddress(),\n reservedFor,\n uri,\n expirationTimestamp,\n price,\n paymentToken\n );\n }\n\n /**\n * @notice Buys booking token.\n *\n * @param tokenId The token id\n */\n function buyBookingToken(uint256 tokenId) external nonReentrant onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.buyBookingToken(getBookingTokenAddress(), tokenId);\n }\n\n /**\n * @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n *\n * @dev See {IERC721Receiver-onERC721Received}.\n */\n function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) {\n return this.onERC721Received.selector;\n }\n\n /***************************************************\n * ERC20 & ERC721 *\n ***************************************************/\n\n /**\n * @notice Transfers ERC20 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC20 token\n * @param to The address to transfer the tokens to\n * @param amount The amount of tokens to transfer\n */\n function transferERC20(IERC20 token, address to, uint256 amount) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransfer(to, amount);\n }\n\n /**\n * @notice Transfers ERC721 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC721 token\n * @param to The address to transfer the tokens to\n * @param tokenId The token id of the token\n */\n function transferERC721(IERC721 token, address to, uint256 tokenId) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransferFrom(address(this), to, tokenId);\n }\n\n /***************************************************\n * PARTNER CONFIG *\n ***************************************************/\n\n /**\n * @notice Adds a service to the account as a supported service.\n *\n * `serviceName` is defined as pkg + service name in protobuf. For example:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n *\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceName Service name to add to the account as a supported service\n * @param fee Fee of the service in aCAM (wei in ETH terminology)\n * @param capabilities Capabilities of the service (if any, optional)\n */\n function addService(\n string memory serviceName,\n uint256 fee,\n bool restrictedRate,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addService(getServiceHash(serviceName), fee, capabilities, restrictedRate);\n }\n\n /**\n * @notice Remove a service from the account by its name\n */\n function removeService(string memory serviceName) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeService(getServiceHash(serviceName));\n }\n\n // FEE\n\n /**\n * @notice Set the fee of a service by name\n */\n function setServiceFee(string memory serviceName, uint256 fee) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceFee(getServiceHash(serviceName), fee);\n }\n\n // RESTRICTED RATE\n\n /**\n * @notice Set the restricted rate of a service by name\n */\n function setServiceRestrictedRate(\n string memory serviceName,\n bool restrictedRate\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceRestrictedRate(getServiceHash(serviceName), restrictedRate);\n }\n\n // ALL CAPABILITIES\n\n /**\n * @notice Set all capabilities for a service by name\n */\n function setServiceCapabilities(\n string memory serviceName,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceCapabilities(getServiceHash(serviceName), capabilities);\n }\n\n // SINGLE CAPABILITY\n\n /**\n * @notice Add a single capability to the service by name\n */\n function addServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addServiceCapability(getServiceHash(serviceName), capability);\n }\n\n /**\n * @notice Remove a single capability from the service by name\n */\n function removeServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeServiceCapability(getServiceHash(serviceName), capability);\n }\n\n /**\n * @notice Get service hash by name. Returns the keccak256 hash of the service name\n * from the account manager\n */\n function getServiceHash(string memory serviceName) private view returns (bytes32 serviceHash) {\n return ICMAccountManager(getManagerAddress()).getRegisteredServiceHashByName(serviceName);\n }\n\n /***************************************************\n * SERVICES WITH RESOLVED NAMES *\n ***************************************************/\n\n /**\n * @notice Get all supported services. Return a list of service names and a list of service objects.\n */\n function getSupportedServices() public view returns (string[] memory serviceNames, Service[] memory services) {\n // Get all hashes and create a list with predefined length\n bytes32[] memory _serviceHashes = getAllServiceHashes();\n string[] memory _serviceNames = new string[](_serviceHashes.length);\n Service[] memory _allSupportedServicesList = new Service[](_serviceHashes.length);\n\n for (uint256 i = 0; i < _serviceHashes.length; i++) {\n _serviceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(_serviceHashes[i]);\n _allSupportedServicesList[i] = getService(_serviceHashes[i]);\n }\n\n return (_serviceNames, _allSupportedServicesList);\n }\n\n /**\n * @notice Get service fee by name. Overloading the getServiceFee function.\n */\n function getServiceFee(string memory serviceName) public view returns (uint256 fee) {\n return getServiceFee(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\n */\n function getServiceRestrictedRate(string memory serviceName) public view returns (bool restrictedRate) {\n return getServiceRestrictedRate(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service capabilities by name. Overloading the getServiceCapabilities function.\n */\n function getServiceCapabilities(string memory serviceName) public view returns (string[] memory capabilities) {\n return getServiceCapabilities(getServiceHash(serviceName));\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds wanted services.\n *\n * @param serviceNames List of service names\n */\n function addWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _addWantedService(serviceHash);\n }\n }\n\n /**\n * @notice Removes wanted services.\n *\n * @param serviceNames List of service names\n */\n function removeWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _removeWantedService(serviceHash);\n }\n }\n\n /**\n * @notice Get all wanted services.\n *\n * @return serviceNames List of service names\n */\n function getWantedServices() public view returns (string[] memory serviceNames) {\n bytes32[] memory _wantedServiceHashes = getWantedServiceHashes();\n\n string[] memory _wantedServiceNames = new string[](_wantedServiceHashes.length);\n\n for (uint256 i = 0; i < _wantedServiceHashes.length; i++) {\n _wantedServiceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(\n _wantedServiceHashes[i]\n );\n }\n\n return _wantedServiceNames;\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n /**\n * @notice Sets if off-chain payment is supported.\n *\n * @param _isSupported true if off-chain payment is supported\n */\n function setOffChainPaymentSupported(bool _isSupported) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setOffChainPaymentSupported(_isSupported);\n }\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function addSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addSupportedToken(_supportedToken);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function removeSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeSupportedToken(_supportedToken);\n }\n\n /***************************************************\n * PUBLIC KEY *\n ***************************************************/\n\n /**\n * @notice Add public key with address\n *\n * These public keys are intended to be used with for off-chain encryption of private booking data.\n *\n * @param pubKeyAddress address of the public key\n * @param data public key data\n */\n function addPublicKey(address pubKeyAddress, bytes memory data) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addPublicKey(pubKeyAddress, data);\n }\n\n /**\n * @notice Remove public key by address\n */\n function removePublicKey(address pubKeyAddress) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removePublicKey(pubKeyAddress);\n }\n\n /***************************************************\n * MESSENGER BOTS *\n ***************************************************/\n\n /**\n * @notice Adds messenger bot with initial gas money.\n */\n function addMessengerBot(address bot, uint256 gasMoney) public onlyRole(BOT_ADMIN_ROLE) {\n // Check if we can spend the gasMoney to send it to the bot\n _checkPrefundSpent(gasMoney);\n\n // Grant roles to bot\n _grantRole(CHEQUE_OPERATOR_ROLE, bot);\n _grantRole(BOOKING_OPERATOR_ROLE, bot);\n _grantRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotAdded(bot);\n\n // Send gasMoney to bot\n payable(bot).sendValue(gasMoney);\n }\n\n /**\n * @notice Removes messenger bot by revoking the roles.\n */\n function removeMessengerBot(address bot) public onlyRole(BOT_ADMIN_ROLE) {\n _revokeRole(CHEQUE_OPERATOR_ROLE, bot);\n _revokeRole(BOOKING_OPERATOR_ROLE, bot);\n _revokeRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotRemoved(bot);\n }\n\n /***************************************************\n * GAS MONEY WITHDRAW *\n ***************************************************/\n\n /**\n * @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n *\n * @param amount The amount to withdraw in aCAM (wei)\n */\n function withdrawGasMoney(uint256 amount) public nonReentrant onlyRole(GAS_WITHDRAWER_ROLE) {\n _checkPrefundSpent(amount);\n _withdrawGasMoney(amount);\n }\n\n /**\n * @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n *\n * @param limit Amount of gas money to withdraw in wei per period\n * @param period Duration of the withdrawal period in seconds\n */\n function setGasMoneyWithdrawal(uint256 limit, uint256 period) public onlyRole(BOT_ADMIN_ROLE) {\n _setGasMoneyWithdrawal(limit, period);\n }\n}\n" + }, + "contracts/account/GasMoneyManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Gas Money Manager\n\npragma solidity ^0.8.0;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n * @title GasMoneyManager\n * @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n *\n * Gas money withdrawals are restricted to a withdrawal limit and period.\n */\nabstract contract GasMoneyManager is Initializable {\n using Address for address payable;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager\n struct GasMoneyStorage {\n mapping(address => uint256) _withdrawalPeriodStart;\n mapping(address => uint256) _withdrawnAmount;\n uint256 _withdrawalLimit;\n uint256 _withdrawalPeriod;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.GasMoneyManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant GasMoneyStorageLocation =\n 0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00;\n\n function _getGasMoneyStorage() private pure returns (GasMoneyStorage storage $) {\n assembly {\n $.slot := GasMoneyStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Gas money withdrawal event\n *\n * @param withdrawer the address of the withdrawer\n * @param amount the amount withdrawn\n */\n event GasMoneyWithdrawal(address indexed withdrawer, uint256 amount);\n\n /**\n * @notice Gas money withdrawal limit and period updated event\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n event GasMoneyWithdrawalUpdated(uint256 limit, uint256 period);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error WithdrawalLimitExceeded(uint256 limit, uint256 amount);\n error WithdrawalLimitExceededForPeriod(uint256 limit, uint256 amount);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __GasMoneyManager_init(uint256 withdrawalLimit, uint256 withdrawalPeriod) internal onlyInitializing {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = withdrawalLimit;\n $._withdrawalPeriod = withdrawalPeriod;\n }\n\n /***************************************************\n * LOGIC *\n ***************************************************/\n\n /**\n * @notice Withdraws gas money.\n *\n * This functions is intended to be called by the bot to withdraw gas money.\n * Inheriting contract should restrict who can call this with a public\n * function.\n */\n function _withdrawGasMoney(uint256 amount) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n\n // Ensure the withdrawal does not exceed the allowed limit\n if (amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceeded($._withdrawalLimit, amount);\n }\n\n // Get timestamps\n uint256 currentTime = block.timestamp;\n\n // Reset the withdrawn amount if a new period has started. If more time then\n // the withdrawal period has passed, it is allowed to withdraw full amount.\n if (currentTime > $._withdrawalPeriodStart[msg.sender] + $._withdrawalPeriod) {\n $._withdrawnAmount[msg.sender] = 0;\n $._withdrawalPeriodStart[msg.sender] = currentTime;\n }\n\n // Ensure the withdrawal does not exceed the allowed limit for the period\n if ($._withdrawnAmount[msg.sender] + amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceededForPeriod($._withdrawalLimit, amount);\n }\n\n // Update the withdrawn amount\n // FIXME: Not likely but still, check overflow (safe math libs?)\n $._withdrawnAmount[msg.sender] += amount;\n\n // Transfer the gas money\n payable(msg.sender).sendValue(amount);\n\n emit GasMoneyWithdrawal(msg.sender, amount);\n }\n\n /**\n * @notice Sets the gas money withdrawal limit and period.\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n function _setGasMoneyWithdrawal(uint256 limit, uint256 period) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = limit;\n $._withdrawalPeriod = period;\n\n emit GasMoneyWithdrawalUpdated(limit, period);\n }\n\n /**\n * @notice Returns the gas money withdrawal restrictions.\n *\n * @return withdrawalLimit\n * @return withdrawalPeriod\n */\n function getGasMoneyWithdrawal() public view returns (uint256 withdrawalLimit, uint256 withdrawalPeriod) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalLimit, $._withdrawalPeriod);\n }\n\n /**\n * @notice Returns the gas money withdrawal details for an account.\n *\n * @param account address of the account\n * @return periodStart timestamp of the withdrawal period start\n * @return withdrawnAmount amount withdrawn within the period\n */\n function getGasMoneyWithdrawalForAccount(\n address account\n ) public view returns (uint256 periodStart, uint256 withdrawnAmount) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalPeriodStart[account], $._withdrawnAmount[account]);\n }\n}\n" + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"./IBookingToken.sol\";\n\n// ERC-20 Utils\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\n/**\n * @title BookingTokenOperator\n * @notice Booking token operator contract is used by the {CMAccount} contract to mint\n * and buy booking tokens.\n *\n * We made this a library so that we can use it in the {CMAccount} contract without\n * increasing the size of the contract.\n */\nlibrary BookingTokenOperator {\n using SafeERC20 for IERC20;\n\n /**\n * @dev Token approval for the BookingToken address failed.\n *\n * @param token token address\n * @param spender spender address (the BookingToken contract address)\n * @param amount amount of tokens to approve\n */\n error TokenApprovalFailed(address token, address spender, uint256 amount);\n\n /**\n * @dev Mints a booking token.\n *\n * @param bookingToken booking token contract address\n * @param reservedFor address of the CM Account that can buy the token\n * (generally the distributor)\n * @param uri URI of the token\n * @param expirationTimestamp expiration timestamp of the token in seconds\n * @param price price of the token\n * @param paymentToken payment token address\n */\n function mintBookingToken(\n address bookingToken,\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) public {\n IBookingToken(bookingToken).safeMintWithReservation(reservedFor, uri, expirationTimestamp, price, paymentToken);\n }\n\n /**\n * @dev Buys a booking token with the specified price and payment token in the\n * reservation.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n */\n function buyBookingToken(address bookingToken, uint256 tokenId) public {\n // Get the price from the booking token contract\n (uint256 price, IERC20 paymentToken) = IBookingToken(bookingToken).getReservationPrice(tokenId);\n\n // Check if payment is in native currency or in ERC20\n if (address(paymentToken) != address(0) && price > 0) {\n // Payment is in ERC20. Approve the BookingToken contract for the\n // reservation price. BookingToken should do the transfer to the\n // supplier.\n bool approval = paymentToken.approve(bookingToken, price);\n\n if (!approval) {\n revert TokenApprovalFailed(bookingToken, address(paymentToken), price);\n }\n\n // Buy the token\n IBookingToken(bookingToken).buyReservedToken(tokenId);\n } else {\n // Payment is in native currency. Buy the token by sending the payment\n // in native currency to the BookingToken contract.\n IBookingToken(bookingToken).buyReservedToken{ value: price }(tokenId);\n }\n }\n}\n" + }, + "contracts/booking-token/IBookingToken.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface IBookingToken {\n function safeMintWithReservation(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken\n ) external;\n\n function buyReservedToken(uint256 tokenId) external payable;\n\n function getReservationPrice(uint256 tokenId) external view returns (uint256 price, IERC20 paymentToken);\n}\n" + }, + "contracts/manager/ICMAccountManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n\npragma solidity ^0.8.24;\n\ninterface ICMAccountManager {\n function getAccountImplementation() external view returns (address);\n\n function getDeveloperFeeBp() external view returns (uint256);\n\n function getDeveloperWallet() external view returns (address);\n\n function isCMAccount(address account) external view returns (bool);\n\n function getRegisteredServiceHashByName(string memory serviceName) external view returns (bytes32 serviceHash);\n\n function getRegisteredServiceNameByHash(bytes32 serviceHash) external view returns (string memory serviceName);\n}\n" + }, + "contracts/partner/PartnerConfiguration.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Partner Configuration\n\npragma solidity ^0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\n/**\n * @title PartnerConfiguration\n * @notice Partner Configuration is used by the {CMAccount} contract to register\n * supported and wanted services by the partner.\n */\nabstract contract PartnerConfiguration is Initializable {\n using EnumerableSet for EnumerableSet.Bytes32Set;\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /**\n * @notice Struct for storing supported service details for suppliers\n */\n struct Service {\n uint256 _fee;\n /**\n * @dev If set to true, this means the service is restricted to pre-agreement\n * with the partner. (Not a rack rate)\n */\n bool _restrictedRate;\n string[] _capabilities;\n }\n\n struct PaymentInfo {\n bool _supportsOffChainPayment; // Supports off chain payments if true\n EnumerableSet.AddressSet _supportedTokens; // Supported on-chain token for payment\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration\n struct PartnerConfigurationStorage {\n // Set of supported service hashes\n EnumerableSet.Bytes32Set _servicesHashSet;\n // Mapping of service hashes to the service details\n mapping(bytes32 _serviceHash => Service _service) _supportedServices;\n // Payment\n PaymentInfo _paymentInfo;\n // Public keys, keep a enumerable list of public key addresses\n EnumerableSet.AddressSet _publicKeyAddressesSet;\n // Public keys for encrypting private data for Booking Token\n mapping(address publicKeyAddress => bytes publicKey) _publicKeys;\n // Services that this distributors want to buy\n EnumerableSet.Bytes32Set _wantedServicesHashSet;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.PartnerConfiguration\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant PartnerConfigurationStorageLocation =\n 0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000;\n\n function _getPartnerConfigurationStorage() private pure returns (PartnerConfigurationStorage storage $) {\n assembly {\n $.slot := PartnerConfigurationStorageLocation\n }\n }\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error ServiceAlreadyExists(bytes32 serviceHash);\n error ServiceDoesNotExist(bytes32 serviceHash);\n\n error WantedServiceAlreadyExists(bytes32 serviceHash);\n error WantedServiceDoesNotExist(bytes32 serviceHash);\n\n error PaymentTokenAlreadyExists(address token);\n error PaymentTokenDoesNotExist(address token);\n\n error PublicKeyAlreadyExists(address pubKeyAddress);\n error PublicKeyDoesNotExist(address pubKeyAddress);\n error InvalidPublicKeyUseType(uint8 use);\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event ServiceAdded(bytes32 serviceHash);\n event ServiceRemoved(bytes32 serviceHash);\n\n event WantedServiceAdded(bytes32 serviceHash);\n event WantedServiceRemoved(bytes32 serviceHash);\n\n event ServiceFeeUpdated(bytes32 serviceHash, uint256 fee);\n event ServiceRestrictedRateUpdated(bytes32 serviceHash, bool restrictedRate);\n\n event ServiceCapabilitiesUpdated(bytes32 serviceHash);\n event ServiceCapabilityAdded(bytes32 serviceHash, string capability);\n event ServiceCapabilityRemoved(bytes32 serviceHash, string capability);\n\n event PaymentTokenAdded(address token);\n event PaymentTokenRemoved(address token);\n\n event OffChainPaymentSupportUpdated(bool supportsOffChainPayment);\n\n event PublicKeyAdded(address indexed pubKeyAddress);\n event PublicKeyRemoved(address indexed pubKeyAddress);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __PartnerConfiguration_init() internal onlyInitializing {}\n\n function __PartnerConfiguration_init_unchained() internal onlyInitializing {}\n\n /***************************************************\n * SERVICE *\n ***************************************************/\n\n /**\n * @notice Adds a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee for the service\n * @param capabilities Capabilities for the service\n * @param restrictedRate If the service is restricted to pre-agreement\n */\n function _addService(\n bytes32 serviceHash,\n uint256 fee,\n string[] memory capabilities,\n bool restrictedRate\n ) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to add the service to the services hash set\n bool added = $._servicesHashSet.add(serviceHash);\n if (!added) {\n revert ServiceAlreadyExists(serviceHash);\n }\n $._supportedServices[serviceHash] = Service({\n _fee: fee,\n _capabilities: capabilities,\n _restrictedRate: restrictedRate\n });\n\n emit ServiceAdded(serviceHash);\n }\n\n /**\n * @notice Removes a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n */\n function _removeService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to remove the service\n bool removed = $._servicesHashSet.remove(serviceHash);\n if (!removed) {\n revert ServiceDoesNotExist(serviceHash);\n }\n\n delete $._supportedServices[serviceHash];\n\n emit ServiceRemoved(serviceHash);\n }\n\n /**\n * @notice Sets the Service fee for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee\n */\n function _setServiceFee(bytes32 serviceHash, uint256 fee) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._fee = fee;\n\n emit ServiceFeeUpdated(serviceHash, fee);\n }\n\n /**\n * @notice Sets the Service restricted rate for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param restrictedRate Restricted rate\n */\n function _setServiceRestrictedRate(bytes32 serviceHash, bool restrictedRate) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._restrictedRate = restrictedRate;\n\n emit ServiceRestrictedRateUpdated(serviceHash, restrictedRate);\n }\n\n /**\n * @notice Sets the Service capabilities for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param capabilities Capabilities\n */\n function _setServiceCapabilities(bytes32 serviceHash, string[] memory capabilities) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities = capabilities;\n\n emit ServiceCapabilitiesUpdated(serviceHash);\n }\n\n /**\n * @notice Adds a capability to the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _addServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities.push(capability);\n\n emit ServiceCapabilityAdded(serviceHash, capability);\n }\n\n /**\n * @notice Removes a capability from the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _removeServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n string[] storage capabilities = $._supportedServices[serviceHash]._capabilities;\n for (uint256 i = 0; i < capabilities.length; i++) {\n if (keccak256(abi.encodePacked(capabilities[i])) == keccak256(abi.encodePacked(capability))) {\n capabilities[i] = capabilities[capabilities.length - 1];\n capabilities.pop();\n emit ServiceCapabilityRemoved(serviceHash, capability);\n break;\n }\n }\n }\n\n /**\n * @notice Returns all supported service hashes.\n */\n function getAllServiceHashes() public view returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._servicesHashSet.values();\n }\n\n /**\n * @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n *\n * `serviceHash` is keccak256 hash of the pkg + service name as:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceHash Hash of the service\n */\n function getService(bytes32 serviceHash) public view virtual returns (Service memory service) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash];\n }\n\n /**\n * @notice Returns the fee for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceFee(bytes32 serviceHash) public view virtual returns (uint256 fee) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._fee;\n }\n\n /**\n * @notice Returns the restricted rate for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceRestrictedRate(bytes32 serviceHash) public view virtual returns (bool restrictedRate) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._restrictedRate;\n }\n\n /**\n * @notice Returns the capabilities for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceCapabilities(bytes32 serviceHash) public view virtual returns (string[] memory capabilities) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._capabilities;\n }\n\n /**\n * @notice Checks if the service exists.\n *\n * @param serviceHash Hash of the service\n */\n function _checkServiceExists(bytes32 serviceHash, PartnerConfigurationStorage storage $) private view {\n // Check if the service exists\n if (!$._servicesHashSet.contains(serviceHash)) {\n revert ServiceDoesNotExist(serviceHash);\n }\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds a wanted service hash to the wanted services set.\n *\n * Reverts if the service already exists.\n *\n * @param serviceHash Hash of the service\n */\n function _addWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._wantedServicesHashSet.add(serviceHash);\n\n if (!added) {\n revert WantedServiceAlreadyExists(serviceHash);\n }\n\n emit WantedServiceAdded(serviceHash);\n }\n\n /**\n * @notice Removes a wanted service hash from the wanted services set.\n *\n * Reverts if the service does not exist.\n *\n * @param serviceHash Hash of the service\n */\n function _removeWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._wantedServicesHashSet.remove(serviceHash);\n\n if (!removed) {\n revert WantedServiceDoesNotExist(serviceHash);\n }\n\n emit WantedServiceRemoved(serviceHash);\n }\n\n /**\n * @notice Returns all wanted service hashes.\n *\n * @return serviceHashes Wanted service hashes\n */\n function getWantedServiceHashes() public view virtual returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._wantedServicesHashSet.values();\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n // PAYMENT INFO: SUPPORTED TOKENS\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _token Payment token address to be added\n */\n function _addSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool added = $._paymentInfo._supportedTokens.add(_token);\n\n if (!added) {\n revert PaymentTokenAlreadyExists(_token);\n }\n\n emit PaymentTokenAdded(_token);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _token Payment token address to be removed\n */\n function _removeSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool removed = $._paymentInfo._supportedTokens.remove(_token);\n\n if (!removed) {\n revert PaymentTokenDoesNotExist(_token);\n }\n\n emit PaymentTokenRemoved(_token);\n }\n\n /**\n * @notice Returns supported token addresses.\n *\n * @return tokens Supported token addresses\n */\n function getSupportedTokens() public view virtual returns (address[] memory tokens) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportedTokens.values();\n }\n\n // PAYMENT INFO: OFF-CHAIN PAYMENT SUPPORT\n\n /**\n * @notice Sets the off-chain payment support is supported.\n */\n function _setOffChainPaymentSupported(bool _supportsOffChainPayment) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n $._paymentInfo._supportsOffChainPayment = _supportsOffChainPayment;\n emit OffChainPaymentSupportUpdated(_supportsOffChainPayment);\n }\n\n /**\n * @notice Returns true if off-chain payment is supported for the given service.\n */\n function offChainPaymentSupported() public view virtual returns (bool) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportsOffChainPayment;\n }\n\n /***************************************************\n * PUBLIC KEYS *\n ***************************************************/\n\n /**\n * @notice Adds public key with an address. Reverts if the public key already\n * exists.\n *\n * Beware: This functions does not check if the public key is actually for the\n * given address.\n */\n function _addPublicKey(address pubKeyAddress, bytes memory publicKeyData) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._publicKeyAddressesSet.add(pubKeyAddress);\n\n if (!added) {\n revert PublicKeyAlreadyExists(pubKeyAddress);\n }\n\n $._publicKeys[pubKeyAddress] = publicKeyData;\n\n emit PublicKeyAdded(pubKeyAddress);\n }\n\n /**\n * @notice Removes the public key for a given address\n *\n * Reverts if the public key does not exist\n */\n function _removePublicKey(address pubKeyAddress) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._publicKeyAddressesSet.remove(pubKeyAddress);\n\n if (!removed) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n delete $._publicKeys[pubKeyAddress];\n emit PublicKeyRemoved(pubKeyAddress);\n }\n\n /**\n * @notice Returns the addresses of all public keys. These can then be used to\n * retrieve the public keys the `getPublicKey(address)` function.\n */\n function getPublicKeysAddresses() public view virtual returns (address[] memory pubKeyAddresses) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._publicKeyAddressesSet.values();\n }\n\n /**\n * @notice Returns the public key for a given address.\n *\n * Reverts if the public key does not exist\n *\n * @param pubKeyAddress Address of the public key\n */\n function getPublicKey(address pubKeyAddress) public view virtual returns (bytes memory data) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n if (!$._publicKeyAddressesSet.contains(pubKeyAddress)) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n return $._publicKeys[pubKeyAddress];\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "ContextUpgradeable": [ + 1045 + ], + "ERC165Upgradeable": [ + 1214 + ], + "IAccessControl": [ + 1297 + ], + "Initializable": [ + 817 + ] + }, + "id": 363, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:0" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "@openzeppelin/contracts/access/IAccessControl.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 1298, + "src": "134:81:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "142:14:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 1046, + "src": "216:67:0", + "symbolAliases": [ + { + "foreign": { + "id": 4, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "224:18:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "file": "../utils/introspection/ERC165Upgradeable.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 1215, + "src": "284:79:0", + "symbolAliases": [ + { + "foreign": { + "id": 6, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1214, + "src": "292:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 9, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 818, + "src": "364:63:0", + "symbolAliases": [ + { + "foreign": { + "id": 8, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "372:13:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11, + "name": "Initializable", + "nameLocations": [ + "2136:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "2136:13:0" + }, + "id": 12, + "nodeType": "InheritanceSpecifier", + "src": "2136:13:0" + }, + { + "baseName": { + "id": 13, + "name": "ContextUpgradeable", + "nameLocations": [ + "2151:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1045, + "src": "2151:18:0" + }, + "id": 14, + "nodeType": "InheritanceSpecifier", + "src": "2151:18:0" + }, + { + "baseName": { + "id": 15, + "name": "IAccessControl", + "nameLocations": [ + "2171:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1297, + "src": "2171:14:0" + }, + "id": 16, + "nodeType": "InheritanceSpecifier", + "src": "2171:14:0" + }, + { + "baseName": { + "id": 17, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2187:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1214, + "src": "2187:17:0" + }, + "id": 18, + "nodeType": "InheritanceSpecifier", + "src": "2187:17:0" + } + ], + "canonicalName": "AccessControlUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 10, + "nodeType": "StructuredDocumentation", + "src": "429:1660:0", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role." + }, + "fullyImplemented": true, + "id": 362, + "linearizedBaseContracts": [ + 362, + 1214, + 2982, + 1297, + 1045, + 817 + ], + "name": "AccessControlUpgradeable", + "nameLocation": "2108:24:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AccessControlUpgradeable.RoleData", + "id": 25, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "hasRole", + "nameLocation": "2270:7:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2237:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 21, + "keyName": "account", + "keyNameLocation": "2253:7:0", + "keyType": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2237:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 20, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2264:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "2295:9:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2287:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 23, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "2218:8:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2211:100:0", + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 28, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "2341:18:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2317:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 26, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "canonicalName": "AccessControlUpgradeable.AccessControlStorage", + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "2374:71:0", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControl" + }, + "id": 35, + "members": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "2522:6:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "2488:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "typeName": { + "id": 33, + "keyName": "role", + "keyNameLocation": "2504:4:0", + "keyType": { + "id": 30, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2496:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2488:33:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 32, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 31, + "name": "RoleData", + "nameLocations": [ + "2512:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 25, + "src": "2512:8:0" + }, + "referencedDeclaration": 25, + "src": "2512:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage_ptr", + "typeString": "struct AccessControlUpgradeable.RoleData" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlStorage", + "nameLocation": "2457:20:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2450:85:0", + "visibility": "public" + }, + { + "constant": true, + "id": 38, + "mutability": "constant", + "name": "AccessControlStorageLocation", + "nameLocation": "2683:28:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2658:122:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2714:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1", + "typeString": "int_const 1295...(68 digits omitted)...1824" + }, + "value": "0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800" + }, + "visibility": "private" + }, + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "2877:87:0", + "statements": [ + { + "AST": { + "nativeSrc": "2896:62:0", + "nodeType": "YulBlock", + "src": "2896:62:0", + "statements": [ + { + "nativeSrc": "2910:38:0", + "nodeType": "YulAssignment", + "src": "2910:38:0", + "value": { + "name": "AccessControlStorageLocation", + "nativeSrc": "2920:28:0", + "nodeType": "YulIdentifier", + "src": "2920:28:0" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2910:6:0", + "nodeType": "YulIdentifier", + "src": "2910:6:0" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 42, + "isOffset": false, + "isSlot": true, + "src": "2910:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 38, + "isOffset": false, + "isSlot": false, + "src": "2920:28:0", + "valueSize": 1 + } + ], + "id": 44, + "nodeType": "InlineAssembly", + "src": "2887:71:0" + } + ] + }, + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlStorage", + "nameLocation": "2796:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "2820:2:0" + }, + "returnParameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "$", + "nameLocation": "2874:1:0", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "2845:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 41, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40, + "name": "AccessControlStorage", + "nameLocations": [ + "2845:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "2845:20:0" + }, + "referencedDeclaration": 35, + "src": "2845:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2844:32:0" + }, + "scope": 362, + "src": "2787:177:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 56, + "nodeType": "Block", + "src": "3181:44:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 52, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 51, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 129, + "src": "3191:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) view" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 54, + "nodeType": "ExpressionStatement", + "src": "3191:16:0" + }, + { + "id": 55, + "nodeType": "PlaceholderStatement", + "src": "3217:1:0" + } + ] + }, + "documentation": { + "id": 47, + "nodeType": "StructuredDocumentation", + "src": "2970:174:0", + "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role." + }, + "id": 57, + "name": "onlyRole", + "nameLocation": "3158:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "role", + "nameLocation": "3175:4:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "3167:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3166:14:0" + }, + "src": "3149:76:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 62, + "nodeType": "Block", + "src": "3289:7:0", + "statements": [] + }, + "id": 63, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 60, + "kind": "modifierInvocation", + "modifierName": { + "id": 59, + "name": "onlyInitializing", + "nameLocations": [ + "3272:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3272:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3272:16:0" + } + ], + "name": "__AccessControl_init", + "nameLocation": "3240:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [], + "src": "3260:2:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "3289:0:0" + }, + "scope": 362, + "src": "3231:65:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "3370:7:0", + "statements": [] + }, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 66, + "kind": "modifierInvocation", + "modifierName": { + "id": 65, + "name": "onlyInitializing", + "nameLocations": [ + "3353:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3353:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3353:16:0" + } + ], + "name": "__AccessControl_init_unchained", + "nameLocation": "3311:30:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "3341:2:0" + }, + "returnParameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "3370:0:0" + }, + "scope": 362, + "src": "3302:75:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1213 + ], + "body": { + "id": 90, + "nodeType": "Block", + "src": "3534:111:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 78, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3551:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 80, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "3571:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$1297_$", + "typeString": "type(contract IAccessControl)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$1297_$", + "typeString": "type(contract IAccessControl)" + } + ], + "id": 79, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3566:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$1297", + "typeString": "type(contract IAccessControl)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3587:11:0", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "3566:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3551:47:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 86, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3626:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 84, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3602:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlUpgradeable_$362_$", + "typeString": "type(contract super AccessControlUpgradeable)" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3608:17:0", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1213, + "src": "3602:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3602:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3551:87:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 89, + "nodeType": "Return", + "src": "3544:94:0" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "3382:56:0", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "3452:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 74, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3510:8:0" + }, + "parameters": { + "id": 73, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "3477:11:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3470:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 71, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3470:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3469:20:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3528:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3528:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3527:6:0" + }, + "scope": 362, + "src": "3443:202:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1264 + ], + "body": { + "id": 115, + "nodeType": "Block", + "src": "3815:124:0", + "statements": [ + { + "assignments": [ + 103 + ], + "declarations": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "$", + "nameLocation": "3854:1:0", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "3825:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 102, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 101, + "name": "AccessControlStorage", + "nameLocations": [ + "3825:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "3825:20:0" + }, + "referencedDeclaration": 35, + "src": "3825:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 106, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 104, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "3858:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3858:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3825:59:0" + }, + { + "expression": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3901:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3903:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "3901:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 110, + "indexExpression": { + "id": 109, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3910:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3916:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "3901:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 113, + "indexExpression": { + "id": 112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "3924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 100, + "id": 114, + "nodeType": "Return", + "src": "3894:38:0" + } + ] + }, + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "3651:76:0", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3741:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "role", + "nameLocation": "3757:4:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3749:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 93, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3749:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "account", + "nameLocation": "3771:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3763:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3763:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3748:31:0" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3809:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3809:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3808:6:0" + }, + "scope": 362, + "src": "3732:207:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "4204:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 123, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4225:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 124, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "4231:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4231:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 122, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 150, + "src": "4214:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) view" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "ExpressionStatement", + "src": "4214:30:0" + } + ] + }, + "documentation": { + "id": 117, + "nodeType": "StructuredDocumentation", + "src": "3945:198:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier." + }, + "id": 129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4157:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "role", + "nameLocation": "4176:4:0", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4168:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4168:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4167:14:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [], + "src": "4204:0:0" + }, + "scope": 362, + "src": "4148:103:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "4454:124:0", + "statements": [ + { + "condition": { + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4468:23:0", + "subExpression": { + "arguments": [ + { + "id": 138, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4477:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 139, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "4469:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 148, + "nodeType": "IfStatement", + "src": "4464:108:0", + "trueBody": { + "id": 147, + "nodeType": "Block", + "src": "4493:79:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 143, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 144, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4556:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 142, + "name": "AccessControlUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "4514:32:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4514:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "RevertStatement", + "src": "4507:54:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "4257:119:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`." + }, + "id": 150, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4390:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "role", + "nameLocation": "4409:4:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4401:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4401:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "account", + "nameLocation": "4423:7:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4415:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4400:31:0" + }, + "returnParameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:0:0" + }, + "scope": 362, + "src": "4381:197:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1272 + ], + "body": { + "id": 170, + "nodeType": "Block", + "src": "4833:117:0", + "statements": [ + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "$", + "nameLocation": "4872:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4843:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 159, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 158, + "name": "AccessControlStorage", + "nameLocations": [ + "4843:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "4843:20:0" + }, + "referencedDeclaration": 35, + "src": "4843:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 163, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 161, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4876:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4876:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4843:59:0" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 164, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "4919:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4921:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "4919:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 167, + "indexExpression": { + "id": 166, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "4928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4919:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4934:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "4919:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 157, + "id": 169, + "nodeType": "Return", + "src": "4912:31:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "4584:170:0", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4768:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "role", + "nameLocation": "4789:4:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4781:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4781:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4780:14:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4824:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4824:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4823:9:0" + }, + "scope": 362, + "src": "4759:191:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1280 + ], + "body": { + "id": 189, + "nodeType": "Block", + "src": "5340:42:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 185, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 186, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "5367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 184, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5350:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5350:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 188, + "nodeType": "ExpressionStatement", + "src": "5350:25:0" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "4956:285:0", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event." + }, + "functionSelector": "2f2ff15d", + "id": 190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 180, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5333:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 179, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 182, + "kind": "modifierInvocation", + "modifierName": { + "id": 178, + "name": "onlyRole", + "nameLocations": [ + "5311:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5311:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5311:28:0" + } + ], + "name": "grantRole", + "nameLocation": "5255:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "role", + "nameLocation": "5273:4:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5265:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "account", + "nameLocation": "5287:7:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5279:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5279:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5264:31:0" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5340:0:0" + }, + "scope": 362, + "src": "5246:136:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1288 + ], + "body": { + "id": 208, + "nodeType": "Block", + "src": "5757:43:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 204, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "5785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "5767:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5767:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "5767:26:0" + } + ] + }, + "documentation": { + "id": 191, + "nodeType": "StructuredDocumentation", + "src": "5388:269:0", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "d547741f", + "id": 209, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 198, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5737:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5737:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 201, + "kind": "modifierInvocation", + "modifierName": { + "id": 197, + "name": "onlyRole", + "nameLocations": [ + "5728:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5728:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5728:28:0" + } + ], + "name": "revokeRole", + "nameLocation": "5671:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "role", + "nameLocation": "5690:4:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5682:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5682:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "account", + "nameLocation": "5704:7:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5696:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5696:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5681:31:0" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "5757:0:0" + }, + "scope": 362, + "src": "5662:138:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1296 + ], + "body": { + "id": 231, + "nodeType": "Block", + "src": "6427:166:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 217, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6441:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 218, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "6463:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6463:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6441:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 225, + "nodeType": "IfStatement", + "src": "6437:102:0", + "trueBody": { + "id": 224, + "nodeType": "Block", + "src": "6477:62:0", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 221, + "name": "AccessControlBadConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1227, + "src": "6498:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 223, + "nodeType": "RevertStatement", + "src": "6491:37:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 227, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "6561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 228, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6567:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "6549:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6549:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "6549:37:0" + } + ] + }, + "documentation": { + "id": 210, + "nodeType": "StructuredDocumentation", + "src": "5806:537:0", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "36568abe", + "id": 232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "6357:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "role", + "nameLocation": "6378:4:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6370:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 214, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "6392:18:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6384:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 213, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6384:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6369:42:0" + }, + "returnParameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6427:0:0" + }, + "scope": 362, + "src": "6348:245:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 267, + "nodeType": "Block", + "src": "6791:245:0", + "statements": [ + { + "assignments": [ + 242 + ], + "declarations": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "$", + "nameLocation": "6830:1:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6801:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 241, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 240, + "name": "AccessControlStorage", + "nameLocations": [ + "6801:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "6801:20:0" + }, + "referencedDeclaration": 35, + "src": "6801:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 245, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 243, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6834:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6834:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6801:59:0" + }, + { + "assignments": [ + 247 + ], + "declarations": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "6878:17:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6870:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6870:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "arguments": [ + { + "id": 249, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6911:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 248, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "6898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6898:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6870:46:0" + }, + { + "expression": { + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 252, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "6926:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6928:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "6926:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 256, + "indexExpression": { + "id": 254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6926:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6941:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "6926:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 258, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "6953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6926:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 260, + "nodeType": "ExpressionStatement", + "src": "6926:36:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 262, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 263, + "name": "previousAdminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "7000:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 264, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "7019:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 261, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1236, + "src": "6977:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6977:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 266, + "nodeType": "EmitStatement", + "src": "6972:57:0" + } + ] + }, + "documentation": { + "id": 233, + "nodeType": "StructuredDocumentation", + "src": "6599:114:0", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6727:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "role", + "nameLocation": "6749:4:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6741:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6741:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6763:9:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6755:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6740:33:0" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [], + "src": "6791:0:0" + }, + "scope": 362, + "src": "6718:318:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 314, + "nodeType": "Block", + "src": "7353:304:0", + "statements": [ + { + "assignments": [ + 280 + ], + "declarations": [ + { + "constant": false, + "id": 280, + "mutability": "mutable", + "name": "$", + "nameLocation": "7392:1:0", + "nodeType": "VariableDeclaration", + "scope": 314, + "src": "7363:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 279, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 278, + "name": "AccessControlStorage", + "nameLocations": [ + "7363:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7363:20:0" + }, + "referencedDeclaration": 35, + "src": "7363:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 283, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 281, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "7396:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7396:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7363:59:0" + }, + { + "condition": { + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7436:23:0", + "subExpression": { + "arguments": [ + { + "id": 285, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7445:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 286, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7451:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 284, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "7437:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7437:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 312, + "nodeType": "Block", + "src": "7614:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7635:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 277, + "id": 311, + "nodeType": "Return", + "src": "7628:12:0" + } + ] + }, + "id": 313, + "nodeType": "IfStatement", + "src": "7432:219:0", + "trueBody": { + "id": 309, + "nodeType": "Block", + "src": "7461:147:0", + "statements": [ + { + "expression": { + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 289, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 280, + "src": "7475:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7477:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "7475:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 293, + "indexExpression": { + "id": 291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7484:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7475:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7490:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 296, + "indexExpression": { + "id": 295, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7475:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "7475:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "7475:38:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 301, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7544:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 303, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "7559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7559:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 300, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1245, + "src": "7532:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7532:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "EmitStatement", + "src": "7527:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 277, + "id": 308, + "nodeType": "Return", + "src": "7586:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 269, + "nodeType": "StructuredDocumentation", + "src": "7042:223:0", + "text": " @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event." + }, + "id": 315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7279:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "role", + "nameLocation": "7298:4:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7290:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 270, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7290:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "account", + "nameLocation": "7312:7:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7304:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7304:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7289:31:0" + }, + "returnParameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 275, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7346:6:0" + }, + "scope": 362, + "src": "7270:387:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "7976:304:0", + "statements": [ + { + "assignments": [ + 327 + ], + "declarations": [ + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "$", + "nameLocation": "8015:1:0", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "7986:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 326, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 325, + "name": "AccessControlStorage", + "nameLocations": [ + "7986:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7986:20:0" + }, + "referencedDeclaration": 35, + "src": "7986:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 330, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 328, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "8019:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7986:59:0" + }, + { + "condition": { + "arguments": [ + { + "id": 332, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 333, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8073:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "8059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8059:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 358, + "nodeType": "Block", + "src": "8237:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8258:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 324, + "id": 357, + "nodeType": "Return", + "src": "8251:12:0" + } + ] + }, + "id": 359, + "nodeType": "IfStatement", + "src": "8055:219:0", + "trueBody": { + "id": 355, + "nodeType": "Block", + "src": "8083:148:0", + "statements": [ + { + "expression": { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 335, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "8097:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8099:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "8097:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 339, + "indexExpression": { + "id": 337, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8106:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8097:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8112:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "8097:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 342, + "indexExpression": { + "id": 341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8097:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8097:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "8097:39:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 347, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 348, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 349, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "8182:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8182:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 346, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1254, + "src": "8155:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8155:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 352, + "nodeType": "EmitStatement", + "src": "8150:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8216:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 324, + "id": 354, + "nodeType": "Return", + "src": "8209:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 316, + "nodeType": "StructuredDocumentation", + "src": "7663:224:0", + "text": " @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event." + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7901:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "role", + "nameLocation": "7921:4:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "account", + "nameLocation": "7935:7:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7927:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7927:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7912:31:0" + }, + "returnParameters": { + "id": 324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7970:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7970:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7969:6:0" + }, + "scope": 362, + "src": "7892:388:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 363, + "src": "2090:6192:0", + "usedErrors": [ + 580, + 583, + 1224, + 1227 + ], + "usedEvents": [ + 588, + 1236, + 1245, + 1254 + ] + } + ], + "src": "108:8175:0" + }, + "id": 0 + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 563 + ], + "AccessControlUpgradeable": [ + 362 + ], + "EnumerableSet": [ + 3595 + ], + "IAccessControlEnumerable": [ + 1323 + ], + "Initializable": [ + 817 + ] + }, + "id": 564, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 364, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "129:24:1" + }, + { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "id": 366, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 1324, + "src": "155:112:1", + "symbolAliases": [ + { + "foreign": { + "id": 365, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "163:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "file": "../AccessControlUpgradeable.sol", + "id": 368, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 363, + "src": "268:73:1", + "symbolAliases": [ + { + "foreign": { + "id": 367, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "276:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 370, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 3596, + "src": "342:86:1", + "symbolAliases": [ + { + "foreign": { + "id": 369, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "350:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 372, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 564, + "sourceUnit": 818, + "src": "429:66:1", + "symbolAliases": [ + { + "foreign": { + "id": 371, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "437:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 374, + "name": "Initializable", + "nameLocations": [ + "648:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "648:13:1" + }, + "id": 375, + "nodeType": "InheritanceSpecifier", + "src": "648:13:1" + }, + { + "baseName": { + "id": 376, + "name": "IAccessControlEnumerable", + "nameLocations": [ + "663:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1323, + "src": "663:24:1" + }, + "id": 377, + "nodeType": "InheritanceSpecifier", + "src": "663:24:1" + }, + { + "baseName": { + "id": 378, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "689:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "689:24:1" + }, + "id": 379, + "nodeType": "InheritanceSpecifier", + "src": "689:24:1" + } + ], + "canonicalName": "AccessControlEnumerableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 373, + "nodeType": "StructuredDocumentation", + "src": "497:94:1", + "text": " @dev Extension of {AccessControl} that allows enumerating the members of each role." + }, + "fullyImplemented": true, + "id": 563, + "linearizedBaseContracts": [ + 563, + 362, + 1214, + 2982, + 1323, + 1297, + 1045, + 817 + ], + "name": "AccessControlEnumerableUpgradeable", + "nameLocation": "610:34:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 383, + "libraryName": { + "id": 380, + "name": "EnumerableSet", + "nameLocations": [ + "726:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3595, + "src": "726:13:1" + }, + "nodeType": "UsingForDirective", + "src": "720:49:1", + "typeName": { + "id": 382, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 381, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "744:13:1", + "758:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "744:24:1" + }, + "referencedDeclaration": 3308, + "src": "744:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage", + "documentation": { + "id": 384, + "nodeType": "StructuredDocumentation", + "src": "775:81:1", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable" + }, + "id": 390, + "members": [ + { + "constant": false, + "id": 389, + "mutability": "mutable", + "name": "_roleMembers", + "nameLocation": "959:12:1", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "909:62:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "typeName": { + "id": 388, + "keyName": "role", + "keyNameLocation": "925:4:1", + "keyType": { + "id": 385, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "917:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "909:49:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 386, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "933:13:1", + "947:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "933:24:1" + }, + "referencedDeclaration": 3308, + "src": "933:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlEnumerableStorage", + "nameLocation": "868:30:1", + "nodeType": "StructDefinition", + "scope": 563, + "src": "861:117:1", + "visibility": "public" + }, + { + "constant": true, + "id": 393, + "mutability": "constant", + "name": "AccessControlEnumerableStorageLocation", + "nameLocation": "1136:38:1", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "1111:132:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 391, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1111:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863316636666532343632316365383165633538323763616630323533636164623734373039623036313633306536623535653832333731373035393332303030", + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1177:66:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_87732778178968556439956192144688703237987636878447527990685272173340959907840_by_1", + "typeString": "int_const 8773...(69 digits omitted)...7840" + }, + "value": "0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000" + }, + "visibility": "private" + }, + { + "body": { + "id": 400, + "nodeType": "Block", + "src": "1360:97:1", + "statements": [ + { + "AST": { + "nativeSrc": "1379:72:1", + "nodeType": "YulBlock", + "src": "1379:72:1", + "statements": [ + { + "nativeSrc": "1393:48:1", + "nodeType": "YulAssignment", + "src": "1393:48:1", + "value": { + "name": "AccessControlEnumerableStorageLocation", + "nativeSrc": "1403:38:1", + "nodeType": "YulIdentifier", + "src": "1403:38:1" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1393:6:1", + "nodeType": "YulIdentifier", + "src": "1393:6:1" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 397, + "isOffset": false, + "isSlot": true, + "src": "1393:6:1", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 393, + "isOffset": false, + "isSlot": false, + "src": "1403:38:1", + "valueSize": 1 + } + ], + "id": 399, + "nodeType": "InlineAssembly", + "src": "1370:81:1" + } + ] + }, + "id": 401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlEnumerableStorage", + "nameLocation": "1259:34:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 394, + "nodeType": "ParameterList", + "parameters": [], + "src": "1293:2:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "$", + "nameLocation": "1357:1:1", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "1318:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 396, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 395, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "1318:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "1318:30:1" + }, + "referencedDeclaration": 390, + "src": "1318:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1317:42:1" + }, + "scope": 563, + "src": "1250:207:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 406, + "nodeType": "Block", + "src": "1531:7:1", + "statements": [] + }, + "id": 407, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 404, + "kind": "modifierInvocation", + "modifierName": { + "id": 403, + "name": "onlyInitializing", + "nameLocations": [ + "1514:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1514:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1514:16:1" + } + ], + "name": "__AccessControlEnumerable_init", + "nameLocation": "1472:30:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [], + "src": "1502:2:1" + }, + "returnParameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [], + "src": "1531:0:1" + }, + "scope": 563, + "src": "1463:75:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 412, + "nodeType": "Block", + "src": "1622:7:1", + "statements": [] + }, + "id": 413, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 410, + "kind": "modifierInvocation", + "modifierName": { + "id": 409, + "name": "onlyInitializing", + "nameLocations": [ + "1605:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "1605:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1605:16:1" + } + ], + "name": "__AccessControlEnumerable_init_unchained", + "nameLocation": "1553:40:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [], + "src": "1593:2:1" + }, + "returnParameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [], + "src": "1622:0:1" + }, + "scope": 563, + "src": "1544:85:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 91 + ], + "body": { + "id": 434, + "nodeType": "Block", + "src": "1786:121:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 422, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1803:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 424, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "1823:24:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$1323_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$1323_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + ], + "id": 423, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1818:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControlEnumerable_$1323", + "typeString": "type(contract IAccessControlEnumerable)" + } + }, + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1849:11:1", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1818:42:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1803:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 430, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1888:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 428, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "1864:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1870:17:1", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "1864:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1864:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1803:97:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 421, + "id": 433, + "nodeType": "Return", + "src": "1796:104:1" + } + ] + }, + "documentation": { + "id": 414, + "nodeType": "StructuredDocumentation", + "src": "1634:56:1", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1704:17:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 418, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1762:8:1" + }, + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1729:11:1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1722:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 415, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1722:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1721:20:1" + }, + "returnParameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 420, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1780:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 419, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1780:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1779:6:1" + }, + "scope": 563, + "src": "1695:212:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1314 + ], + "body": { + "id": 459, + "nodeType": "Block", + "src": "2582:143:1", + "statements": [ + { + "assignments": [ + 447 + ], + "declarations": [ + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "$", + "nameLocation": "2631:1:1", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "2592:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 446, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 445, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2592:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2592:30:1" + }, + "referencedDeclaration": 390, + "src": "2592:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 450, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 448, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "2635:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2635:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2592:79:1" + }, + { + "expression": { + "arguments": [ + { + "id": 456, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "2712:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 451, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "2688:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2690:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "2688:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 454, + "indexExpression": { + "id": 453, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "2703:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2688:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 455, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2709:2:1", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 3431, + "src": "2688:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3308_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2688:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 444, + "id": 458, + "nodeType": "Return", + "src": "2681:37:1" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "1913:574:1", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "2501:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "role", + "nameLocation": "2523:4:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2515:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 440, + "mutability": "mutable", + "name": "index", + "nameLocation": "2537:5:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2529:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2514:29:1" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2573:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2572:9:1" + }, + "scope": 563, + "src": "2492:233:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1322 + ], + "body": { + "id": 481, + "nodeType": "Block", + "src": "2973:142:1", + "statements": [ + { + "assignments": [ + 470 + ], + "declarations": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "$", + "nameLocation": "3022:1:1", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "2983:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 469, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 468, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2983:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2983:30:1" + }, + "referencedDeclaration": 390, + "src": "2983:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 471, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3026:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3026:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2983:79:1" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "expression": { + "id": 474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "3079:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3081:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3079:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 477, + "indexExpression": { + "id": 476, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "3094:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3079:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3100:6:1", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 3404, + "src": "3079:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3308_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3079:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 467, + "id": 480, + "nodeType": "Return", + "src": "3072:36:1" + } + ] + }, + "documentation": { + "id": 461, + "nodeType": "StructuredDocumentation", + "src": "2731:157:1", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "2902:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "role", + "nameLocation": "2929:4:1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2921:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 462, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2920:14:1" + }, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2964:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2964:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2963:9:1" + }, + "scope": 563, + "src": "2893:222:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 315 + ], + "body": { + "id": 521, + "nodeType": "Block", + "src": "3309:256:1", + "statements": [ + { + "assignments": [ + 495 + ], + "declarations": [ + { + "constant": false, + "id": 495, + "mutability": "mutable", + "name": "$", + "nameLocation": "3358:1:1", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "3319:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 494, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 493, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "3319:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "3319:30:1" + }, + "referencedDeclaration": 390, + "src": "3319:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 498, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 496, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3362:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3362:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3319:79:1" + }, + { + "assignments": [ + 500 + ], + "declarations": [ + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "granted", + "nameLocation": "3413:7:1", + "nodeType": "VariableDeclaration", + "scope": 521, + "src": "3408:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 499, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3408:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 506, + "initialValue": { + "arguments": [ + { + "id": 503, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 485, + "src": "3440:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 504, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "3446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 501, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3423:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3429:10:1", + "memberName": "_grantRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "3423:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3423:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3408:46:1" + }, + { + "condition": { + "id": 507, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "3468:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 518, + "nodeType": "IfStatement", + "src": "3464:71:1", + "trueBody": { + "id": 517, + "nodeType": "Block", + "src": "3477:58:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 514, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "3516:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 508, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "3491:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 511, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3493:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3491:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 512, + "indexExpression": { + "id": 510, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 485, + "src": "3506:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3491:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 513, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3512:3:1", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3335, + "src": "3491:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3491:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 516, + "nodeType": "ExpressionStatement", + "src": "3491:33:1" + } + ] + } + }, + { + "expression": { + "id": 519, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "3551:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 492, + "id": 520, + "nodeType": "Return", + "src": "3544:14:1" + } + ] + }, + "documentation": { + "id": 483, + "nodeType": "StructuredDocumentation", + "src": "3121:91:1", + "text": " @dev Overload {AccessControl-_grantRole} to track enumerable memberships" + }, + "id": 522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "3226:10:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 489, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3285:8:1" + }, + "parameters": { + "id": 488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 485, + "mutability": "mutable", + "name": "role", + "nameLocation": "3245:4:1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3237:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 484, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3237:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 487, + "mutability": "mutable", + "name": "account", + "nameLocation": "3259:7:1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3251:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3251:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3236:31:1" + }, + "returnParameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 491, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3303:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3303:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3302:6:1" + }, + "scope": 563, + "src": "3217:348:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 361 + ], + "body": { + "id": 561, + "nodeType": "Block", + "src": "3761:260:1", + "statements": [ + { + "assignments": [ + 535 + ], + "declarations": [ + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "$", + "nameLocation": "3810:1:1", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "3771:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 534, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 533, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "3771:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "3771:30:1" + }, + "referencedDeclaration": 390, + "src": "3771:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 538, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 536, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3814:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3814:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3771:79:1" + }, + { + "assignments": [ + 540 + ], + "declarations": [ + { + "constant": false, + "id": 540, + "mutability": "mutable", + "name": "revoked", + "nameLocation": "3865:7:1", + "nodeType": "VariableDeclaration", + "scope": 561, + "src": "3860:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 539, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3860:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 546, + "initialValue": { + "arguments": [ + { + "id": 543, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "3893:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 544, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "3899:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 541, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3875:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$563_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3881:11:1", + "memberName": "_revokeRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 361, + "src": "3875:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3875:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3860:47:1" + }, + { + "condition": { + "id": 547, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 558, + "nodeType": "IfStatement", + "src": "3917:74:1", + "trueBody": { + "id": 557, + "nodeType": "Block", + "src": "3930:61:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 554, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "3972:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 548, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "3944:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3946:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3944:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$3308_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 552, + "indexExpression": { + "id": 550, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "3959:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3944:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 553, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3965:6:1", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "3944:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3944:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 556, + "nodeType": "ExpressionStatement", + "src": "3944:36:1" + } + ] + } + }, + { + "expression": { + "id": 559, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "4007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 532, + "id": 560, + "nodeType": "Return", + "src": "4000:14:1" + } + ] + }, + "documentation": { + "id": 523, + "nodeType": "StructuredDocumentation", + "src": "3571:92:1", + "text": " @dev Overload {AccessControl-_revokeRole} to track enumerable memberships" + }, + "id": 562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "3677:11:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 529, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3737:8:1" + }, + "parameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "mutability": "mutable", + "name": "role", + "nameLocation": "3697:4:1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3689:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3689:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "mutability": "mutable", + "name": "account", + "nameLocation": "3711:7:1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3703:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3703:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3688:31:1" + }, + "returnParameters": { + "id": 532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "3755:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 530, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3755:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3754:6:1" + }, + "scope": 563, + "src": "3668:353:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 564, + "src": "592:3431:1", + "usedErrors": [ + 580, + 583, + 1224, + 1227 + ], + "usedEvents": [ + 588, + 1236, + 1245, + 1254 + ] + } + ], + "src": "129:3895:1" + }, + "id": 1 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "exportedSymbols": { + "Initializable": [ + 817 + ] + }, + "id": 818, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 565, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:2" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Initializable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 566, + "nodeType": "StructuredDocumentation", + "src": "139:2209:2", + "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" + }, + "fullyImplemented": true, + "id": 817, + "linearizedBaseContracts": [ + 817 + ], + "name": "Initializable", + "nameLocation": "2367:13:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Initializable.InitializableStorage", + "documentation": { + "id": 567, + "nodeType": "StructuredDocumentation", + "src": "2387:293:2", + "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" + }, + "id": 574, + "members": [ + { + "constant": false, + "id": 570, + "mutability": "mutable", + "name": "_initialized", + "nameLocation": "2820:12:2", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "2813:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 569, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2813:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "_initializing", + "nameLocation": "2955:13:2", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "2950:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 572, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2950:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "InitializableStorage", + "nameLocation": "2692:20:2", + "nodeType": "StructDefinition", + "scope": 817, + "src": "2685:290:2", + "visibility": "public" + }, + { + "constant": true, + "id": 577, + "mutability": "constant", + "name": "INITIALIZABLE_STORAGE", + "nameLocation": "3123:21:2", + "nodeType": "VariableDeclaration", + "scope": 817, + "src": "3098:115:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3098:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:66:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", + "typeString": "int_const 1089...(70 digits omitted)...9600" + }, + "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 578, + "nodeType": "StructuredDocumentation", + "src": "3220:60:2", + "text": " @dev The contract is already initialized." + }, + "errorSelector": "f92ee8a9", + "id": 580, + "name": "InvalidInitialization", + "nameLocation": "3291:21:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 579, + "nodeType": "ParameterList", + "parameters": [], + "src": "3312:2:2" + }, + "src": "3285:30:2" + }, + { + "documentation": { + "id": 581, + "nodeType": "StructuredDocumentation", + "src": "3321:57:2", + "text": " @dev The contract is not initializing." + }, + "errorSelector": "d7e6bcf8", + "id": 583, + "name": "NotInitializing", + "nameLocation": "3389:15:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 582, + "nodeType": "ParameterList", + "parameters": [], + "src": "3404:2:2" + }, + "src": "3383:24:2" + }, + { + "anonymous": false, + "documentation": { + "id": 584, + "nodeType": "StructuredDocumentation", + "src": "3413:90:2", + "text": " @dev Triggered when the contract has been initialized or reinitialized." + }, + "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", + "id": 588, + "name": "Initialized", + "nameLocation": "3514:11:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 586, + "indexed": false, + "mutability": "mutable", + "name": "version", + "nameLocation": "3533:7:2", + "nodeType": "VariableDeclaration", + "scope": 588, + "src": "3526:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 585, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3526:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3525:16:2" + }, + "src": "3508:34:2" + }, + { + "body": { + "id": 670, + "nodeType": "Block", + "src": "4092:1081:2", + "statements": [ + { + "assignments": [ + 593 + ], + "declarations": [ + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "$", + "nameLocation": "4187:1:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4158:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 592, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 591, + "name": "InitializableStorage", + "nameLocations": [ + "4158:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4158:20:2" + }, + "referencedDeclaration": 574, + "src": "4158:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 596, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 594, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "4191:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4191:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4158:59:2" + }, + { + "assignments": [ + 598 + ], + "declarations": [ + { + "constant": false, + "id": 598, + "mutability": "mutable", + "name": "isTopLevelCall", + "nameLocation": "4284:14:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4279:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 597, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4279:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 602, + "initialValue": { + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4301:16:2", + "subExpression": { + "expression": { + "id": 599, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4302:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 600, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4304:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "4302:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4279:38:2" + }, + { + "assignments": [ + 604 + ], + "declarations": [ + { + "constant": false, + "id": 604, + "mutability": "mutable", + "name": "initialized", + "nameLocation": "4334:11:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4327:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 603, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4327:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 607, + "initialValue": { + "expression": { + "id": 605, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4348:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 606, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4350:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "4348:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4327:35:2" + }, + { + "assignments": [ + 609 + ], + "declarations": [ + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "initialSetup", + "nameLocation": "4711:12:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4706:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 608, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 615, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 610, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "4726:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4741:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4726:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 613, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "4746:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4726:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4706:54:2" + }, + { + "assignments": [ + 617 + ], + "declarations": [ + { + "constant": false, + "id": 617, + "mutability": "mutable", + "name": "construction", + "nameLocation": "4775:12:2", + "nodeType": "VariableDeclaration", + "scope": 670, + "src": "4770:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 616, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 630, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 618, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "4790:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4805:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4790:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 623, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4818:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$817", + "typeString": "contract Initializable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Initializable_$817", + "typeString": "contract Initializable" + } + ], + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4810:7:2", + "typeDescriptions": {} + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4810:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4824:4:2", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4810:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4829:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4810:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4810:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4790:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4770:70:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4855:13:2", + "subExpression": { + "id": 631, + "name": "initialSetup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "4856:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4872:13:2", + "subExpression": { + "id": 633, + "name": "construction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "4873:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4855:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 640, + "nodeType": "IfStatement", + "src": "4851:91:2", + "trueBody": { + "id": 639, + "nodeType": "Block", + "src": "4887:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 636, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "4908:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4908:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 638, + "nodeType": "RevertStatement", + "src": "4901:30:2" + } + ] + } + }, + { + "expression": { + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 641, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4951:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4953:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "4951:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4968:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4951:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 646, + "nodeType": "ExpressionStatement", + "src": "4951:18:2" + }, + { + "condition": { + "id": 647, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "4983:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 655, + "nodeType": "IfStatement", + "src": "4979:67:2", + "trueBody": { + "id": 654, + "nodeType": "Block", + "src": "4999:47:2", + "statements": [ + { + "expression": { + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 648, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "5013:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 650, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5015:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "5013:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5031:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5013:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 653, + "nodeType": "ExpressionStatement", + "src": "5013:22:2" + } + ] + } + }, + { + "id": 656, + "nodeType": "PlaceholderStatement", + "src": "5055:1:2" + }, + { + "condition": { + "id": 657, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "5070:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 669, + "nodeType": "IfStatement", + "src": "5066:101:2", + "trueBody": { + "id": 668, + "nodeType": "Block", + "src": "5086:81:2", + "statements": [ + { + "expression": { + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 658, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "5100:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5102:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "5100:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5118:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5100:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "5100:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "31", + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5154:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 664, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "5142:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5142:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 667, + "nodeType": "EmitStatement", + "src": "5137:19:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 589, + "nodeType": "StructuredDocumentation", + "src": "3548:516:2", + "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." + }, + "id": 671, + "name": "initializer", + "nameLocation": "4078:11:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 590, + "nodeType": "ParameterList", + "parameters": [], + "src": "4089:2:2" + }, + "src": "4069:1104:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 717, + "nodeType": "Block", + "src": "6291:392:2", + "statements": [ + { + "assignments": [ + 678 + ], + "declarations": [ + { + "constant": false, + "id": 678, + "mutability": "mutable", + "name": "$", + "nameLocation": "6386:1:2", + "nodeType": "VariableDeclaration", + "scope": 717, + "src": "6357:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 676, + "name": "InitializableStorage", + "nameLocations": [ + "6357:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "6357:20:2" + }, + "referencedDeclaration": 574, + "src": "6357:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 679, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "6390:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6390:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6357:59:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 682, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6431:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6433:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6431:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 684, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6450:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6452:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "6450:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 686, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6468:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6450:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6431:44:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 693, + "nodeType": "IfStatement", + "src": "6427:105:2", + "trueBody": { + "id": 692, + "nodeType": "Block", + "src": "6477:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 689, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "6498:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 691, + "nodeType": "RevertStatement", + "src": "6491:30:2" + } + ] + } + }, + { + "expression": { + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 694, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6541:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 696, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6543:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "6541:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 697, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6558:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6541:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 699, + "nodeType": "ExpressionStatement", + "src": "6541:24:2" + }, + { + "expression": { + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 700, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6575:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 702, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6577:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6575:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6593:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6575:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 705, + "nodeType": "ExpressionStatement", + "src": "6575:22:2" + }, + { + "id": 706, + "nodeType": "PlaceholderStatement", + "src": "6607:1:2" + }, + { + "expression": { + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 707, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "6618:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6620:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "6618:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6636:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6618:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 712, + "nodeType": "ExpressionStatement", + "src": "6618:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 714, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "6668:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 713, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "6656:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6656:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "EmitStatement", + "src": "6651:25:2" + } + ] + }, + "documentation": { + "id": 672, + "nodeType": "StructuredDocumentation", + "src": "5179:1068:2", + "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." + }, + "id": 718, + "name": "reinitializer", + "nameLocation": "6261:13:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 674, + "mutability": "mutable", + "name": "version", + "nameLocation": "6282:7:2", + "nodeType": "VariableDeclaration", + "scope": 718, + "src": "6275:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 673, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6275:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6274:16:2" + }, + "src": "6252:431:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 725, + "nodeType": "Block", + "src": "6921:48:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 721, + "name": "_checkInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "6931:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6931:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 723, + "nodeType": "ExpressionStatement", + "src": "6931:20:2" + }, + { + "id": 724, + "nodeType": "PlaceholderStatement", + "src": "6961:1:2" + } + ] + }, + "documentation": { + "id": 719, + "nodeType": "StructuredDocumentation", + "src": "6689:199:2", + "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." + }, + "id": 726, + "name": "onlyInitializing", + "nameLocation": "6902:16:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [], + "src": "6918:2:2" + }, + "src": "6893:76:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 738, + "nodeType": "Block", + "src": "7136:89:2", + "statements": [ + { + "condition": { + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7150:18:2", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 730, + "name": "_isInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "7151:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 737, + "nodeType": "IfStatement", + "src": "7146:73:2", + "trueBody": { + "id": 736, + "nodeType": "Block", + "src": "7170:49:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 733, + "name": "NotInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 583, + "src": "7191:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "RevertStatement", + "src": "7184:24:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 727, + "nodeType": "StructuredDocumentation", + "src": "6975:104:2", + "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." + }, + "id": 739, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkInitializing", + "nameLocation": "7093:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 728, + "nodeType": "ParameterList", + "parameters": [], + "src": "7111:2:2" + }, + "returnParameters": { + "id": 729, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:2" + }, + "scope": 817, + "src": "7084:141:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 784, + "nodeType": "Block", + "src": "7760:373:2", + "statements": [ + { + "assignments": [ + 745 + ], + "declarations": [ + { + "constant": false, + "id": 745, + "mutability": "mutable", + "name": "$", + "nameLocation": "7855:1:2", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "7826:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 744, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 743, + "name": "InitializableStorage", + "nameLocations": [ + "7826:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "7826:20:2" + }, + "referencedDeclaration": 574, + "src": "7826:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 748, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 746, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "7859:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7859:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7826:59:2" + }, + { + "condition": { + "expression": { + "id": 749, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "7900:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7902:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "7900:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 755, + "nodeType": "IfStatement", + "src": "7896:76:2", + "trueBody": { + "id": 754, + "nodeType": "Block", + "src": "7917:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 751, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "7938:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7938:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 753, + "nodeType": "RevertStatement", + "src": "7931:30:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 756, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "7985:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 757, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7987:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "7985:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8008:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 759, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8008:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 758, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8003:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8003:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8016:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8003:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "7985:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 783, + "nodeType": "IfStatement", + "src": "7981:146:2", + "trueBody": { + "id": 782, + "nodeType": "Block", + "src": "8021:106:2", + "statements": [ + { + "expression": { + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 764, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "8035:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 766, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8037:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "8035:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 768, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8057:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 767, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8052:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8065:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8052:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8035:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "8035:33:2" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8104:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 776, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8104:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 775, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8099:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8112:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8099:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 774, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "8087:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8087:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "EmitStatement", + "src": "8082:34:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 740, + "nodeType": "StructuredDocumentation", + "src": "7231:475:2", + "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." + }, + "id": 785, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_disableInitializers", + "nameLocation": "7720:20:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "7740:2:2" + }, + "returnParameters": { + "id": 742, + "nodeType": "ParameterList", + "parameters": [], + "src": "7760:0:2" + }, + "scope": 817, + "src": "7711:422:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 795, + "nodeType": "Block", + "src": "8308:63:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 791, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "8325:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8325:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8352:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 570, + "src": "8325:39:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 790, + "id": 794, + "nodeType": "Return", + "src": "8318:46:2" + } + ] + }, + "documentation": { + "id": 786, + "nodeType": "StructuredDocumentation", + "src": "8139:99:2", + "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." + }, + "id": 796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializedVersion", + "nameLocation": "8252:22:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 787, + "nodeType": "ParameterList", + "parameters": [], + "src": "8274:2:2" + }, + "returnParameters": { + "id": 790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 796, + "src": "8300:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 788, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8300:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8299:8:2" + }, + "scope": 817, + "src": "8243:128:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 806, + "nodeType": "Block", + "src": "8543:64:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 802, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 816, + "src": "8560:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$574_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8560:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 804, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8587:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "8560:40:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 801, + "id": 805, + "nodeType": "Return", + "src": "8553:47:2" + } + ] + }, + "documentation": { + "id": 797, + "nodeType": "StructuredDocumentation", + "src": "8377:105:2", + "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." + }, + "id": 807, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitializing", + "nameLocation": "8496:15:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [], + "src": "8511:2:2" + }, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 807, + "src": "8537:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8537:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8536:6:2" + }, + "scope": 817, + "src": "8487:120:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 815, + "nodeType": "Block", + "src": "8827:80:2", + "statements": [ + { + "AST": { + "nativeSrc": "8846:55:2", + "nodeType": "YulBlock", + "src": "8846:55:2", + "statements": [ + { + "nativeSrc": "8860:31:2", + "nodeType": "YulAssignment", + "src": "8860:31:2", + "value": { + "name": "INITIALIZABLE_STORAGE", + "nativeSrc": "8870:21:2", + "nodeType": "YulIdentifier", + "src": "8870:21:2" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "8860:6:2", + "nodeType": "YulIdentifier", + "src": "8860:6:2" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 812, + "isOffset": false, + "isSlot": true, + "src": "8860:6:2", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 577, + "isOffset": false, + "isSlot": false, + "src": "8870:21:2", + "valueSize": 1 + } + ], + "id": 814, + "nodeType": "InlineAssembly", + "src": "8837:64:2" + } + ] + }, + "documentation": { + "id": 808, + "nodeType": "StructuredDocumentation", + "src": "8613:67:2", + "text": " @dev Returns a pointer to the storage namespace." + }, + "id": 816, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializableStorage", + "nameLocation": "8746:24:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [], + "src": "8770:2:2" + }, + "returnParameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 812, + "mutability": "mutable", + "name": "$", + "nameLocation": "8824:1:2", + "nodeType": "VariableDeclaration", + "scope": 816, + "src": "8795:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 811, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 810, + "name": "InitializableStorage", + "nameLocations": [ + "8795:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "8795:20:2" + }, + "referencedDeclaration": 574, + "src": "8795:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$574_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "8794:32:2" + }, + "scope": 817, + "src": "8737:170:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 818, + "src": "2349:6560:2", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "113:8797:2" + }, + "id": 2 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "exportedSymbols": { + "ERC1967Utils": [ + 1674 + ], + "IERC1822Proxiable": [ + 1333 + ], + "Initializable": [ + 817 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 1000, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 819, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:3" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "file": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "id": 821, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 1334, + "src": "141:88:3", + "symbolAliases": [ + { + "foreign": { + "id": 820, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "149:17:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 823, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 1675, + "src": "230:84:3", + "symbolAliases": [ + { + "foreign": { + "id": 822, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "238:12:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "./Initializable.sol", + "id": 825, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1000, + "sourceUnit": 818, + "src": "315:50:3", + "symbolAliases": [ + { + "foreign": { + "id": 824, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "323:13:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 827, + "name": "Initializable", + "nameLocations": [ + "1023:13:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "1023:13:3" + }, + "id": 828, + "nodeType": "InheritanceSpecifier", + "src": "1023:13:3" + }, + { + "baseName": { + "id": 829, + "name": "IERC1822Proxiable", + "nameLocations": [ + "1038:17:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1333, + "src": "1038:17:3" + }, + "id": 830, + "nodeType": "InheritanceSpecifier", + "src": "1038:17:3" + } + ], + "canonicalName": "UUPSUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 826, + "nodeType": "StructuredDocumentation", + "src": "367:618:3", + "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism." + }, + "fullyImplemented": false, + "id": 999, + "linearizedBaseContracts": [ + 999, + 1333, + 817 + ], + "name": "UUPSUpgradeable", + "nameLocation": "1004:15:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 831, + "nodeType": "StructuredDocumentation", + "src": "1062:61:3", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 837, + "mutability": "immutable", + "name": "__self", + "nameLocation": "1154:6:3", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "1128:48:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 832, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1128:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "id": 835, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1171:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1163:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1163:7:3", + "typeDescriptions": {} + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1163:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 838, + "nodeType": "StructuredDocumentation", + "src": "1183:631:3", + "text": " @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade." + }, + "functionSelector": "ad3cb1cc", + "id": 841, + "mutability": "constant", + "name": "UPGRADE_INTERFACE_VERSION", + "nameLocation": "1842:25:3", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "1819:58:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 839, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1819:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "352e302e30", + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1870:7:3", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c", + "typeString": "literal_string \"5.0.0\"" + }, + "value": "5.0.0" + }, + "visibility": "public" + }, + { + "documentation": { + "id": 842, + "nodeType": "StructuredDocumentation", + "src": "1884:65:3", + "text": " @dev The call is from an unauthorized context." + }, + "errorSelector": "e07c8dba", + "id": 844, + "name": "UUPSUnauthorizedCallContext", + "nameLocation": "1960:27:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 843, + "nodeType": "ParameterList", + "parameters": [], + "src": "1987:2:3" + }, + "src": "1954:36:3" + }, + { + "documentation": { + "id": 845, + "nodeType": "StructuredDocumentation", + "src": "1996:68:3", + "text": " @dev The storage `slot` is unsupported as a UUID." + }, + "errorSelector": "aa1d49a4", + "id": 849, + "name": "UUPSUnsupportedProxiableUUID", + "nameLocation": "2075:28:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2112:4:3", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "2104:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 846, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2104:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2103:14:3" + }, + "src": "2069:49:3" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "2643:41:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 852, + "name": "_checkProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 931, + "src": "2653:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2653:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 854, + "nodeType": "ExpressionStatement", + "src": "2653:13:3" + }, + { + "id": 855, + "nodeType": "PlaceholderStatement", + "src": "2676:1:3" + } + ] + }, + "documentation": { + "id": 850, + "nodeType": "StructuredDocumentation", + "src": "2124:493:3", + "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail." + }, + "id": 857, + "name": "onlyProxy", + "nameLocation": "2631:9:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 851, + "nodeType": "ParameterList", + "parameters": [], + "src": "2640:2:3" + }, + "src": "2622:62:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 864, + "nodeType": "Block", + "src": "2914:48:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 860, + "name": "_checkNotDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "2924:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2924:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "2924:20:3" + }, + { + "id": 863, + "nodeType": "PlaceholderStatement", + "src": "2954:1:3" + } + ] + }, + "documentation": { + "id": 858, + "nodeType": "StructuredDocumentation", + "src": "2690:195:3", + "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies." + }, + "id": 865, + "name": "notDelegated", + "nameLocation": "2899:12:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [], + "src": "2911:2:3" + }, + "src": "2890:72:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 870, + "nodeType": "Block", + "src": "3028:7:3", + "statements": [] + }, + "id": 871, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 868, + "kind": "modifierInvocation", + "modifierName": { + "id": 867, + "name": "onlyInitializing", + "nameLocations": [ + "3011:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3011:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3011:16:3" + } + ], + "name": "__UUPSUpgradeable_init", + "nameLocation": "2977:22:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [], + "src": "2999:2:3" + }, + "returnParameters": { + "id": 869, + "nodeType": "ParameterList", + "parameters": [], + "src": "3028:0:3" + }, + "scope": 999, + "src": "2968:67:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 876, + "nodeType": "Block", + "src": "3111:7:3", + "statements": [] + }, + "id": 877, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 874, + "kind": "modifierInvocation", + "modifierName": { + "id": 873, + "name": "onlyInitializing", + "nameLocations": [ + "3094:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "3094:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3094:16:3" + } + ], + "name": "__UUPSUpgradeable_init_unchained", + "nameLocation": "3050:32:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 872, + "nodeType": "ParameterList", + "parameters": [], + "src": "3082:2:3" + }, + "returnParameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [], + "src": "3111:0:3" + }, + "scope": 999, + "src": "3041:77:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1332 + ], + "body": { + "id": 888, + "nodeType": "Block", + "src": "3783:56:3", + "statements": [ + { + "expression": { + "expression": { + "id": 885, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "3800:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3813:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 1401, + "src": "3800:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 884, + "id": 887, + "nodeType": "Return", + "src": "3793:39:3" + } + ] + }, + "documentation": { + "id": 878, + "nodeType": "StructuredDocumentation", + "src": "3123:577:3", + "text": " @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "functionSelector": "52d1902d", + "id": 889, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 881, + "kind": "modifierInvocation", + "modifierName": { + "id": 880, + "name": "notDelegated", + "nameLocations": [ + "3752:12:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 865, + "src": "3752:12:3" + }, + "nodeType": "ModifierInvocation", + "src": "3752:12:3" + } + ], + "name": "proxiableUUID", + "nameLocation": "3714:13:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 879, + "nodeType": "ParameterList", + "parameters": [], + "src": "3727:2:3" + }, + "returnParameters": { + "id": 884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 883, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "3774:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 882, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3774:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3773:9:3" + }, + "scope": 999, + "src": "3705:134:3", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 908, + "nodeType": "Block", + "src": "4263:109:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 900, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4291:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 899, + "name": "_authorizeUpgrade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "4273:17:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4273:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 902, + "nodeType": "ExpressionStatement", + "src": "4273:36:3" + }, + { + "expression": { + "arguments": [ + { + "id": 904, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4341:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 905, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "4360:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 903, + "name": "_upgradeToAndCallUUPS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 998, + "src": "4319:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4319:46:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "4319:46:3" + } + ] + }, + "documentation": { + "id": 890, + "nodeType": "StructuredDocumentation", + "src": "3845:308:3", + "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall" + }, + "functionSelector": "4f1ef286", + "id": 909, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 897, + "kind": "modifierInvocation", + "modifierName": { + "id": 896, + "name": "onlyProxy", + "nameLocations": [ + "4253:9:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "4253:9:3" + }, + "nodeType": "ModifierInvocation", + "src": "4253:9:3" + } + ], + "name": "upgradeToAndCall", + "nameLocation": "4167:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "4192:17:3", + "nodeType": "VariableDeclaration", + "scope": 909, + "src": "4184:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4184:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 894, + "mutability": "mutable", + "name": "data", + "nameLocation": "4224:4:3", + "nodeType": "VariableDeclaration", + "scope": 909, + "src": "4211:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 893, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4211:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4183:46:3" + }, + "returnParameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [], + "src": "4263:0:3" + }, + "scope": 999, + "src": "4158:214:3", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 930, + "nodeType": "Block", + "src": "4644:267:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 915, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4679:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4671:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4671:7:3", + "typeDescriptions": {} + } + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4671:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 917, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "4688:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4671:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 919, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "4749:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4762:17:3", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1432, + "src": "4749:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4749:32:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 922, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "4785:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4749:42:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4671:120:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 929, + "nodeType": "IfStatement", + "src": "4654:251:3", + "trueBody": { + "id": 928, + "nodeType": "Block", + "src": "4844:61:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 925, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4865:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4865:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 927, + "nodeType": "RevertStatement", + "src": "4858:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 910, + "nodeType": "StructuredDocumentation", + "src": "4378:216:3", + "text": " @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}." + }, + "id": 931, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkProxy", + "nameLocation": "4608:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [], + "src": "4619:2:3" + }, + "returnParameters": { + "id": 912, + "nodeType": "ParameterList", + "parameters": [], + "src": "4644:0:3" + }, + "scope": 999, + "src": "4599:312:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 946, + "nodeType": "Block", + "src": "5080:161:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 937, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5102:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$999", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5094:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5094:7:3", + "typeDescriptions": {} + } + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5094:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 939, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 837, + "src": "5111:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5094:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 945, + "nodeType": "IfStatement", + "src": "5090:145:3", + "trueBody": { + "id": 944, + "nodeType": "Block", + "src": "5119:116:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 941, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "5195:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5195:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "RevertStatement", + "src": "5188:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 932, + "nodeType": "StructuredDocumentation", + "src": "4917:106:3", + "text": " @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}." + }, + "id": 947, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNotDelegated", + "nameLocation": "5037:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 933, + "nodeType": "ParameterList", + "parameters": [], + "src": "5055:2:3" + }, + "returnParameters": { + "id": 934, + "nodeType": "ParameterList", + "parameters": [], + "src": "5080:0:3" + }, + "scope": 999, + "src": "5028:213:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 948, + "nodeType": "StructuredDocumentation", + "src": "5247:372:3", + "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```" + }, + "id": 953, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_authorizeUpgrade", + "nameLocation": "5633:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 950, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5659:17:3", + "nodeType": "VariableDeclaration", + "scope": 953, + "src": "5651:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5651:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5650:27:3" + }, + "returnParameters": { + "id": 952, + "nodeType": "ParameterList", + "parameters": [], + "src": "5694:0:3" + }, + "scope": 999, + "src": "5624:71:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 997, + "nodeType": "Block", + "src": "6137:453:3", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 986, + "nodeType": "Block", + "src": "6227:212:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 969, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "6245:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 970, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "6253:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6266:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 1401, + "src": "6253:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6245:40:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 978, + "nodeType": "IfStatement", + "src": "6241:120:3", + "trueBody": { + "id": 977, + "nodeType": "Block", + "src": "6287:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 974, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "6341:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 973, + "name": "UUPSUnsupportedProxiableUUID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "6312:28:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6312:34:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 976, + "nodeType": "RevertStatement", + "src": "6305:41:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 982, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6404:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 983, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "6423:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 979, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "6374:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6387:16:3", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1493, + "src": "6374:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6374:54:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "6374:54:3" + } + ] + }, + "errorName": "", + "id": 987, + "nodeType": "TryCatchClause", + "parameters": { + "id": 968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 967, + "mutability": "mutable", + "name": "slot", + "nameLocation": "6221:4:3", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "6213:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 966, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6213:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6212:14:3" + }, + "src": "6204:235:3" + }, + { + "block": { + "id": 994, + "nodeType": "Block", + "src": "6446:138:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 991, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6555:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 988, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "6513:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6526:28:3", + "memberName": "ERC1967InvalidImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1406, + "src": "6513:41:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6513:60:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 993, + "nodeType": "RevertStatement", + "src": "6506:67:3" + } + ] + }, + "errorName": "", + "id": 995, + "nodeType": "TryCatchClause", + "src": "6440:144:3" + } + ], + "externalCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 962, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "6169:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 961, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1333, + "src": "6151:17:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1822Proxiable_$1333_$", + "typeString": "type(contract IERC1822Proxiable)" + } + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6151:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1822Proxiable_$1333", + "typeString": "contract IERC1822Proxiable" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6188:13:3", + "memberName": "proxiableUUID", + "nodeType": "MemberAccess", + "referencedDeclaration": 1332, + "src": "6151:50:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6151:52:3", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 996, + "nodeType": "TryStatement", + "src": "6147:437:3" + } + ] + }, + "documentation": { + "id": 954, + "nodeType": "StructuredDocumentation", + "src": "5701:346:3", + "text": " @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 998, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_upgradeToAndCallUUPS", + "nameLocation": "6061:21:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6091:17:3", + "nodeType": "VariableDeclaration", + "scope": 998, + "src": "6083:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6083:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "data", + "nameLocation": "6123:4:3", + "nodeType": "VariableDeclaration", + "scope": 998, + "src": "6110:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6110:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6082:46:3" + }, + "returnParameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [], + "src": "6137:0:3" + }, + "scope": 999, + "src": "6052:538:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1000, + "src": "986:5606:3", + "usedErrors": [ + 580, + 583, + 844, + 849, + 1406, + 1419, + 2272, + 2275 + ], + "usedEvents": [ + 588, + 1385 + ] + } + ], + "src": "115:6478:3" + }, + "id": 3 + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 1045 + ], + "Initializable": [ + 817 + ] + }, + "id": 1046, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1001, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:4" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 1003, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1046, + "sourceUnit": 818, + "src": "126:63:4", + "symbolAliases": [ + { + "foreign": { + "id": 1002, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "134:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1005, + "name": "Initializable", + "nameLocations": [ + "728:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "728:13:4" + }, + "id": 1006, + "nodeType": "InheritanceSpecifier", + "src": "728:13:4" + } + ], + "canonicalName": "ContextUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1004, + "nodeType": "StructuredDocumentation", + "src": "191:496:4", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 1045, + "linearizedBaseContracts": [ + 1045, + 817 + ], + "name": "ContextUpgradeable", + "nameLocation": "706:18:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1011, + "nodeType": "Block", + "src": "800:7:4", + "statements": [] + }, + "id": 1012, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1009, + "kind": "modifierInvocation", + "modifierName": { + "id": 1008, + "name": "onlyInitializing", + "nameLocations": [ + "783:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "783:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "783:16:4" + } + ], + "name": "__Context_init", + "nameLocation": "757:14:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1007, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:2:4" + }, + "returnParameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [], + "src": "800:0:4" + }, + "scope": 1045, + "src": "748:59:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1017, + "nodeType": "Block", + "src": "875:7:4", + "statements": [] + }, + "id": 1018, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1015, + "kind": "modifierInvocation", + "modifierName": { + "id": 1014, + "name": "onlyInitializing", + "nameLocations": [ + "858:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "858:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "858:16:4" + } + ], + "name": "__Context_init_unchained", + "nameLocation": "822:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:2:4" + }, + "returnParameters": { + "id": 1016, + "nodeType": "ParameterList", + "parameters": [], + "src": "875:0:4" + }, + "scope": 1045, + "src": "813:69:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1026, + "nodeType": "Block", + "src": "949:34:4", + "statements": [ + { + "expression": { + "expression": { + "id": 1023, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "970:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1022, + "id": 1025, + "nodeType": "Return", + "src": "959:17:4" + } + ] + }, + "id": 1027, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "896:10:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1019, + "nodeType": "ParameterList", + "parameters": [], + "src": "906:2:4" + }, + "returnParameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1021, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1027, + "src": "940:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "940:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "939:9:4" + }, + "scope": 1045, + "src": "887:96:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1035, + "nodeType": "Block", + "src": "1056:32:4", + "statements": [ + { + "expression": { + "expression": { + "id": 1032, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1073:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1077:4:4", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "1073:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 1031, + "id": 1034, + "nodeType": "Return", + "src": "1066:15:4" + } + ] + }, + "id": 1036, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "998:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [], + "src": "1006:2:4" + }, + "returnParameters": { + "id": 1031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1030, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1036, + "src": "1040:14:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1029, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1040:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1039:16:4" + }, + "scope": 1045, + "src": "989:99:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1043, + "nodeType": "Block", + "src": "1166:25:4", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 1041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1183:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1040, + "id": 1042, + "nodeType": "Return", + "src": "1176:8:4" + } + ] + }, + "id": 1044, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "1103:20:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1037, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:4" + }, + "returnParameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1039, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1044, + "src": "1157:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1156:9:4" + }, + "scope": 1045, + "src": "1094:97:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1046, + "src": "688:505:4", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "101:1093:4" + }, + "id": 4 + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "exportedSymbols": { + "Initializable": [ + 817 + ], + "ReentrancyGuardUpgradeable": [ + 1174 + ] + }, + "id": 1175, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1047, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:5" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 1049, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1175, + "sourceUnit": 818, + "src": "134:63:5", + "symbolAliases": [ + { + "foreign": { + "id": 1048, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "142:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1051, + "name": "Initializable", + "nameLocations": [ + "998:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "998:13:5" + }, + "id": 1052, + "nodeType": "InheritanceSpecifier", + "src": "998:13:5" + } + ], + "canonicalName": "ReentrancyGuardUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1050, + "nodeType": "StructuredDocumentation", + "src": "199:750:5", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 1174, + "linearizedBaseContracts": [ + 1174, + 817 + ], + "name": "ReentrancyGuardUpgradeable", + "nameLocation": "968:26:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1055, + "mutability": "constant", + "name": "NOT_ENTERED", + "nameLocation": "1791:11:5", + "nodeType": "VariableDeclaration", + "scope": 1174, + "src": "1766:40:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1766:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1805:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1058, + "mutability": "constant", + "name": "ENTERED", + "nameLocation": "1837:7:5", + "nodeType": "VariableDeclaration", + "scope": 1174, + "src": "1812:36:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1056, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1812:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1847:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "canonicalName": "ReentrancyGuardUpgradeable.ReentrancyGuardStorage", + "documentation": { + "id": 1059, + "nodeType": "StructuredDocumentation", + "src": "1855:73:5", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard" + }, + "id": 1062, + "members": [ + { + "constant": false, + "id": 1061, + "mutability": "mutable", + "name": "_status", + "nameLocation": "1981:7:5", + "nodeType": "VariableDeclaration", + "scope": 1062, + "src": "1973:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1973:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "ReentrancyGuardStorage", + "nameLocation": "1940:22:5", + "nodeType": "StructDefinition", + "scope": 1174, + "src": "1933:62:5", + "visibility": "public" + }, + { + "constant": true, + "id": 1065, + "mutability": "constant", + "name": "ReentrancyGuardStorageLocation", + "nameLocation": "2145:30:5", + "nodeType": "VariableDeclaration", + "scope": 1174, + "src": "2120:124:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1063, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2120:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030", + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1", + "typeString": "int_const 7031...(69 digits omitted)...8416" + }, + "value": "0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00" + }, + "visibility": "private" + }, + { + "body": { + "id": 1072, + "nodeType": "Block", + "src": "2345:89:5", + "statements": [ + { + "AST": { + "nativeSrc": "2364:64:5", + "nodeType": "YulBlock", + "src": "2364:64:5", + "statements": [ + { + "nativeSrc": "2378:40:5", + "nodeType": "YulAssignment", + "src": "2378:40:5", + "value": { + "name": "ReentrancyGuardStorageLocation", + "nativeSrc": "2388:30:5", + "nodeType": "YulIdentifier", + "src": "2388:30:5" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2378:6:5", + "nodeType": "YulIdentifier", + "src": "2378:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1069, + "isOffset": false, + "isSlot": true, + "src": "2378:6:5", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 1065, + "isOffset": false, + "isSlot": false, + "src": "2388:30:5", + "valueSize": 1 + } + ], + "id": 1071, + "nodeType": "InlineAssembly", + "src": "2355:73:5" + } + ] + }, + "id": 1073, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getReentrancyGuardStorage", + "nameLocation": "2260:26:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1066, + "nodeType": "ParameterList", + "parameters": [], + "src": "2286:2:5" + }, + "returnParameters": { + "id": 1070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1069, + "mutability": "mutable", + "name": "$", + "nameLocation": "2342:1:5", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "2311:32:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 1068, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1067, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2311:22:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1062, + "src": "2311:22:5" + }, + "referencedDeclaration": 1062, + "src": "2311:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2310:34:5" + }, + "scope": 1174, + "src": "2251:183:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 1074, + "nodeType": "StructuredDocumentation", + "src": "2440:52:5", + "text": " @dev Unauthorized reentrant call." + }, + "errorSelector": "3ee5aeb5", + "id": 1076, + "name": "ReentrancyGuardReentrantCall", + "nameLocation": "2503:28:5", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [], + "src": "2531:2:5" + }, + "src": "2497:37:5" + }, + { + "body": { + "id": 1084, + "nodeType": "Block", + "src": "2600:51:5", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1081, + "name": "__ReentrancyGuard_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "2610:32:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2610:34:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1083, + "nodeType": "ExpressionStatement", + "src": "2610:34:5" + } + ] + }, + "id": 1085, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1079, + "kind": "modifierInvocation", + "modifierName": { + "id": 1078, + "name": "onlyInitializing", + "nameLocations": [ + "2583:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2583:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2583:16:5" + } + ], + "name": "__ReentrancyGuard_init", + "nameLocation": "2549:22:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1077, + "nodeType": "ParameterList", + "parameters": [], + "src": "2571:2:5" + }, + "returnParameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [], + "src": "2600:0:5" + }, + "scope": 1174, + "src": "2540:111:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1102, + "nodeType": "Block", + "src": "2727:113:5", + "statements": [ + { + "assignments": [ + 1092 + ], + "declarations": [ + { + "constant": false, + "id": 1092, + "mutability": "mutable", + "name": "$", + "nameLocation": "2768:1:5", + "nodeType": "VariableDeclaration", + "scope": 1102, + "src": "2737:32:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 1091, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1090, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2737:22:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1062, + "src": "2737:22:5" + }, + "referencedDeclaration": 1062, + "src": "2737:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 1095, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1093, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "2772:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1062_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2772:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2737:63:5" + }, + { + "expression": { + "id": 1100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1096, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "2810:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 1098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2812:7:5", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "2810:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1099, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "2822:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2810:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1101, + "nodeType": "ExpressionStatement", + "src": "2810:23:5" + } + ] + }, + "id": 1103, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1088, + "kind": "modifierInvocation", + "modifierName": { + "id": 1087, + "name": "onlyInitializing", + "nameLocations": [ + "2710:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2710:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2710:16:5" + } + ], + "name": "__ReentrancyGuard_init_unchained", + "nameLocation": "2666:32:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1086, + "nodeType": "ParameterList", + "parameters": [], + "src": "2698:2:5" + }, + "returnParameters": { + "id": 1089, + "nodeType": "ParameterList", + "parameters": [], + "src": "2727:0:5" + }, + "scope": 1174, + "src": "2657:183:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1113, + "nodeType": "Block", + "src": "3241:79:5", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1106, + "name": "_nonReentrantBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1139, + "src": "3251:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3251:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1108, + "nodeType": "ExpressionStatement", + "src": "3251:21:5" + }, + { + "id": 1109, + "nodeType": "PlaceholderStatement", + "src": "3282:1:5" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1110, + "name": "_nonReentrantAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "3293:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3293:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1112, + "nodeType": "ExpressionStatement", + "src": "3293:20:5" + } + ] + }, + "documentation": { + "id": 1104, + "nodeType": "StructuredDocumentation", + "src": "2846:366:5", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work." + }, + "id": 1114, + "name": "nonReentrant", + "nameLocation": "3226:12:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1105, + "nodeType": "ParameterList", + "parameters": [], + "src": "3238:2:5" + }, + "src": "3217:103:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1138, + "nodeType": "Block", + "src": "3365:345:5", + "statements": [ + { + "assignments": [ + 1119 + ], + "declarations": [ + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "$", + "nameLocation": "3406:1:5", + "nodeType": "VariableDeclaration", + "scope": 1138, + "src": "3375:32:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 1118, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1117, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3375:22:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1062, + "src": "3375:22:5" + }, + "referencedDeclaration": 1062, + "src": "3375:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 1122, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1120, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "3410:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1062_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 1121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3410:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3375:63:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1123, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "3526:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 1124, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3528:7:5", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "3526:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1125, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "3539:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3526:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1131, + "nodeType": "IfStatement", + "src": "3522:88:5", + "trueBody": { + "id": 1130, + "nodeType": "Block", + "src": "3548:62:5", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1127, + "name": "ReentrancyGuardReentrantCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "3569:28:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3569:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1129, + "nodeType": "RevertStatement", + "src": "3562:37:5" + } + ] + } + }, + { + "expression": { + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1132, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "3684:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 1134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3686:7:5", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "3684:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1135, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "3696:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3684:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1137, + "nodeType": "ExpressionStatement", + "src": "3684:19:5" + } + ] + }, + "id": 1139, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantBefore", + "nameLocation": "3335:19:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1115, + "nodeType": "ParameterList", + "parameters": [], + "src": "3354:2:5" + }, + "returnParameters": { + "id": 1116, + "nodeType": "ParameterList", + "parameters": [], + "src": "3365:0:5" + }, + "scope": 1174, + "src": "3326:384:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1154, + "nodeType": "Block", + "src": "3754:245:5", + "statements": [ + { + "assignments": [ + 1144 + ], + "declarations": [ + { + "constant": false, + "id": 1144, + "mutability": "mutable", + "name": "$", + "nameLocation": "3795:1:5", + "nodeType": "VariableDeclaration", + "scope": 1154, + "src": "3764:32:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 1143, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1142, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3764:22:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1062, + "src": "3764:22:5" + }, + "referencedDeclaration": 1062, + "src": "3764:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 1147, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1145, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "3799:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1062_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3799:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3764:63:5" + }, + { + "expression": { + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1148, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "3969:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3971:7:5", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "3969:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1151, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "3981:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3969:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1153, + "nodeType": "ExpressionStatement", + "src": "3969:23:5" + } + ] + }, + "id": 1155, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantAfter", + "nameLocation": "3725:18:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1140, + "nodeType": "ParameterList", + "parameters": [], + "src": "3743:2:5" + }, + "returnParameters": { + "id": 1141, + "nodeType": "ParameterList", + "parameters": [], + "src": "3754:0:5" + }, + "scope": 1174, + "src": "3716:283:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1172, + "nodeType": "Block", + "src": "4242:117:5", + "statements": [ + { + "assignments": [ + 1163 + ], + "declarations": [ + { + "constant": false, + "id": 1163, + "mutability": "mutable", + "name": "$", + "nameLocation": "4283:1:5", + "nodeType": "VariableDeclaration", + "scope": 1172, + "src": "4252:32:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 1162, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1161, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "4252:22:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1062, + "src": "4252:22:5" + }, + "referencedDeclaration": 1062, + "src": "4252:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 1166, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1164, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "4287:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$1062_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4287:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4252:63:5" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1167, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1163, + "src": "4332:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$1062_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4334:7:5", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "4332:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1169, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1058, + "src": "4345:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4332:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1160, + "id": 1171, + "nodeType": "Return", + "src": "4325:27:5" + } + ] + }, + "documentation": { + "id": 1156, + "nodeType": "StructuredDocumentation", + "src": "4005:168:5", + "text": " @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack." + }, + "id": 1173, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reentrancyGuardEntered", + "nameLocation": "4187:23:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1157, + "nodeType": "ParameterList", + "parameters": [], + "src": "4210:2:5" + }, + "returnParameters": { + "id": 1160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1159, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1173, + "src": "4236:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1158, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4236:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4235:6:5" + }, + "scope": 1174, + "src": "4178:181:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1175, + "src": "950:3411:5", + "usedErrors": [ + 580, + 583, + 1076 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "109:4253:5" + }, + "id": 5 + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "exportedSymbols": { + "ERC165Upgradeable": [ + 1214 + ], + "IERC165": [ + 2982 + ], + "Initializable": [ + 817 + ] + }, + "id": 1215, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1176, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:6" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 1178, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1215, + "sourceUnit": 2983, + "src": "140:80:6", + "symbolAliases": [ + { + "foreign": { + "id": 1177, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2982, + "src": "148:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 1180, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1215, + "sourceUnit": 818, + "src": "221:66:6", + "symbolAliases": [ + { + "foreign": { + "id": 1179, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "229:13:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1182, + "name": "Initializable", + "nameLocations": [ + "807:13:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "807:13:6" + }, + "id": 1183, + "nodeType": "InheritanceSpecifier", + "src": "807:13:6" + }, + { + "baseName": { + "id": 1184, + "name": "IERC165", + "nameLocations": [ + "822:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2982, + "src": "822:7:6" + }, + "id": 1185, + "nodeType": "InheritanceSpecifier", + "src": "822:7:6" + } + ], + "canonicalName": "ERC165Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1181, + "nodeType": "StructuredDocumentation", + "src": "289:478:6", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```" + }, + "fullyImplemented": true, + "id": 1214, + "linearizedBaseContracts": [ + 1214, + 2982, + 817 + ], + "name": "ERC165Upgradeable", + "nameLocation": "786:17:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1190, + "nodeType": "Block", + "src": "887:7:6", + "statements": [] + }, + "id": 1191, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1188, + "kind": "modifierInvocation", + "modifierName": { + "id": 1187, + "name": "onlyInitializing", + "nameLocations": [ + "870:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "870:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "870:16:6" + } + ], + "name": "__ERC165_init", + "nameLocation": "845:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1186, + "nodeType": "ParameterList", + "parameters": [], + "src": "858:2:6" + }, + "returnParameters": { + "id": 1189, + "nodeType": "ParameterList", + "parameters": [], + "src": "887:0:6" + }, + "scope": 1214, + "src": "836:58:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1196, + "nodeType": "Block", + "src": "961:7:6", + "statements": [] + }, + "id": 1197, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1194, + "kind": "modifierInvocation", + "modifierName": { + "id": 1193, + "name": "onlyInitializing", + "nameLocations": [ + "944:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "944:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "944:16:6" + } + ], + "name": "__ERC165_init_unchained", + "nameLocation": "909:23:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1192, + "nodeType": "ParameterList", + "parameters": [], + "src": "932:2:6" + }, + "returnParameters": { + "id": 1195, + "nodeType": "ParameterList", + "parameters": [], + "src": "961:0:6" + }, + "scope": 1214, + "src": "900:68:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 2981 + ], + "body": { + "id": 1212, + "nodeType": "Block", + "src": "1116:64:6", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1205, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "1133:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1207, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2982, + "src": "1153:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC165_$2982_$", + "typeString": "type(contract IERC165)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC165_$2982_$", + "typeString": "type(contract IERC165)" + } + ], + "id": 1206, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1148:4:6", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1148:13:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$2982", + "typeString": "type(contract IERC165)" + } + }, + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1162:11:6", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1148:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1133:40:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1204, + "id": 1211, + "nodeType": "Return", + "src": "1126:47:6" + } + ] + }, + "documentation": { + "id": 1198, + "nodeType": "StructuredDocumentation", + "src": "973:56:6", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 1213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1043:17:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1200, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1068:11:6", + "nodeType": "VariableDeclaration", + "scope": 1213, + "src": "1061:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1199, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1061:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1060:20:6" + }, + "returnParameters": { + "id": 1204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1213, + "src": "1110:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1202, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1110:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1109:6:6" + }, + "scope": 1214, + "src": "1034:146:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 1215, + "src": "768:414:6", + "usedErrors": [ + 580, + 583 + ], + "usedEvents": [ + 588 + ] + } + ], + "src": "114:1069:6" + }, + "id": 6 + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "exportedSymbols": { + "IAccessControl": [ + 1297 + ] + }, + "id": 1298, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1216, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:7" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccessControl", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1217, + "nodeType": "StructuredDocumentation", + "src": "135:89:7", + "text": " @dev External interface of AccessControl declared to support ERC165 detection." + }, + "fullyImplemented": false, + "id": 1297, + "linearizedBaseContracts": [ + 1297 + ], + "name": "IAccessControl", + "nameLocation": "235:14:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1218, + "nodeType": "StructuredDocumentation", + "src": "256:56:7", + "text": " @dev The `account` is missing a role." + }, + "errorSelector": "e2517d3f", + "id": 1224, + "name": "AccessControlUnauthorizedAccount", + "nameLocation": "323:32:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1220, + "mutability": "mutable", + "name": "account", + "nameLocation": "364:7:7", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "356:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "356:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1222, + "mutability": "mutable", + "name": "neededRole", + "nameLocation": "381:10:7", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "373:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1221, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "373:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "355:37:7" + }, + "src": "317:76:7" + }, + { + "documentation": { + "id": 1225, + "nodeType": "StructuredDocumentation", + "src": "399:148:7", + "text": " @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + }, + "errorSelector": "6697b232", + "id": 1227, + "name": "AccessControlBadConfirmation", + "nameLocation": "558:28:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1226, + "nodeType": "ParameterList", + "parameters": [], + "src": "586:2:7" + }, + "src": "552:37:7" + }, + { + "anonymous": false, + "documentation": { + "id": 1228, + "nodeType": "StructuredDocumentation", + "src": "595:254:7", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this." + }, + "eventSelector": "bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", + "id": 1236, + "name": "RoleAdminChanged", + "nameLocation": "860:16:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 1235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1230, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "893:4:7", + "nodeType": "VariableDeclaration", + "scope": 1236, + "src": "877:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1229, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "877:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1232, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "915:17:7", + "nodeType": "VariableDeclaration", + "scope": 1236, + "src": "899:33:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1231, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "899:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1234, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "950:12:7", + "nodeType": "VariableDeclaration", + "scope": 1236, + "src": "934:28:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1233, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "934:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "876:87:7" + }, + "src": "854:110:7" + }, + { + "anonymous": false, + "documentation": { + "id": 1237, + "nodeType": "StructuredDocumentation", + "src": "970:212:7", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}." + }, + "eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "id": 1245, + "name": "RoleGranted", + "nameLocation": "1193:11:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 1244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1239, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1221:4:7", + "nodeType": "VariableDeclaration", + "scope": 1245, + "src": "1205:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1238, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1205:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1241, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1243:7:7", + "nodeType": "VariableDeclaration", + "scope": 1245, + "src": "1227:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1227:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1243, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1268:6:7", + "nodeType": "VariableDeclaration", + "scope": 1245, + "src": "1252:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1204:71:7" + }, + "src": "1187:89:7" + }, + { + "anonymous": false, + "documentation": { + "id": 1246, + "nodeType": "StructuredDocumentation", + "src": "1282:275:7", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "eventSelector": "f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b", + "id": 1254, + "name": "RoleRevoked", + "nameLocation": "1568:11:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 1253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1248, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1596:4:7", + "nodeType": "VariableDeclaration", + "scope": 1254, + "src": "1580:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1247, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1580:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1250, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1618:7:7", + "nodeType": "VariableDeclaration", + "scope": 1254, + "src": "1602:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1602:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1252, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1643:6:7", + "nodeType": "VariableDeclaration", + "scope": 1254, + "src": "1627:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1627:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1579:71:7" + }, + "src": "1562:89:7" + }, + { + "documentation": { + "id": 1255, + "nodeType": "StructuredDocumentation", + "src": "1657:76:7", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 1264, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "1747:7:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1257, + "mutability": "mutable", + "name": "role", + "nameLocation": "1763:4:7", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "1755:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1755:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1259, + "mutability": "mutable", + "name": "account", + "nameLocation": "1777:7:7", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "1769:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1769:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1754:31:7" + }, + "returnParameters": { + "id": 1263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1262, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "1809:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1261, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1809:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1808:6:7" + }, + "scope": 1297, + "src": "1738:77:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1265, + "nodeType": "StructuredDocumentation", + "src": "1821:184:7", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 1272, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "2019:12:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1267, + "mutability": "mutable", + "name": "role", + "nameLocation": "2040:4:7", + "nodeType": "VariableDeclaration", + "scope": 1272, + "src": "2032:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1266, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2032:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2031:14:7" + }, + "returnParameters": { + "id": 1271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1270, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1272, + "src": "2069:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2069:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2068:9:7" + }, + "scope": 1297, + "src": "2010:68:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1273, + "nodeType": "StructuredDocumentation", + "src": "2084:239:7", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 1280, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "2337:9:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "role", + "nameLocation": "2355:4:7", + "nodeType": "VariableDeclaration", + "scope": 1280, + "src": "2347:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2347:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1277, + "mutability": "mutable", + "name": "account", + "nameLocation": "2369:7:7", + "nodeType": "VariableDeclaration", + "scope": 1280, + "src": "2361:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2361:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2346:31:7" + }, + "returnParameters": { + "id": 1279, + "nodeType": "ParameterList", + "parameters": [], + "src": "2386:0:7" + }, + "scope": 1297, + "src": "2328:59:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1281, + "nodeType": "StructuredDocumentation", + "src": "2393:223:7", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 1288, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "2630:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1283, + "mutability": "mutable", + "name": "role", + "nameLocation": "2649:4:7", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "2641:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1282, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2641:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1285, + "mutability": "mutable", + "name": "account", + "nameLocation": "2663:7:7", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "2655:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2655:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2640:31:7" + }, + "returnParameters": { + "id": 1287, + "nodeType": "ParameterList", + "parameters": [], + "src": "2680:0:7" + }, + "scope": 1297, + "src": "2621:60:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1289, + "nodeType": "StructuredDocumentation", + "src": "2687:491:7", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`." + }, + "functionSelector": "36568abe", + "id": 1296, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "3192:12:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1291, + "mutability": "mutable", + "name": "role", + "nameLocation": "3213:4:7", + "nodeType": "VariableDeclaration", + "scope": 1296, + "src": "3205:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3205:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1293, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "3227:18:7", + "nodeType": "VariableDeclaration", + "scope": 1296, + "src": "3219:26:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3219:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3204:42:7" + }, + "returnParameters": { + "id": 1295, + "nodeType": "ParameterList", + "parameters": [], + "src": "3255:0:7" + }, + "scope": 1297, + "src": "3183:73:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1298, + "src": "225:3033:7", + "usedErrors": [ + 1224, + 1227 + ], + "usedEvents": [ + 1236, + 1245, + 1254 + ] + } + ], + "src": "109:3150:7" + }, + "id": 7 + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "exportedSymbols": { + "IAccessControl": [ + 1297 + ], + "IAccessControlEnumerable": [ + 1323 + ] + }, + "id": 1324, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1299, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "130:24:8" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "../IAccessControl.sol", + "id": 1301, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1324, + "sourceUnit": 1298, + "src": "156:53:8", + "symbolAliases": [ + { + "foreign": { + "id": 1300, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "164:14:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1303, + "name": "IAccessControl", + "nameLocations": [ + "349:14:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1297, + "src": "349:14:8" + }, + "id": 1304, + "nodeType": "InheritanceSpecifier", + "src": "349:14:8" + } + ], + "canonicalName": "IAccessControlEnumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1302, + "nodeType": "StructuredDocumentation", + "src": "211:99:8", + "text": " @dev External interface of AccessControlEnumerable declared to support ERC165 detection." + }, + "fullyImplemented": false, + "id": 1323, + "linearizedBaseContracts": [ + 1323, + 1297 + ], + "name": "IAccessControlEnumerable", + "nameLocation": "321:24:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1305, + "nodeType": "StructuredDocumentation", + "src": "370:574:8", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 1314, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "958:13:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1307, + "mutability": "mutable", + "name": "role", + "nameLocation": "980:4:8", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "972:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1306, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "972:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1309, + "mutability": "mutable", + "name": "index", + "nameLocation": "994:5:8", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "986:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "986:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "971:29:8" + }, + "returnParameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "1024:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1024:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1023:9:8" + }, + "scope": 1323, + "src": "949:84:8", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1315, + "nodeType": "StructuredDocumentation", + "src": "1039:157:8", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 1322, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "1210:18:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1317, + "mutability": "mutable", + "name": "role", + "nameLocation": "1237:4:8", + "nodeType": "VariableDeclaration", + "scope": 1322, + "src": "1229:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1316, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1229:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1228:14:8" + }, + "returnParameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1320, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1322, + "src": "1266:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1266:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1265:9:8" + }, + "scope": 1323, + "src": "1201:74:8", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1324, + "src": "311:966:8", + "usedErrors": [ + 1224, + 1227 + ], + "usedEvents": [ + 1236, + 1245, + 1254 + ] + } + ], + "src": "130:1148:8" + }, + "id": 8 + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "exportedSymbols": { + "IERC1822Proxiable": [ + 1333 + ] + }, + "id": 1334, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1325, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:9" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1822Proxiable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1326, + "nodeType": "StructuredDocumentation", + "src": "139:203:9", + "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation." + }, + "fullyImplemented": false, + "id": 1333, + "linearizedBaseContracts": [ + 1333 + ], + "name": "IERC1822Proxiable", + "nameLocation": "353:17:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1327, + "nodeType": "StructuredDocumentation", + "src": "377:438:9", + "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy." + }, + "functionSelector": "52d1902d", + "id": 1332, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "proxiableUUID", + "nameLocation": "829:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1328, + "nodeType": "ParameterList", + "parameters": [], + "src": "842:2:9" + }, + "returnParameters": { + "id": 1331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1330, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "868:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1329, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "868:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "867:9:9" + }, + "scope": 1333, + "src": "820:57:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1334, + "src": "343:536:9", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "113:767:9" + }, + "id": 9 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "exportedSymbols": { + "ERC1967Proxy": [ + 1371 + ], + "ERC1967Utils": [ + 1674 + ], + "Proxy": [ + 1710 + ] + }, + "id": 1372, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1335, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:10" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "file": "../Proxy.sol", + "id": 1337, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1372, + "sourceUnit": 1711, + "src": "140:35:10", + "symbolAliases": [ + { + "foreign": { + "id": 1336, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "148:5:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "./ERC1967Utils.sol", + "id": 1339, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1372, + "sourceUnit": 1675, + "src": "176:48:10", + "symbolAliases": [ + { + "foreign": { + "id": 1338, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "184:12:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1341, + "name": "Proxy", + "nameLocations": [ + "624:5:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1710, + "src": "624:5:10" + }, + "id": 1342, + "nodeType": "InheritanceSpecifier", + "src": "624:5:10" + } + ], + "canonicalName": "ERC1967Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1340, + "nodeType": "StructuredDocumentation", + "src": "226:372:10", + "text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy." + }, + "fullyImplemented": true, + "id": 1371, + "linearizedBaseContracts": [ + 1371, + 1710 + ], + "name": "ERC1967Proxy", + "nameLocation": "608:12:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1357, + "nodeType": "Block", + "src": "1144:69:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1353, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "1184:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1354, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "1200:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1350, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "1154:12:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1167:16:10", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1493, + "src": "1154:29:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 1355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1154:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1356, + "nodeType": "ExpressionStatement", + "src": "1154:52:10" + } + ] + }, + "documentation": { + "id": 1343, + "nodeType": "StructuredDocumentation", + "src": "636:439:10", + "text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero." + }, + "id": 1358, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1345, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1100:14:10", + "nodeType": "VariableDeclaration", + "scope": 1358, + "src": "1092:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1092:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1347, + "mutability": "mutable", + "name": "_data", + "nameLocation": "1129:5:10", + "nodeType": "VariableDeclaration", + "scope": 1358, + "src": "1116:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1346, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1116:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1091:44:10" + }, + "returnParameters": { + "id": 1349, + "nodeType": "ParameterList", + "parameters": [], + "src": "1144:0:10" + }, + "scope": 1371, + "src": "1080:133:10", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1691 + ], + "body": { + "id": 1369, + "nodeType": "Block", + "src": "1657:56:10", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1365, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "1674:12:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1687:17:10", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1432, + "src": "1674:30:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1674:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1364, + "id": 1368, + "nodeType": "Return", + "src": "1667:39:10" + } + ] + }, + "documentation": { + "id": 1359, + "nodeType": "StructuredDocumentation", + "src": "1219:357:10", + "text": " @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + }, + "id": 1370, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "1590:15:10", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1361, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1630:8:10" + }, + "parameters": { + "id": 1360, + "nodeType": "ParameterList", + "parameters": [], + "src": "1605:2:10" + }, + "returnParameters": { + "id": 1364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1363, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1370, + "src": "1648:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1647:9:10" + }, + "scope": 1371, + "src": "1581:132:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1372, + "src": "599:1116:10", + "usedErrors": [ + 1406, + 1419, + 2272, + 2275 + ], + "usedEvents": [ + 1385 + ] + } + ], + "src": "114:1602:10" + }, + "id": 10 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "exportedSymbols": { + "Address": [ + 2512 + ], + "ERC1967Utils": [ + 1674 + ], + "IBeacon": [ + 1720 + ], + "StorageSlot": [ + 2622 + ] + }, + "id": 1675, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1373, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:11" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "id": 1375, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1675, + "sourceUnit": 1721, + "src": "140:46:11", + "symbolAliases": [ + { + "foreign": { + "id": 1374, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "148:7:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 1377, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1675, + "sourceUnit": 2513, + "src": "187:48:11", + "symbolAliases": [ + { + "foreign": { + "id": 1376, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "195:7:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "id": 1379, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1675, + "sourceUnit": 2623, + "src": "236:56:11", + "symbolAliases": [ + { + "foreign": { + "id": 1378, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "244:11:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1967Utils", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1380, + "nodeType": "StructuredDocumentation", + "src": "294:154:11", + "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots." + }, + "fullyImplemented": true, + "id": 1674, + "linearizedBaseContracts": [ + 1674 + ], + "name": "ERC1967Utils", + "nameLocation": "457:12:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1381, + "nodeType": "StructuredDocumentation", + "src": "660:68:11", + "text": " @dev Emitted when the implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 1385, + "name": "Upgraded", + "nameLocation": "739:8:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 1384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1383, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "764:14:11", + "nodeType": "VariableDeclaration", + "scope": 1385, + "src": "748:30:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "748:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "747:32:11" + }, + "src": "733:47:11" + }, + { + "anonymous": false, + "documentation": { + "id": 1386, + "nodeType": "StructuredDocumentation", + "src": "786:67:11", + "text": " @dev Emitted when the admin account has changed." + }, + "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", + "id": 1392, + "name": "AdminChanged", + "nameLocation": "864:12:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 1391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1388, + "indexed": false, + "mutability": "mutable", + "name": "previousAdmin", + "nameLocation": "885:13:11", + "nodeType": "VariableDeclaration", + "scope": 1392, + "src": "877:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "877:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "indexed": false, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "908:8:11", + "nodeType": "VariableDeclaration", + "scope": 1392, + "src": "900:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "900:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "876:41:11" + }, + "src": "858:60:11" + }, + { + "anonymous": false, + "documentation": { + "id": 1393, + "nodeType": "StructuredDocumentation", + "src": "924:59:11", + "text": " @dev Emitted when the beacon is changed." + }, + "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", + "id": 1397, + "name": "BeaconUpgraded", + "nameLocation": "994:14:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 1396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1395, + "indexed": true, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1025:6:11", + "nodeType": "VariableDeclaration", + "scope": 1397, + "src": "1009:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1009:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1008:24:11" + }, + "src": "988:45:11" + }, + { + "constant": true, + "documentation": { + "id": 1398, + "nodeType": "StructuredDocumentation", + "src": "1039:170:11", + "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1." + }, + "id": 1401, + "mutability": "constant", + "name": "IMPLEMENTATION_SLOT", + "nameLocation": "1305:19:11", + "nodeType": "VariableDeclaration", + "scope": 1674, + "src": "1279:114:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1399, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1279:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1327:66:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 1402, + "nodeType": "StructuredDocumentation", + "src": "1400:69:11", + "text": " @dev The `implementation` of the proxy is invalid." + }, + "errorSelector": "4c9c8ce3", + "id": 1406, + "name": "ERC1967InvalidImplementation", + "nameLocation": "1480:28:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1404, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1517:14:11", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "1509:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1509:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1508:24:11" + }, + "src": "1474:59:11" + }, + { + "documentation": { + "id": 1407, + "nodeType": "StructuredDocumentation", + "src": "1539:60:11", + "text": " @dev The `admin` of the proxy is invalid." + }, + "errorSelector": "62e77ba2", + "id": 1411, + "name": "ERC1967InvalidAdmin", + "nameLocation": "1610:19:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1409, + "mutability": "mutable", + "name": "admin", + "nameLocation": "1638:5:11", + "nodeType": "VariableDeclaration", + "scope": 1411, + "src": "1630:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1408, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1630:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1629:15:11" + }, + "src": "1604:41:11" + }, + { + "documentation": { + "id": 1412, + "nodeType": "StructuredDocumentation", + "src": "1651:61:11", + "text": " @dev The `beacon` of the proxy is invalid." + }, + "errorSelector": "64ced0ec", + "id": 1416, + "name": "ERC1967InvalidBeacon", + "nameLocation": "1723:20:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1414, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1752:6:11", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "1744:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1744:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1743:16:11" + }, + "src": "1717:43:11" + }, + { + "documentation": { + "id": 1417, + "nodeType": "StructuredDocumentation", + "src": "1766:82:11", + "text": " @dev An upgrade function sees `msg.value > 0` that may be lost." + }, + "errorSelector": "b398979f", + "id": 1419, + "name": "ERC1967NonPayable", + "nameLocation": "1859:17:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1418, + "nodeType": "ParameterList", + "parameters": [], + "src": "1876:2:11" + }, + "src": "1853:26:11" + }, + { + "body": { + "id": 1431, + "nodeType": "Block", + "src": "2018:77:11", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1427, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "2062:19:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1425, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "2035:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2047:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "2035:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2035:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2083:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "2035:53:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1424, + "id": 1430, + "nodeType": "Return", + "src": "2028:60:11" + } + ] + }, + "documentation": { + "id": 1420, + "nodeType": "StructuredDocumentation", + "src": "1885:67:11", + "text": " @dev Returns the current implementation address." + }, + "id": 1432, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getImplementation", + "nameLocation": "1966:17:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1421, + "nodeType": "ParameterList", + "parameters": [], + "src": "1983:2:11" + }, + "returnParameters": { + "id": 1424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1423, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1432, + "src": "2009:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2009:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2008:9:11" + }, + "scope": 1674, + "src": "1957:138:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1458, + "nodeType": "Block", + "src": "2249:218:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1438, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "2263:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2281:4:11", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "2263:22:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2286:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2263:29:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2296:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2263:34:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1448, + "nodeType": "IfStatement", + "src": "2259:119:11", + "trueBody": { + "id": 1447, + "nodeType": "Block", + "src": "2299:79:11", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1444, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "2349:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1443, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "2320:28:11", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2320:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1446, + "nodeType": "RevertStatement", + "src": "2313:54:11" + } + ] + } + }, + { + "expression": { + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1452, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1401, + "src": "2414:19:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1449, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "2387:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2399:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "2387:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2387:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1454, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2435:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "2387:53:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1455, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "2443:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2387:73:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1457, + "nodeType": "ExpressionStatement", + "src": "2387:73:11" + } + ] + }, + "documentation": { + "id": 1433, + "nodeType": "StructuredDocumentation", + "src": "2101:80:11", + "text": " @dev Stores a new address in the EIP1967 implementation slot." + }, + "id": 1459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setImplementation", + "nameLocation": "2195:18:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1435, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2222:17:11", + "nodeType": "VariableDeclaration", + "scope": 1459, + "src": "2214:25:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2214:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2213:27:11" + }, + "returnParameters": { + "id": 1437, + "nodeType": "ParameterList", + "parameters": [], + "src": "2249:0:11" + }, + "scope": 1674, + "src": "2186:281:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1492, + "nodeType": "Block", + "src": "2860:254:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1468, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1462, + "src": "2889:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1467, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1459, + "src": "2870:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2870:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1470, + "nodeType": "ExpressionStatement", + "src": "2870:37:11" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1472, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1462, + "src": "2931:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1471, + "name": "Upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "2922:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2922:27:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1474, + "nodeType": "EmitStatement", + "src": "2917:32:11" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1475, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1464, + "src": "2964:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2969:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2964:11:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2978:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2964:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1490, + "nodeType": "Block", + "src": "3065:43:11", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1487, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1673, + "src": "3079:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3079:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1489, + "nodeType": "ExpressionStatement", + "src": "3079:18:11" + } + ] + }, + "id": 1491, + "nodeType": "IfStatement", + "src": "2960:148:11", + "trueBody": { + "id": 1486, + "nodeType": "Block", + "src": "2981:78:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1482, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1462, + "src": "3024:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1483, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1464, + "src": "3043:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1479, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "2995:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$2512_$", + "typeString": "type(library Address)" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3003:20:11", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 2431, + "src": "2995:28:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2995:53:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1485, + "nodeType": "ExpressionStatement", + "src": "2995:53:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 1460, + "nodeType": "StructuredDocumentation", + "src": "2473:301:11", + "text": " @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 1493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeToAndCall", + "nameLocation": "2788:16:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1462, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2813:17:11", + "nodeType": "VariableDeclaration", + "scope": 1493, + "src": "2805:25:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2805:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1464, + "mutability": "mutable", + "name": "data", + "nameLocation": "2845:4:11", + "nodeType": "VariableDeclaration", + "scope": 1493, + "src": "2832:17:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1463, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2832:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2804:46:11" + }, + "returnParameters": { + "id": 1466, + "nodeType": "ParameterList", + "parameters": [], + "src": "2860:0:11" + }, + "scope": 1674, + "src": "2779:335:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 1494, + "nodeType": "StructuredDocumentation", + "src": "3120:145:11", + "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1." + }, + "id": 1497, + "mutability": "constant", + "name": "ADMIN_SLOT", + "nameLocation": "3361:10:11", + "nodeType": "VariableDeclaration", + "scope": 1674, + "src": "3335:105:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1495, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3335:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3374:66:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", + "typeString": "int_const 8195...(69 digits omitted)...7091" + }, + "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1509, + "nodeType": "Block", + "src": "3844:68:11", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1505, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "3888:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1503, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "3861:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3873:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "3861:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3861:38:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3900:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "3861:44:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1502, + "id": 1508, + "nodeType": "Return", + "src": "3854:51:11" + } + ] + }, + "documentation": { + "id": 1498, + "nodeType": "StructuredDocumentation", + "src": "3447:340:11", + "text": " @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" + }, + "id": 1510, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAdmin", + "nameLocation": "3801:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1499, + "nodeType": "ParameterList", + "parameters": [], + "src": "3809:2:11" + }, + "returnParameters": { + "id": 1502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1501, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1510, + "src": "3835:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1500, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3835:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3834:9:11" + }, + "scope": 1674, + "src": "3792:120:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1540, + "nodeType": "Block", + "src": "4039:172:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1516, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1513, + "src": "4053:8:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4073:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4065:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4065:7:11", + "typeDescriptions": {} + } + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4065:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4053:22:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1530, + "nodeType": "IfStatement", + "src": "4049:91:11", + "trueBody": { + "id": 1529, + "nodeType": "Block", + "src": "4077:63:11", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4126:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4118:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4118:7:11", + "typeDescriptions": {} + } + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4118:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1522, + "name": "ERC1967InvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1411, + "src": "4098:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4098:31:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1528, + "nodeType": "RevertStatement", + "src": "4091:38:11" + } + ] + } + }, + { + "expression": { + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1534, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "4176:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1531, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "4149:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4161:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "4149:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4149:38:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1536, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4188:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "4149:44:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1537, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1513, + "src": "4196:8:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4149:55:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1539, + "nodeType": "ExpressionStatement", + "src": "4149:55:11" + } + ] + }, + "documentation": { + "id": 1511, + "nodeType": "StructuredDocumentation", + "src": "3918:71:11", + "text": " @dev Stores a new address in the EIP1967 admin slot." + }, + "id": 1541, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAdmin", + "nameLocation": "4003:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1513, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4021:8:11", + "nodeType": "VariableDeclaration", + "scope": 1541, + "src": "4013:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4013:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4012:18:11" + }, + "returnParameters": { + "id": 1515, + "nodeType": "ParameterList", + "parameters": [], + "src": "4039:0:11" + }, + "scope": 1674, + "src": "3994:217:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1557, + "nodeType": "Block", + "src": "4379:85:11", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1548, + "name": "getAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1510, + "src": "4407:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4407:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1550, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1544, + "src": "4419:8:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1547, + "name": "AdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1392, + "src": "4394:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4394:34:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1552, + "nodeType": "EmitStatement", + "src": "4389:39:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1554, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1544, + "src": "4448:8:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1553, + "name": "_setAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1541, + "src": "4438:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4438:19:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1556, + "nodeType": "ExpressionStatement", + "src": "4438:19:11" + } + ] + }, + "documentation": { + "id": 1542, + "nodeType": "StructuredDocumentation", + "src": "4217:109:11", + "text": " @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event." + }, + "id": 1558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "changeAdmin", + "nameLocation": "4340:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1544, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4360:8:11", + "nodeType": "VariableDeclaration", + "scope": 1558, + "src": "4352:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1543, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4352:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4351:18:11" + }, + "returnParameters": { + "id": 1546, + "nodeType": "ParameterList", + "parameters": [], + "src": "4379:0:11" + }, + "scope": 1674, + "src": "4331:133:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 1559, + "nodeType": "StructuredDocumentation", + "src": "4470:201:11", + "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1." + }, + "id": 1562, + "mutability": "constant", + "name": "BEACON_SLOT", + "nameLocation": "4767:11:11", + "nodeType": "VariableDeclaration", + "scope": 1674, + "src": "4741:106:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1560, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4741:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4781:66:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", + "typeString": "int_const 7415...(69 digits omitted)...4704" + }, + "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1574, + "nodeType": "Block", + "src": "4963:69:11", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1570, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1562, + "src": "5007:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1568, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "4980:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4992:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "4980:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4980:39:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "4980:45:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1567, + "id": 1573, + "nodeType": "Return", + "src": "4973:52:11" + } + ] + }, + "documentation": { + "id": 1563, + "nodeType": "StructuredDocumentation", + "src": "4854:51:11", + "text": " @dev Returns the current beacon." + }, + "id": 1575, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBeacon", + "nameLocation": "4919:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1564, + "nodeType": "ParameterList", + "parameters": [], + "src": "4928:2:11" + }, + "returnParameters": { + "id": 1567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1575, + "src": "4954:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4954:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4953:9:11" + }, + "scope": 1674, + "src": "4910:122:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1620, + "nodeType": "Block", + "src": "5161:390:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1581, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "5175:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5185:4:11", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5175:14:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5190:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5175:21:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5200:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5175:26:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1591, + "nodeType": "IfStatement", + "src": "5171:95:11", + "trueBody": { + "id": 1590, + "nodeType": "Block", + "src": "5203:63:11", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1587, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "5245:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1586, + "name": "ERC1967InvalidBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1416, + "src": "5224:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5224:31:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1589, + "nodeType": "RevertStatement", + "src": "5217:38:11" + } + ] + } + }, + { + "expression": { + "id": 1599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1595, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1562, + "src": "5303:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1592, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2622, + "src": "5276:11:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2622_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5288:14:11", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2544, + "src": "5276:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2518_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5276:39:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5316:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2517, + "src": "5276:45:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1598, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "5324:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5276:57:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1600, + "nodeType": "ExpressionStatement", + "src": "5276:57:11" + }, + { + "assignments": [ + 1602 + ], + "declarations": [ + { + "constant": false, + "id": 1602, + "mutability": "mutable", + "name": "beaconImplementation", + "nameLocation": "5352:20:11", + "nodeType": "VariableDeclaration", + "scope": 1620, + "src": "5344:28:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5344:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1608, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1604, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "5383:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1603, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "5375:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$1720_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5375:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$1720", + "typeString": "contract IBeacon" + } + }, + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5394:14:11", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1719, + "src": "5375:33:11", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5375:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5344:66:11" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1609, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "5424:20:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5445:4:11", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5424:25:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5450:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5424:32:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5460:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5424:37:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1619, + "nodeType": "IfStatement", + "src": "5420:125:11", + "trueBody": { + "id": 1618, + "nodeType": "Block", + "src": "5463:82:11", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1615, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "5513:20:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1614, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "5484:28:11", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5484:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1617, + "nodeType": "RevertStatement", + "src": "5477:57:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 1576, + "nodeType": "StructuredDocumentation", + "src": "5038:71:11", + "text": " @dev Stores a new beacon in the EIP1967 beacon slot." + }, + "id": 1621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBeacon", + "nameLocation": "5123:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1579, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1578, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "5142:9:11", + "nodeType": "VariableDeclaration", + "scope": 1621, + "src": "5134:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5134:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5133:19:11" + }, + "returnParameters": { + "id": 1580, + "nodeType": "ParameterList", + "parameters": [], + "src": "5161:0:11" + }, + "scope": 1674, + "src": "5114:437:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1658, + "nodeType": "Block", + "src": "6155:254:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1630, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1624, + "src": "6176:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1629, + "name": "_setBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1621, + "src": "6165:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6165:21:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1632, + "nodeType": "ExpressionStatement", + "src": "6165:21:11" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1634, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1624, + "src": "6216:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1633, + "name": "BeaconUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1397, + "src": "6201:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6201:25:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1636, + "nodeType": "EmitStatement", + "src": "6196:30:11" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1637, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1626, + "src": "6241:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6246:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6241:11:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6255:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6241:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1656, + "nodeType": "Block", + "src": "6360:43:11", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1653, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1673, + "src": "6374:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6374:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1655, + "nodeType": "ExpressionStatement", + "src": "6374:18:11" + } + ] + }, + "id": 1657, + "nodeType": "IfStatement", + "src": "6237:166:11", + "trueBody": { + "id": 1652, + "nodeType": "Block", + "src": "6258:96:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1645, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1624, + "src": "6309:9:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1644, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "6301:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$1720_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$1720", + "typeString": "contract IBeacon" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6320:14:11", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1719, + "src": "6301:33:11", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1649, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1626, + "src": "6338:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1641, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "6272:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$2512_$", + "typeString": "type(library Address)" + } + }, + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6280:20:11", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 2431, + "src": "6272:28:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6272:71:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1651, + "nodeType": "ExpressionStatement", + "src": "6272:71:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 1622, + "nodeType": "StructuredDocumentation", + "src": "5557:514:11", + "text": " @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency." + }, + "id": 1659, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeBeaconToAndCall", + "nameLocation": "6085:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1624, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "6116:9:11", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "6108:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6108:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1626, + "mutability": "mutable", + "name": "data", + "nameLocation": "6140:4:11", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "6127:17:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1625, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6127:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6107:38:11" + }, + "returnParameters": { + "id": 1628, + "nodeType": "ParameterList", + "parameters": [], + "src": "6155:0:11" + }, + "scope": 1674, + "src": "6076:333:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1672, + "nodeType": "Block", + "src": "6634:86:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1663, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6648:3:11", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6652:5:11", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6648:9:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6660:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6648:13:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1671, + "nodeType": "IfStatement", + "src": "6644:70:11", + "trueBody": { + "id": 1670, + "nodeType": "Block", + "src": "6663:51:11", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1667, + "name": "ERC1967NonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "6684:17:11", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6684:19:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1669, + "nodeType": "RevertStatement", + "src": "6677:26:11" + } + ] + } + } + ] + }, + "documentation": { + "id": 1660, + "nodeType": "StructuredDocumentation", + "src": "6415:178:11", + "text": " @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call." + }, + "id": 1673, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNonPayable", + "nameLocation": "6607:16:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1661, + "nodeType": "ParameterList", + "parameters": [], + "src": "6623:2:11" + }, + "returnParameters": { + "id": 1662, + "nodeType": "ParameterList", + "parameters": [], + "src": "6634:0:11" + }, + "scope": 1674, + "src": "6598:122:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1675, + "src": "449:6273:11", + "usedErrors": [ + 1406, + 1411, + 1416, + 1419 + ], + "usedEvents": [ + 1385, + 1392, + 1397 + ] + } + ], + "src": "114:6609:11" + }, + "id": 11 + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1710 + ] + }, + "id": 1711, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1676, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:12" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1677, + "nodeType": "StructuredDocumentation", + "src": "125:598:12", + "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy." + }, + "fullyImplemented": false, + "id": 1710, + "linearizedBaseContracts": [ + 1710 + ], + "name": "Proxy", + "nameLocation": "742:5:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1684, + "nodeType": "Block", + "src": "1009:835:12", + "statements": [ + { + "AST": { + "nativeSrc": "1028:810:12", + "nodeType": "YulBlock", + "src": "1028:810:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1281:1:12", + "nodeType": "YulLiteral", + "src": "1281:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1284:1:12", + "nodeType": "YulLiteral", + "src": "1284:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1287:12:12", + "nodeType": "YulIdentifier", + "src": "1287:12:12" + }, + "nativeSrc": "1287:14:12", + "nodeType": "YulFunctionCall", + "src": "1287:14:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1268:12:12", + "nodeType": "YulIdentifier", + "src": "1268:12:12" + }, + "nativeSrc": "1268:34:12", + "nodeType": "YulFunctionCall", + "src": "1268:34:12" + }, + "nativeSrc": "1268:34:12", + "nodeType": "YulExpressionStatement", + "src": "1268:34:12" + }, + { + "nativeSrc": "1429:74:12", + "nodeType": "YulVariableDeclaration", + "src": "1429:74:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "1456:3:12", + "nodeType": "YulIdentifier", + "src": "1456:3:12" + }, + "nativeSrc": "1456:5:12", + "nodeType": "YulFunctionCall", + "src": "1456:5:12" + }, + { + "name": "implementation", + "nativeSrc": "1463:14:12", + "nodeType": "YulIdentifier", + "src": "1463:14:12" + }, + { + "kind": "number", + "nativeSrc": "1479:1:12", + "nodeType": "YulLiteral", + "src": "1479:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1482:12:12", + "nodeType": "YulIdentifier", + "src": "1482:12:12" + }, + "nativeSrc": "1482:14:12", + "nodeType": "YulFunctionCall", + "src": "1482:14:12" + }, + { + "kind": "number", + "nativeSrc": "1498:1:12", + "nodeType": "YulLiteral", + "src": "1498:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1501:1:12", + "nodeType": "YulLiteral", + "src": "1501:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "delegatecall", + "nativeSrc": "1443:12:12", + "nodeType": "YulIdentifier", + "src": "1443:12:12" + }, + "nativeSrc": "1443:60:12", + "nodeType": "YulFunctionCall", + "src": "1443:60:12" + }, + "variables": [ + { + "name": "result", + "nativeSrc": "1433:6:12", + "nodeType": "YulTypedName", + "src": "1433:6:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1571:1:12", + "nodeType": "YulLiteral", + "src": "1571:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1574:1:12", + "nodeType": "YulLiteral", + "src": "1574:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1577:14:12", + "nodeType": "YulIdentifier", + "src": "1577:14:12" + }, + "nativeSrc": "1577:16:12", + "nodeType": "YulFunctionCall", + "src": "1577:16:12" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "1556:14:12", + "nodeType": "YulIdentifier", + "src": "1556:14:12" + }, + "nativeSrc": "1556:38:12", + "nodeType": "YulFunctionCall", + "src": "1556:38:12" + }, + "nativeSrc": "1556:38:12", + "nodeType": "YulExpressionStatement", + "src": "1556:38:12" + }, + { + "cases": [ + { + "body": { + "nativeSrc": "1689:59:12", + "nodeType": "YulBlock", + "src": "1689:59:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1714:1:12", + "nodeType": "YulLiteral", + "src": "1714:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1717:14:12", + "nodeType": "YulIdentifier", + "src": "1717:14:12" + }, + "nativeSrc": "1717:16:12", + "nodeType": "YulFunctionCall", + "src": "1717:16:12" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1707:6:12", + "nodeType": "YulIdentifier", + "src": "1707:6:12" + }, + "nativeSrc": "1707:27:12", + "nodeType": "YulFunctionCall", + "src": "1707:27:12" + }, + "nativeSrc": "1707:27:12", + "nodeType": "YulExpressionStatement", + "src": "1707:27:12" + } + ] + }, + "nativeSrc": "1682:66:12", + "nodeType": "YulCase", + "src": "1682:66:12", + "value": { + "kind": "number", + "nativeSrc": "1687:1:12", + "nodeType": "YulLiteral", + "src": "1687:1:12", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "1769:59:12", + "nodeType": "YulBlock", + "src": "1769:59:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1794:1:12", + "nodeType": "YulLiteral", + "src": "1794:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1797:14:12", + "nodeType": "YulIdentifier", + "src": "1797:14:12" + }, + "nativeSrc": "1797:16:12", + "nodeType": "YulFunctionCall", + "src": "1797:16:12" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "1787:6:12", + "nodeType": "YulIdentifier", + "src": "1787:6:12" + }, + "nativeSrc": "1787:27:12", + "nodeType": "YulFunctionCall", + "src": "1787:27:12" + }, + "nativeSrc": "1787:27:12", + "nodeType": "YulExpressionStatement", + "src": "1787:27:12" + } + ] + }, + "nativeSrc": "1761:67:12", + "nodeType": "YulCase", + "src": "1761:67:12", + "value": "default" + } + ], + "expression": { + "name": "result", + "nativeSrc": "1615:6:12", + "nodeType": "YulIdentifier", + "src": "1615:6:12" + }, + "nativeSrc": "1608:220:12", + "nodeType": "YulSwitch", + "src": "1608:220:12" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1680, + "isOffset": false, + "isSlot": false, + "src": "1463:14:12", + "valueSize": 1 + } + ], + "id": 1683, + "nodeType": "InlineAssembly", + "src": "1019:819:12" + } + ] + }, + "documentation": { + "id": 1678, + "nodeType": "StructuredDocumentation", + "src": "754:190:12", + "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 1685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_delegate", + "nameLocation": "958:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1680, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "976:14:12", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "968:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "967:24:12" + }, + "returnParameters": { + "id": 1682, + "nodeType": "ParameterList", + "parameters": [], + "src": "1009:0:12" + }, + "scope": 1710, + "src": "949:895:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 1686, + "nodeType": "StructuredDocumentation", + "src": "1850:173:12", + "text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate." + }, + "id": 1691, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "2037:15:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1687, + "nodeType": "ParameterList", + "parameters": [], + "src": "2052:2:12" + }, + "returnParameters": { + "id": 1690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1689, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1691, + "src": "2086:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2086:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2085:9:12" + }, + "scope": 1710, + "src": "2028:67:12", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1700, + "nodeType": "Block", + "src": "2361:45:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1696, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "2381:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2381:17:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1695, + "name": "_delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2371:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2371:28:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1699, + "nodeType": "ExpressionStatement", + "src": "2371:28:12" + } + ] + }, + "documentation": { + "id": 1692, + "nodeType": "StructuredDocumentation", + "src": "2101:217:12", + "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 1701, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_fallback", + "nameLocation": "2332:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1693, + "nodeType": "ParameterList", + "parameters": [], + "src": "2341:2:12" + }, + "returnParameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [], + "src": "2361:0:12" + }, + "scope": 1710, + "src": "2323:83:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1708, + "nodeType": "Block", + "src": "2639:28:12", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1705, + "name": "_fallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1701, + "src": "2649:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:11:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1707, + "nodeType": "ExpressionStatement", + "src": "2649:11:12" + } + ] + }, + "documentation": { + "id": 1702, + "nodeType": "StructuredDocumentation", + "src": "2412:186:12", + "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data." + }, + "id": 1709, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1703, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:2:12" + }, + "returnParameters": { + "id": 1704, + "nodeType": "ParameterList", + "parameters": [], + "src": "2639:0:12" + }, + "scope": 1710, + "src": "2603:64:12", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + } + ], + "scope": 1711, + "src": "724:1945:12", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:2571:12" + }, + "id": 12 + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "exportedSymbols": { + "IBeacon": [ + 1720 + ] + }, + "id": 1721, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1712, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:13" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBeacon", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1713, + "nodeType": "StructuredDocumentation", + "src": "134:79:13", + "text": " @dev This is the interface that {BeaconProxy} expects of its beacon." + }, + "fullyImplemented": false, + "id": 1720, + "linearizedBaseContracts": [ + 1720 + ], + "name": "IBeacon", + "nameLocation": "224:7:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1714, + "nodeType": "StructuredDocumentation", + "src": "238:168:13", + "text": " @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract." + }, + "functionSelector": "5c60da1b", + "id": 1719, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "420:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1715, + "nodeType": "ParameterList", + "parameters": [], + "src": "434:2:13" + }, + "returnParameters": { + "id": 1718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1717, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1719, + "src": "460:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "460:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "459:9:13" + }, + "scope": 1720, + "src": "411:58:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1721, + "src": "214:257:13", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "108:364:13" + }, + "id": 13 + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1798 + ] + }, + "id": 1799, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1722, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:14" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1723, + "nodeType": "StructuredDocumentation", + "src": "132:70:14", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 1798, + "linearizedBaseContracts": [ + 1798 + ], + "name": "IERC20", + "nameLocation": "213:6:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1724, + "nodeType": "StructuredDocumentation", + "src": "226:158:14", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 1732, + "name": "Transfer", + "nameLocation": "395:8:14", + "nodeType": "EventDefinition", + "parameters": { + "id": 1731, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1726, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "420:4:14", + "nodeType": "VariableDeclaration", + "scope": 1732, + "src": "404:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1725, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "404:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1728, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "442:2:14", + "nodeType": "VariableDeclaration", + "scope": 1732, + "src": "426:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "426:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1730, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "454:5:14", + "nodeType": "VariableDeclaration", + "scope": 1732, + "src": "446:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "403:57:14" + }, + "src": "389:72:14" + }, + { + "anonymous": false, + "documentation": { + "id": 1733, + "nodeType": "StructuredDocumentation", + "src": "467:148:14", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 1741, + "name": "Approval", + "nameLocation": "626:8:14", + "nodeType": "EventDefinition", + "parameters": { + "id": 1740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1735, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "651:5:14", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "635:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "635:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1737, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "674:7:14", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "658:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "658:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1739, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "691:5:14", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "683:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "683:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "634:63:14" + }, + "src": "620:78:14" + }, + { + "documentation": { + "id": 1742, + "nodeType": "StructuredDocumentation", + "src": "704:65:14", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 1747, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "783:11:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1743, + "nodeType": "ParameterList", + "parameters": [], + "src": "794:2:14" + }, + "returnParameters": { + "id": 1746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1745, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1747, + "src": "820:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "820:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "819:9:14" + }, + "scope": 1798, + "src": "774:55:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1748, + "nodeType": "StructuredDocumentation", + "src": "835:71:14", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 1755, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "920:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1750, + "mutability": "mutable", + "name": "account", + "nameLocation": "938:7:14", + "nodeType": "VariableDeclaration", + "scope": 1755, + "src": "930:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "930:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "929:17:14" + }, + "returnParameters": { + "id": 1754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1753, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1755, + "src": "970:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "970:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "969:9:14" + }, + "scope": 1798, + "src": "911:68:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1756, + "nodeType": "StructuredDocumentation", + "src": "985:213:14", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 1765, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1212:8:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1758, + "mutability": "mutable", + "name": "to", + "nameLocation": "1229:2:14", + "nodeType": "VariableDeclaration", + "scope": 1765, + "src": "1221:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1221:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1760, + "mutability": "mutable", + "name": "value", + "nameLocation": "1241:5:14", + "nodeType": "VariableDeclaration", + "scope": 1765, + "src": "1233:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1233:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1220:27:14" + }, + "returnParameters": { + "id": 1764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1763, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1765, + "src": "1266:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1762, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1266:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1265:6:14" + }, + "scope": 1798, + "src": "1203:69:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1766, + "nodeType": "StructuredDocumentation", + "src": "1278:264:14", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 1775, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1556:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1768, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1574:5:14", + "nodeType": "VariableDeclaration", + "scope": 1775, + "src": "1566:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1566:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1770, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1589:7:14", + "nodeType": "VariableDeclaration", + "scope": 1775, + "src": "1581:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1581:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1565:32:14" + }, + "returnParameters": { + "id": 1774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1773, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1775, + "src": "1621:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1621:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1620:9:14" + }, + "scope": 1798, + "src": "1547:83:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1776, + "nodeType": "StructuredDocumentation", + "src": "1636:667:14", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 1785, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2317:7:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1778, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2333:7:14", + "nodeType": "VariableDeclaration", + "scope": 1785, + "src": "2325:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2325:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1780, + "mutability": "mutable", + "name": "value", + "nameLocation": "2350:5:14", + "nodeType": "VariableDeclaration", + "scope": 1785, + "src": "2342:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2342:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2324:32:14" + }, + "returnParameters": { + "id": 1784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1783, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1785, + "src": "2375:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1782, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2375:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2374:6:14" + }, + "scope": 1798, + "src": "2308:73:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1786, + "nodeType": "StructuredDocumentation", + "src": "2387:297:14", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 1797, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2698:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1788, + "mutability": "mutable", + "name": "from", + "nameLocation": "2719:4:14", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "2711:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1787, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2711:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1790, + "mutability": "mutable", + "name": "to", + "nameLocation": "2733:2:14", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "2725:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2725:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1792, + "mutability": "mutable", + "name": "value", + "nameLocation": "2745:5:14", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "2737:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1791, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2737:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2710:41:14" + }, + "returnParameters": { + "id": 1796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1795, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "2770:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1794, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2770:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2769:6:14" + }, + "scope": 1798, + "src": "2689:87:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1799, + "src": "203:2575:14", + "usedErrors": [], + "usedEvents": [ + 1732, + 1741 + ] + } + ], + "src": "106:2673:14" + }, + "id": 14 + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "exportedSymbols": { + "IERC20Permit": [ + 1834 + ] + }, + "id": 1835, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1800, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "123:24:15" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Permit", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1801, + "nodeType": "StructuredDocumentation", + "src": "149:1963:15", + "text": " @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n token.safeTransferFrom(msg.sender, address(this), value);\n ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit." + }, + "fullyImplemented": false, + "id": 1834, + "linearizedBaseContracts": [ + 1834 + ], + "name": "IERC20Permit", + "nameLocation": "2123:12:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1802, + "nodeType": "StructuredDocumentation", + "src": "2142:850:15", + "text": " @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above." + }, + "functionSelector": "d505accf", + "id": 1819, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "3006:6:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3030:5:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3022:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3022:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1806, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3053:7:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3045:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3045:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1808, + "mutability": "mutable", + "name": "value", + "nameLocation": "3078:5:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3070:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3070:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1810, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3101:8:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3093:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3093:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1812, + "mutability": "mutable", + "name": "v", + "nameLocation": "3125:1:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3119:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1811, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3119:5:15", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1814, + "mutability": "mutable", + "name": "r", + "nameLocation": "3144:1:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3136:9:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1813, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3136:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1816, + "mutability": "mutable", + "name": "s", + "nameLocation": "3163:1:15", + "nodeType": "VariableDeclaration", + "scope": 1819, + "src": "3155:9:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1815, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3155:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3012:158:15" + }, + "returnParameters": { + "id": 1818, + "nodeType": "ParameterList", + "parameters": [], + "src": "3179:0:15" + }, + "scope": 1834, + "src": "2997:183:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1820, + "nodeType": "StructuredDocumentation", + "src": "3186:294:15", + "text": " @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times." + }, + "functionSelector": "7ecebe00", + "id": 1827, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "3494:6:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1822, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3509:5:15", + "nodeType": "VariableDeclaration", + "scope": 1827, + "src": "3501:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3501:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3500:15:15" + }, + "returnParameters": { + "id": 1826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1825, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1827, + "src": "3539:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3539:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3538:9:15" + }, + "scope": 1834, + "src": "3485:63:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1828, + "nodeType": "StructuredDocumentation", + "src": "3554:128:15", + "text": " @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." + }, + "functionSelector": "3644e515", + "id": 1833, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "3749:16:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1829, + "nodeType": "ParameterList", + "parameters": [], + "src": "3765:2:15" + }, + "returnParameters": { + "id": 1832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1831, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1833, + "src": "3791:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3791:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3790:9:15" + }, + "scope": 1834, + "src": "3740:60:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1835, + "src": "2113:1689:15", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "123:3680:15" + }, + "id": 15 + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "exportedSymbols": { + "Address": [ + 2512 + ], + "IERC20": [ + 1798 + ], + "IERC20Permit": [ + 1834 + ], + "SafeERC20": [ + 2124 + ] + }, + "id": 2125, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1836, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:16" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 1838, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2125, + "sourceUnit": 1799, + "src": "141:37:16", + "symbolAliases": [ + { + "foreign": { + "id": 1837, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1798, + "src": "149:6:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", + "file": "../extensions/IERC20Permit.sol", + "id": 1840, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2125, + "sourceUnit": 1835, + "src": "179:60:16", + "symbolAliases": [ + { + "foreign": { + "id": 1839, + "name": "IERC20Permit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "187:12:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../../utils/Address.sol", + "id": 1842, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2125, + "sourceUnit": 2513, + "src": "240:51:16", + "symbolAliases": [ + { + "foreign": { + "id": 1841, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "248:7:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeERC20", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1843, + "nodeType": "StructuredDocumentation", + "src": "293:457:16", + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 2124, + "linearizedBaseContracts": [ + 2124 + ], + "name": "SafeERC20", + "nameLocation": "759:9:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 1846, + "libraryName": { + "id": 1844, + "name": "Address", + "nameLocations": [ + "781:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2512, + "src": "781:7:16" + }, + "nodeType": "UsingForDirective", + "src": "775:26:16", + "typeName": { + "id": 1845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "793:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "documentation": { + "id": 1847, + "nodeType": "StructuredDocumentation", + "src": "807:64:16", + "text": " @dev An operation with an ERC20 token failed." + }, + "errorSelector": "5274afe7", + "id": 1851, + "name": "SafeERC20FailedOperation", + "nameLocation": "882:24:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1849, + "mutability": "mutable", + "name": "token", + "nameLocation": "915:5:16", + "nodeType": "VariableDeclaration", + "scope": 1851, + "src": "907:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "907:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "906:15:16" + }, + "src": "876:46:16" + }, + { + "documentation": { + "id": 1852, + "nodeType": "StructuredDocumentation", + "src": "928:71:16", + "text": " @dev Indicates a failed `decreaseAllowance` request." + }, + "errorSelector": "e570110f", + "id": 1860, + "name": "SafeERC20FailedDecreaseAllowance", + "nameLocation": "1010:32:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1854, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1051:7:16", + "nodeType": "VariableDeclaration", + "scope": 1860, + "src": "1043:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1853, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1043:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1856, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "1068:16:16", + "nodeType": "VariableDeclaration", + "scope": 1860, + "src": "1060:24:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1060:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1858, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "1094:17:16", + "nodeType": "VariableDeclaration", + "scope": 1860, + "src": "1086:25:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1086:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1042:70:16" + }, + "src": "1004:109:16" + }, + { + "body": { + "id": 1883, + "nodeType": "Block", + "src": "1375:88:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1872, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1864, + "src": "1405:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 1875, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1864, + "src": "1427:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1433:8:16", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1765, + "src": "1427:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 1877, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1866, + "src": "1444:2:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1878, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1868, + "src": "1448:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1879, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1443:11:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 1873, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1412:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1416:10:16", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1412:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1412:43:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1871, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "1385:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1385:71:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1882, + "nodeType": "ExpressionStatement", + "src": "1385:71:16" + } + ] + }, + "documentation": { + "id": 1861, + "nodeType": "StructuredDocumentation", + "src": "1119:179:16", + "text": " @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 1884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "1312:12:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1864, + "mutability": "mutable", + "name": "token", + "nameLocation": "1332:5:16", + "nodeType": "VariableDeclaration", + "scope": 1884, + "src": "1325:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1863, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1862, + "name": "IERC20", + "nameLocations": [ + "1325:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "1325:6:16" + }, + "referencedDeclaration": 1798, + "src": "1325:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1866, + "mutability": "mutable", + "name": "to", + "nameLocation": "1347:2:16", + "nodeType": "VariableDeclaration", + "scope": 1884, + "src": "1339:10:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1339:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1868, + "mutability": "mutable", + "name": "value", + "nameLocation": "1359:5:16", + "nodeType": "VariableDeclaration", + "scope": 1884, + "src": "1351:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1351:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1324:41:16" + }, + "returnParameters": { + "id": 1870, + "nodeType": "ParameterList", + "parameters": [], + "src": "1375:0:16" + }, + "scope": 2124, + "src": "1303:160:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1910, + "nodeType": "Block", + "src": "1792:98:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1898, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1888, + "src": "1822:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 1901, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1888, + "src": "1844:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1850:12:16", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1797, + "src": "1844:18:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 1903, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "1865:4:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1904, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1892, + "src": "1871:2:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1905, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1894, + "src": "1875:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1906, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1864:17:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + ], + "expression": { + "id": 1899, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1829:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1833:10:16", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1829:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1829:53:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1897, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "1802:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1802:81:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1909, + "nodeType": "ExpressionStatement", + "src": "1802:81:16" + } + ] + }, + "documentation": { + "id": 1885, + "nodeType": "StructuredDocumentation", + "src": "1469:228:16", + "text": " @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful." + }, + "id": 1911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1711:16:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1888, + "mutability": "mutable", + "name": "token", + "nameLocation": "1735:5:16", + "nodeType": "VariableDeclaration", + "scope": 1911, + "src": "1728:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1887, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1886, + "name": "IERC20", + "nameLocations": [ + "1728:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "1728:6:16" + }, + "referencedDeclaration": 1798, + "src": "1728:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "from", + "nameLocation": "1750:4:16", + "nodeType": "VariableDeclaration", + "scope": 1911, + "src": "1742:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1742:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1892, + "mutability": "mutable", + "name": "to", + "nameLocation": "1764:2:16", + "nodeType": "VariableDeclaration", + "scope": 1911, + "src": "1756:10:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1894, + "mutability": "mutable", + "name": "value", + "nameLocation": "1776:5:16", + "nodeType": "VariableDeclaration", + "scope": 1911, + "src": "1768:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1727:55:16" + }, + "returnParameters": { + "id": 1896, + "nodeType": "ParameterList", + "parameters": [], + "src": "1792:0:16" + }, + "scope": 2124, + "src": "1702:188:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1941, + "nodeType": "Block", + "src": "2167:139:16", + "statements": [ + { + "assignments": [ + 1923 + ], + "declarations": [ + { + "constant": false, + "id": 1923, + "mutability": "mutable", + "name": "oldAllowance", + "nameLocation": "2185:12:16", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "2177:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2177:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1932, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1928, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2224:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$2124", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$2124", + "typeString": "library SafeERC20" + } + ], + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2216:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2216:7:16", + "typeDescriptions": {} + } + }, + "id": 1929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2216:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1930, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "2231:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1924, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "2200:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2206:9:16", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1775, + "src": "2200:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2200:39:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2177:62:16" + }, + { + "expression": { + "arguments": [ + { + "id": 1934, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "2262:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "id": 1935, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "2269:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1936, + "name": "oldAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "2278:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1937, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1919, + "src": "2293:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2278:20:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1933, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "2249:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2249:50:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1940, + "nodeType": "ExpressionStatement", + "src": "2249:50:16" + } + ] + }, + "documentation": { + "id": 1912, + "nodeType": "StructuredDocumentation", + "src": "1896:180:16", + "text": " @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 1942, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nameLocation": "2090:21:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1915, + "mutability": "mutable", + "name": "token", + "nameLocation": "2119:5:16", + "nodeType": "VariableDeclaration", + "scope": 1942, + "src": "2112:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1914, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1913, + "name": "IERC20", + "nameLocations": [ + "2112:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "2112:6:16" + }, + "referencedDeclaration": 1798, + "src": "2112:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1917, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2134:7:16", + "nodeType": "VariableDeclaration", + "scope": 1942, + "src": "2126:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2126:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1919, + "mutability": "mutable", + "name": "value", + "nameLocation": "2151:5:16", + "nodeType": "VariableDeclaration", + "scope": 1942, + "src": "2143:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2143:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2111:46:16" + }, + "returnParameters": { + "id": 1921, + "nodeType": "ParameterList", + "parameters": [], + "src": "2167:0:16" + }, + "scope": 2124, + "src": "2081:225:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1984, + "nodeType": "Block", + "src": "2607:370:16", + "statements": [ + { + "id": 1983, + "nodeType": "UncheckedBlock", + "src": "2617:354:16", + "statements": [ + { + "assignments": [ + 1954 + ], + "declarations": [ + { + "constant": false, + "id": 1954, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "2649:16:16", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "2641:24:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2641:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1963, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1959, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2692:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$2124", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$2124", + "typeString": "library SafeERC20" + } + ], + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2684:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:16", + "typeDescriptions": {} + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2684:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1961, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "2699:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1955, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1946, + "src": "2668:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2674:9:16", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1775, + "src": "2668:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2668:39:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2641:66:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1964, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1954, + "src": "2725:16:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1965, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "2744:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2725:36:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1974, + "nodeType": "IfStatement", + "src": "2721:160:16", + "trueBody": { + "id": 1973, + "nodeType": "Block", + "src": "2763:118:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1968, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "2821:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1969, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1954, + "src": "2830:16:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1970, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "2848:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1967, + "name": "SafeERC20FailedDecreaseAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1860, + "src": "2788:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2788:78:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1972, + "nodeType": "RevertStatement", + "src": "2781:85:16" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1976, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1946, + "src": "2907:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "id": 1977, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "2914:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1978, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1954, + "src": "2923:16:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1979, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "2942:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2923:36:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1975, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "2894:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2894:66:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1982, + "nodeType": "ExpressionStatement", + "src": "2894:66:16" + } + ] + } + ] + }, + "documentation": { + "id": 1943, + "nodeType": "StructuredDocumentation", + "src": "2312:192:16", + "text": " @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful." + }, + "id": 1985, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nameLocation": "2518:21:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1946, + "mutability": "mutable", + "name": "token", + "nameLocation": "2547:5:16", + "nodeType": "VariableDeclaration", + "scope": 1985, + "src": "2540:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1945, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1944, + "name": "IERC20", + "nameLocations": [ + "2540:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "2540:6:16" + }, + "referencedDeclaration": 1798, + "src": "2540:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1948, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2562:7:16", + "nodeType": "VariableDeclaration", + "scope": 1985, + "src": "2554:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2554:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1950, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "2579:17:16", + "nodeType": "VariableDeclaration", + "scope": 1985, + "src": "2571:25:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2571:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2539:58:16" + }, + "returnParameters": { + "id": 1952, + "nodeType": "ParameterList", + "parameters": [], + "src": "2607:0:16" + }, + "scope": 2124, + "src": "2509:468:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2031, + "nodeType": "Block", + "src": "3373:303:16", + "statements": [ + { + "assignments": [ + 1997 + ], + "declarations": [ + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "approvalCall", + "nameLocation": "3396:12:16", + "nodeType": "VariableDeclaration", + "scope": 2031, + "src": "3383:25:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1996, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3383:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2006, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2000, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "3426:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3432:7:16", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1785, + "src": "3426:13:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 2002, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1991, + "src": "3442:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2003, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1993, + "src": "3451:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2004, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3441:16:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 1998, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3411:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3415:10:16", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "3411:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3411:47:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3383:75:16" + }, + { + "condition": { + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3473:45:16", + "subExpression": { + "arguments": [ + { + "id": 2008, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "3498:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "id": 2009, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "3505:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2007, + "name": "_callOptionalReturnBool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "3474:23:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (contract IERC20,bytes memory) returns (bool)" + } + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3474:44:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2030, + "nodeType": "IfStatement", + "src": "3469:201:16", + "trueBody": { + "id": 2029, + "nodeType": "Block", + "src": "3520:150:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2013, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "3554:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 2016, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "3576:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3582:7:16", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1785, + "src": "3576:13:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 2018, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1991, + "src": "3592:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3601:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 2020, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3591:12:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + ], + "expression": { + "id": 2014, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3561:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3565:10:16", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "3561:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3561:43:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2012, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "3534:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 2022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3534:71:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2023, + "nodeType": "ExpressionStatement", + "src": "3534:71:16" + }, + { + "expression": { + "arguments": [ + { + "id": 2025, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "3639:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + { + "id": 2026, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "3646:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2024, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "3619:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3619:40:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2028, + "nodeType": "ExpressionStatement", + "src": "3619:40:16" + } + ] + } + } + ] + }, + "documentation": { + "id": 1986, + "nodeType": "StructuredDocumentation", + "src": "2983:308:16", + "text": " @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT." + }, + "id": 2032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "forceApprove", + "nameLocation": "3305:12:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1989, + "mutability": "mutable", + "name": "token", + "nameLocation": "3325:5:16", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "3318:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1988, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1987, + "name": "IERC20", + "nameLocations": [ + "3318:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "3318:6:16" + }, + "referencedDeclaration": 1798, + "src": "3318:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1991, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3340:7:16", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "3332:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3332:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1993, + "mutability": "mutable", + "name": "value", + "nameLocation": "3357:5:16", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "3349:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3349:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3317:46:16" + }, + "returnParameters": { + "id": 1995, + "nodeType": "ParameterList", + "parameters": [], + "src": "3373:0:16" + }, + "scope": 2124, + "src": "3296:380:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2073, + "nodeType": "Block", + "src": "4129:559:16", + "statements": [ + { + "assignments": [ + 2042 + ], + "declarations": [ + { + "constant": false, + "id": 2042, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4491:10:16", + "nodeType": "VariableDeclaration", + "scope": 2073, + "src": "4478:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2041, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4478:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2050, + "initialValue": { + "arguments": [ + { + "id": 2048, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2038, + "src": "4532:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2045, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2036, + "src": "4512:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4504:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4504:7:16", + "typeDescriptions": {} + } + }, + "id": 2046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4504:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4519:12:16", + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 2333, + "src": "4504:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4504:33:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4478:59:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2051, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2042, + "src": "4551:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4562:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4551:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4572:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4551:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 2062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4577:31:16", + "subExpression": { + "arguments": [ + { + "id": 2057, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2042, + "src": "4589:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4602:4:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 2058, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4602:4:16", + "typeDescriptions": {} + } + } + ], + "id": 2060, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4601:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "id": 2055, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4578:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4582:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4578:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4578:30:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4551:57:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2072, + "nodeType": "IfStatement", + "src": "4547:135:16", + "trueBody": { + "id": 2071, + "nodeType": "Block", + "src": "4610:72:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2067, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2036, + "src": "4664:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 2066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4656:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4656:7:16", + "typeDescriptions": {} + } + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4656:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2064, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1851, + "src": "4631:24:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4631:40:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2070, + "nodeType": "RevertStatement", + "src": "4624:47:16" + } + ] + } + } + ] + }, + "documentation": { + "id": 2033, + "nodeType": "StructuredDocumentation", + "src": "3682:372:16", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 2074, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nameLocation": "4068:19:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2036, + "mutability": "mutable", + "name": "token", + "nameLocation": "4095:5:16", + "nodeType": "VariableDeclaration", + "scope": 2074, + "src": "4088:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2035, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2034, + "name": "IERC20", + "nameLocations": [ + "4088:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "4088:6:16" + }, + "referencedDeclaration": 1798, + "src": "4088:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2038, + "mutability": "mutable", + "name": "data", + "nameLocation": "4115:4:16", + "nodeType": "VariableDeclaration", + "scope": 2074, + "src": "4102:17:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2037, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4102:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4087:33:16" + }, + "returnParameters": { + "id": 2040, + "nodeType": "ParameterList", + "parameters": [], + "src": "4129:0:16" + }, + "scope": 2124, + "src": "4059:629:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2122, + "nodeType": "Block", + "src": "5278:489:16", + "statements": [ + { + "assignments": [ + 2086, + 2088 + ], + "declarations": [ + { + "constant": false, + "id": 2086, + "mutability": "mutable", + "name": "success", + "nameLocation": "5579:7:16", + "nodeType": "VariableDeclaration", + "scope": 2122, + "src": "5574:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2085, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5574:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2088, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5601:10:16", + "nodeType": "VariableDeclaration", + "scope": 2122, + "src": "5588:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2087, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5588:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2096, + "initialValue": { + "arguments": [ + { + "id": 2094, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2080, + "src": "5635:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2091, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2078, + "src": "5623:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5615:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2089, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5615:7:16", + "typeDescriptions": {} + } + }, + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5615:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5630:4:16", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5615:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5615:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5573:67:16" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2097, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "5657:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2098, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "5669:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5680:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5669:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5690:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5669:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 2104, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2088, + "src": "5706:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5719:4:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 2105, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5719:4:16", + "typeDescriptions": {} + } + } + ], + "id": 2107, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5718:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "id": 2102, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5695:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5699:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5695:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5695:30:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5669:56:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2110, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5668:58:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5657:69:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 2114, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2078, + "src": "5738:5:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5730:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5730:7:16", + "typeDescriptions": {} + } + }, + "id": 2115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5730:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5745:4:16", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5730:19:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5750:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5730:26:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5730:30:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5657:103:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2084, + "id": 2121, + "nodeType": "Return", + "src": "5650:110:16" + } + ] + }, + "documentation": { + "id": 2075, + "nodeType": "StructuredDocumentation", + "src": "4694:490:16", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead." + }, + "id": 2123, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturnBool", + "nameLocation": "5198:23:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "mutability": "mutable", + "name": "token", + "nameLocation": "5229:5:16", + "nodeType": "VariableDeclaration", + "scope": 2123, + "src": "5222:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2077, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2076, + "name": "IERC20", + "nameLocations": [ + "5222:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "5222:6:16" + }, + "referencedDeclaration": 1798, + "src": "5222:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2080, + "mutability": "mutable", + "name": "data", + "nameLocation": "5249:4:16", + "nodeType": "VariableDeclaration", + "scope": 2123, + "src": "5236:17:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2079, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5236:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5221:33:16" + }, + "returnParameters": { + "id": 2084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2083, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2123, + "src": "5272:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2082, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5272:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5271:6:16" + }, + "scope": 2124, + "src": "5189:578:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2125, + "src": "751:5018:16", + "usedErrors": [ + 1851, + 1860 + ], + "usedEvents": [] + } + ], + "src": "115:5655:16" + }, + "id": 16 + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC165": [ + 2982 + ], + "IERC721": [ + 2241 + ] + }, + "id": 2242, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2126, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:17" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../../utils/introspection/IERC165.sol", + "id": 2128, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2242, + "sourceUnit": 2983, + "src": "134:62:17", + "symbolAliases": [ + { + "foreign": { + "id": 2127, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2982, + "src": "142:7:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2130, + "name": "IERC165", + "nameLocations": [ + "287:7:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2982, + "src": "287:7:17" + }, + "id": 2131, + "nodeType": "InheritanceSpecifier", + "src": "287:7:17" + } + ], + "canonicalName": "IERC721", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2129, + "nodeType": "StructuredDocumentation", + "src": "198:67:17", + "text": " @dev Required interface of an ERC721 compliant contract." + }, + "fullyImplemented": false, + "id": 2241, + "linearizedBaseContracts": [ + 2241, + 2982 + ], + "name": "IERC721", + "nameLocation": "276:7:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 2132, + "nodeType": "StructuredDocumentation", + "src": "301:88:17", + "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 2140, + "name": "Transfer", + "nameLocation": "400:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 2139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2134, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "425:4:17", + "nodeType": "VariableDeclaration", + "scope": 2140, + "src": "409:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "409:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2136, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "447:2:17", + "nodeType": "VariableDeclaration", + "scope": 2140, + "src": "431:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "431:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2138, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "467:7:17", + "nodeType": "VariableDeclaration", + "scope": 2140, + "src": "451:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "451:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "408:67:17" + }, + "src": "394:82:17" + }, + { + "anonymous": false, + "documentation": { + "id": 2141, + "nodeType": "StructuredDocumentation", + "src": "482:94:17", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 2149, + "name": "Approval", + "nameLocation": "587:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 2148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2143, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "612:5:17", + "nodeType": "VariableDeclaration", + "scope": 2149, + "src": "596:21:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "596:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2145, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nameLocation": "635:8:17", + "nodeType": "VariableDeclaration", + "scope": 2149, + "src": "619:24:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2147, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "661:7:17", + "nodeType": "VariableDeclaration", + "scope": 2149, + "src": "645:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "595:74:17" + }, + "src": "581:89:17" + }, + { + "anonymous": false, + "documentation": { + "id": 2150, + "nodeType": "StructuredDocumentation", + "src": "676:117:17", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 2158, + "name": "ApprovalForAll", + "nameLocation": "804:14:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 2157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2152, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "835:5:17", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "819:21:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "819:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2154, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "858:8:17", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "842:24:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "842:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2156, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "873:8:17", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "868:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2155, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "868:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "818:64:17" + }, + "src": "798:85:17" + }, + { + "documentation": { + "id": 2159, + "nodeType": "StructuredDocumentation", + "src": "889:76:17", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 2166, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "979:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "mutability": "mutable", + "name": "owner", + "nameLocation": "997:5:17", + "nodeType": "VariableDeclaration", + "scope": 2166, + "src": "989:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "989:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "988:15:17" + }, + "returnParameters": { + "id": 2165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2164, + "mutability": "mutable", + "name": "balance", + "nameLocation": "1035:7:17", + "nodeType": "VariableDeclaration", + "scope": 2166, + "src": "1027:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1027:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1026:17:17" + }, + "scope": 2241, + "src": "970:74:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2167, + "nodeType": "StructuredDocumentation", + "src": "1050:131:17", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 2174, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1195:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2169, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1211:7:17", + "nodeType": "VariableDeclaration", + "scope": 2174, + "src": "1203:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2168, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1203:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1202:17:17" + }, + "returnParameters": { + "id": 2173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2172, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1251:5:17", + "nodeType": "VariableDeclaration", + "scope": 2174, + "src": "1243:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1243:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1242:15:17" + }, + "scope": 2241, + "src": "1186:72:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2175, + "nodeType": "StructuredDocumentation", + "src": "1264:565:17", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "b88d4fde", + "id": 2186, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1843:16:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2177, + "mutability": "mutable", + "name": "from", + "nameLocation": "1868:4:17", + "nodeType": "VariableDeclaration", + "scope": 2186, + "src": "1860:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1860:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2179, + "mutability": "mutable", + "name": "to", + "nameLocation": "1882:2:17", + "nodeType": "VariableDeclaration", + "scope": 2186, + "src": "1874:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1874:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2181, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1894:7:17", + "nodeType": "VariableDeclaration", + "scope": 2186, + "src": "1886:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1886:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2183, + "mutability": "mutable", + "name": "data", + "nameLocation": "1918:4:17", + "nodeType": "VariableDeclaration", + "scope": 2186, + "src": "1903:19:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2182, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1903:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1859:64:17" + }, + "returnParameters": { + "id": 2185, + "nodeType": "ParameterList", + "parameters": [], + "src": "1932:0:17" + }, + "scope": 2241, + "src": "1834:99:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2187, + "nodeType": "StructuredDocumentation", + "src": "1939:705:17", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "42842e0e", + "id": 2196, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "2658:16:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2189, + "mutability": "mutable", + "name": "from", + "nameLocation": "2683:4:17", + "nodeType": "VariableDeclaration", + "scope": 2196, + "src": "2675:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2188, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2675:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2191, + "mutability": "mutable", + "name": "to", + "nameLocation": "2697:2:17", + "nodeType": "VariableDeclaration", + "scope": 2196, + "src": "2689:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2689:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2193, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2709:7:17", + "nodeType": "VariableDeclaration", + "scope": 2196, + "src": "2701:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2701:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2674:43:17" + }, + "returnParameters": { + "id": 2195, + "nodeType": "ParameterList", + "parameters": [], + "src": "2726:0:17" + }, + "scope": 2241, + "src": "2649:78:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2197, + "nodeType": "StructuredDocumentation", + "src": "2733:732:17", + "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 2206, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "3479:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2199, + "mutability": "mutable", + "name": "from", + "nameLocation": "3500:4:17", + "nodeType": "VariableDeclaration", + "scope": 2206, + "src": "3492:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3492:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2201, + "mutability": "mutable", + "name": "to", + "nameLocation": "3514:2:17", + "nodeType": "VariableDeclaration", + "scope": 2206, + "src": "3506:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3506:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2203, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3526:7:17", + "nodeType": "VariableDeclaration", + "scope": 2206, + "src": "3518:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3518:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3491:43:17" + }, + "returnParameters": { + "id": 2205, + "nodeType": "ParameterList", + "parameters": [], + "src": "3543:0:17" + }, + "scope": 2241, + "src": "3470:74:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2207, + "nodeType": "StructuredDocumentation", + "src": "3550:452:17", + "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 2214, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4016:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2209, + "mutability": "mutable", + "name": "to", + "nameLocation": "4032:2:17", + "nodeType": "VariableDeclaration", + "scope": 2214, + "src": "4024:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4024:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2211, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4044:7:17", + "nodeType": "VariableDeclaration", + "scope": 2214, + "src": "4036:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4036:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4023:29:17" + }, + "returnParameters": { + "id": 2213, + "nodeType": "ParameterList", + "parameters": [], + "src": "4061:0:17" + }, + "scope": 2241, + "src": "4007:55:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2215, + "nodeType": "StructuredDocumentation", + "src": "4068:315:17", + "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event." + }, + "functionSelector": "a22cb465", + "id": 2222, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "4397:17:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2217, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4423:8:17", + "nodeType": "VariableDeclaration", + "scope": 2222, + "src": "4415:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2219, + "mutability": "mutable", + "name": "approved", + "nameLocation": "4438:8:17", + "nodeType": "VariableDeclaration", + "scope": 2222, + "src": "4433:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2218, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4433:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4414:33:17" + }, + "returnParameters": { + "id": 2221, + "nodeType": "ParameterList", + "parameters": [], + "src": "4456:0:17" + }, + "scope": 2241, + "src": "4388:69:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2223, + "nodeType": "StructuredDocumentation", + "src": "4463:139:17", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 2230, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "4616:11:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2225, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4636:7:17", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "4628:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4628:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4627:17:17" + }, + "returnParameters": { + "id": 2229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2228, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4676:8:17", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "4668:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4668:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4667:18:17" + }, + "scope": 2241, + "src": "4607:79:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 2231, + "nodeType": "StructuredDocumentation", + "src": "4692:138:17", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 2240, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "4844:16:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2233, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4869:5:17", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4861:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4861:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2235, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4884:8:17", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4876:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4876:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4860:33:17" + }, + "returnParameters": { + "id": 2239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2238, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4917:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2237, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4917:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4916:6:17" + }, + "scope": 2241, + "src": "4835:88:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2242, + "src": "266:4659:17", + "usedErrors": [], + "usedEvents": [ + 2140, + 2149, + 2158 + ] + } + ], + "src": "108:4818:17" + }, + "id": 17 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 2259 + ] + }, + "id": 2260, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2243, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "116:24:18" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Receiver", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2244, + "nodeType": "StructuredDocumentation", + "src": "142:152:18", + "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts." + }, + "fullyImplemented": false, + "id": 2259, + "linearizedBaseContracts": [ + 2259 + ], + "name": "IERC721Receiver", + "nameLocation": "305:15:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2245, + "nodeType": "StructuredDocumentation", + "src": "327:500:18", + "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 2258, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "841:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2247, + "mutability": "mutable", + "name": "operator", + "nameLocation": "875:8:18", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "867:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2249, + "mutability": "mutable", + "name": "from", + "nameLocation": "901:4:18", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "893:12:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "893:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2251, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "923:7:18", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "915:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "915:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2253, + "mutability": "mutable", + "name": "data", + "nameLocation": "955:4:18", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "940:19:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2252, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "940:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "857:108:18" + }, + "returnParameters": { + "id": 2257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "984:6:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2255, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "984:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "983:8:18" + }, + "scope": 2259, + "src": "832:160:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2260, + "src": "295:699:18", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "116:879:18" + }, + "id": 18 + }, + "@openzeppelin/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 2512 + ] + }, + "id": 2513, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2261, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:19" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2262, + "nodeType": "StructuredDocumentation", + "src": "127:67:19", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 2512, + "linearizedBaseContracts": [ + 2512 + ], + "name": "Address", + "nameLocation": "203:7:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2263, + "nodeType": "StructuredDocumentation", + "src": "217:94:19", + "text": " @dev The ETH balance of the account is not enough to perform the operation." + }, + "errorSelector": "cd786059", + "id": 2267, + "name": "AddressInsufficientBalance", + "nameLocation": "322:26:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2265, + "mutability": "mutable", + "name": "account", + "nameLocation": "357:7:19", + "nodeType": "VariableDeclaration", + "scope": 2267, + "src": "349:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "349:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "348:17:19" + }, + "src": "316:50:19" + }, + { + "documentation": { + "id": 2268, + "nodeType": "StructuredDocumentation", + "src": "372:75:19", + "text": " @dev There's no code at `target` (it is not a contract)." + }, + "errorSelector": "9996b315", + "id": 2272, + "name": "AddressEmptyCode", + "nameLocation": "458:16:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2270, + "mutability": "mutable", + "name": "target", + "nameLocation": "483:6:19", + "nodeType": "VariableDeclaration", + "scope": 2272, + "src": "475:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "474:16:19" + }, + "src": "452:39:19" + }, + { + "documentation": { + "id": 2273, + "nodeType": "StructuredDocumentation", + "src": "497:89:19", + "text": " @dev A call to an address target failed. The target may have reverted." + }, + "errorSelector": "1425ea42", + "id": 2275, + "name": "FailedInnerCall", + "nameLocation": "597:15:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2274, + "nodeType": "ParameterList", + "parameters": [], + "src": "612:2:19" + }, + "src": "591:24:19" + }, + { + "body": { + "id": 2315, + "nodeType": "Block", + "src": "1602:260:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2285, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1624:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + ], + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1616:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1616:7:19", + "typeDescriptions": {} + } + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1616:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1630:7:19", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1616:21:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2288, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2280, + "src": "1640:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1616:30:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2298, + "nodeType": "IfStatement", + "src": "1612:109:19", + "trueBody": { + "id": 2297, + "nodeType": "Block", + "src": "1648:73:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2293, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1704:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + ], + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1696:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1696:7:19", + "typeDescriptions": {} + } + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1696:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2290, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2267, + "src": "1669:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1669:41:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2296, + "nodeType": "RevertStatement", + "src": "1662:48:19" + } + ] + } + }, + { + "assignments": [ + 2300, + null + ], + "declarations": [ + { + "constant": false, + "id": 2300, + "mutability": "mutable", + "name": "success", + "nameLocation": "1737:7:19", + "nodeType": "VariableDeclaration", + "scope": 2315, + "src": "1732:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2299, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1732:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 2307, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1780:2:19", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 2301, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2278, + "src": "1750:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1760:4:19", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1750:14:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 2303, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2280, + "src": "1772:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1750:29:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1750:33:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1731:52:19" + }, + { + "condition": { + "id": 2309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1797:8:19", + "subExpression": { + "id": 2308, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2300, + "src": "1798:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2314, + "nodeType": "IfStatement", + "src": "1793:63:19", + "trueBody": { + "id": 2313, + "nodeType": "Block", + "src": "1807:49:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2310, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "1828:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1828:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2312, + "nodeType": "RevertStatement", + "src": "1821:24:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 2276, + "nodeType": "StructuredDocumentation", + "src": "621:905:19", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 2316, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "1540:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2278, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1566:9:19", + "nodeType": "VariableDeclaration", + "scope": 2316, + "src": "1550:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1550:15:19", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2280, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1585:6:19", + "nodeType": "VariableDeclaration", + "scope": 2316, + "src": "1577:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1549:43:19" + }, + "returnParameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [], + "src": "1602:0:19" + }, + "scope": 2512, + "src": "1531:331:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2332, + "nodeType": "Block", + "src": "2794:62:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2327, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2319, + "src": "2833:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2328, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2321, + "src": "2841:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2847:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2326, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2379, + "src": "2811:21:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256) returns (bytes memory)" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2811:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2325, + "id": 2331, + "nodeType": "Return", + "src": "2804:45:19" + } + ] + }, + "documentation": { + "id": 2317, + "nodeType": "StructuredDocumentation", + "src": "1868:832:19", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert." + }, + "id": 2333, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "2714:12:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2319, + "mutability": "mutable", + "name": "target", + "nameLocation": "2735:6:19", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "2727:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2727:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2321, + "mutability": "mutable", + "name": "data", + "nameLocation": "2756:4:19", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "2743:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2320, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2743:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2726:35:19" + }, + "returnParameters": { + "id": 2325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2324, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "2780:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2323, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2780:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2779:14:19" + }, + "scope": 2512, + "src": "2705:151:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2378, + "nodeType": "Block", + "src": "3293:279:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2347, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3315:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + ], + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3307:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3307:7:19", + "typeDescriptions": {} + } + }, + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3307:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3321:7:19", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3307:21:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2350, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2340, + "src": "3331:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3307:29:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2360, + "nodeType": "IfStatement", + "src": "3303:108:19", + "trueBody": { + "id": 2359, + "nodeType": "Block", + "src": "3338:73:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2355, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3394:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2512", + "typeString": "library Address" + } + ], + "id": 2354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3386:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3386:7:19", + "typeDescriptions": {} + } + }, + "id": 2356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3386:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2352, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2267, + "src": "3359:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3359:41:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2358, + "nodeType": "RevertStatement", + "src": "3352:48:19" + } + ] + } + }, + { + "assignments": [ + 2362, + 2364 + ], + "declarations": [ + { + "constant": false, + "id": 2362, + "mutability": "mutable", + "name": "success", + "nameLocation": "3426:7:19", + "nodeType": "VariableDeclaration", + "scope": 2378, + "src": "3421:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2361, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3421:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2364, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3448:10:19", + "nodeType": "VariableDeclaration", + "scope": 2378, + "src": "3435:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2363, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3435:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2371, + "initialValue": { + "arguments": [ + { + "id": 2369, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2338, + "src": "3488:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2365, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2336, + "src": "3462:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3469:4:19", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "3462:11:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 2367, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2340, + "src": "3481:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "3462:25:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3462:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3420:73:19" + }, + { + "expression": { + "arguments": [ + { + "id": 2373, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2336, + "src": "3537:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2374, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "3545:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 2375, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2364, + "src": "3554:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2372, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2471, + "src": "3510:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 2376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3510:55:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2344, + "id": 2377, + "nodeType": "Return", + "src": "3503:62:19" + } + ] + }, + "documentation": { + "id": 2334, + "nodeType": "StructuredDocumentation", + "src": "2862:313:19", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`." + }, + "id": 2379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "3189:21:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2336, + "mutability": "mutable", + "name": "target", + "nameLocation": "3219:6:19", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "3211:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3211:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2338, + "mutability": "mutable", + "name": "data", + "nameLocation": "3240:4:19", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "3227:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2337, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3227:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2340, + "mutability": "mutable", + "name": "value", + "nameLocation": "3254:5:19", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "3246:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2339, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3246:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3210:50:19" + }, + "returnParameters": { + "id": 2344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2343, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "3279:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2342, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3279:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3278:14:19" + }, + "scope": 2512, + "src": "3180:392:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2404, + "nodeType": "Block", + "src": "3811:154:19", + "statements": [ + { + "assignments": [ + 2390, + 2392 + ], + "declarations": [ + { + "constant": false, + "id": 2390, + "mutability": "mutable", + "name": "success", + "nameLocation": "3827:7:19", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "3822:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2389, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3822:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2392, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3849:10:19", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "3836:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2391, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3836:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2397, + "initialValue": { + "arguments": [ + { + "id": 2395, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "3881:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2393, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2382, + "src": "3863:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3870:10:19", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "3863:17:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 2396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3863:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3821:65:19" + }, + { + "expression": { + "arguments": [ + { + "id": 2399, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2382, + "src": "3930:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2400, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "3938:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 2401, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "3947:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2398, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2471, + "src": "3903:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3903:55:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2388, + "id": 2403, + "nodeType": "Return", + "src": "3896:62:19" + } + ] + }, + "documentation": { + "id": 2380, + "nodeType": "StructuredDocumentation", + "src": "3578:128:19", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call." + }, + "id": 2405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "3720:18:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2382, + "mutability": "mutable", + "name": "target", + "nameLocation": "3747:6:19", + "nodeType": "VariableDeclaration", + "scope": 2405, + "src": "3739:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2381, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3739:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2384, + "mutability": "mutable", + "name": "data", + "nameLocation": "3768:4:19", + "nodeType": "VariableDeclaration", + "scope": 2405, + "src": "3755:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2383, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3755:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3738:35:19" + }, + "returnParameters": { + "id": 2388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2387, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2405, + "src": "3797:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2386, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3797:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3796:14:19" + }, + "scope": 2512, + "src": "3711:254:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2430, + "nodeType": "Block", + "src": "4203:156:19", + "statements": [ + { + "assignments": [ + 2416, + 2418 + ], + "declarations": [ + { + "constant": false, + "id": 2416, + "mutability": "mutable", + "name": "success", + "nameLocation": "4219:7:19", + "nodeType": "VariableDeclaration", + "scope": 2430, + "src": "4214:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2415, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4214:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2418, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4241:10:19", + "nodeType": "VariableDeclaration", + "scope": 2430, + "src": "4228:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2417, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4228:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2423, + "initialValue": { + "arguments": [ + { + "id": 2421, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2410, + "src": "4275:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2419, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2408, + "src": "4255:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4262:12:19", + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "4255:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4255:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4213:67:19" + }, + { + "expression": { + "arguments": [ + { + "id": 2425, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2408, + "src": "4324:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2426, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2416, + "src": "4332:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 2427, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2418, + "src": "4341:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2424, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2471, + "src": "4297:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4297:55:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2414, + "id": 2429, + "nodeType": "Return", + "src": "4290:62:19" + } + ] + }, + "documentation": { + "id": 2406, + "nodeType": "StructuredDocumentation", + "src": "3971:130:19", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call." + }, + "id": 2431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "4115:20:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2408, + "mutability": "mutable", + "name": "target", + "nameLocation": "4144:6:19", + "nodeType": "VariableDeclaration", + "scope": 2431, + "src": "4136:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4136:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2410, + "mutability": "mutable", + "name": "data", + "nameLocation": "4165:4:19", + "nodeType": "VariableDeclaration", + "scope": 2431, + "src": "4152:17:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2409, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4152:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4135:35:19" + }, + "returnParameters": { + "id": 2414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2413, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2431, + "src": "4189:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2412, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4189:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4188:14:19" + }, + "scope": 2512, + "src": "4106:253:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2470, + "nodeType": "Block", + "src": "4783:424:19", + "statements": [ + { + "condition": { + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4797:8:19", + "subExpression": { + "id": 2443, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "4798:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2468, + "nodeType": "Block", + "src": "4857:344:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2450, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "5045:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5056:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5045:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5066:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5045:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2454, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2434, + "src": "5071:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5078:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5071:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5083:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5071:18:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5093:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5071:23:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5045:49:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2465, + "nodeType": "IfStatement", + "src": "5041:119:19", + "trueBody": { + "id": 2464, + "nodeType": "Block", + "src": "5096:64:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2461, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2434, + "src": "5138:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2460, + "name": "AddressEmptyCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2272, + "src": "5121:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5121:24:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2463, + "nodeType": "RevertStatement", + "src": "5114:31:19" + } + ] + } + }, + { + "expression": { + "id": 2466, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "5180:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2442, + "id": 2467, + "nodeType": "Return", + "src": "5173:17:19" + } + ] + }, + "id": 2469, + "nodeType": "IfStatement", + "src": "4793:408:19", + "trueBody": { + "id": 2449, + "nodeType": "Block", + "src": "4807:44:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2446, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "4829:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2445, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2511, + "src": "4821:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4821:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2448, + "nodeType": "ExpressionStatement", + "src": "4821:19:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 2432, + "nodeType": "StructuredDocumentation", + "src": "4365:255:19", + "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call." + }, + "id": 2471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResultFromTarget", + "nameLocation": "4634:26:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2434, + "mutability": "mutable", + "name": "target", + "nameLocation": "4678:6:19", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "4670:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4670:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2436, + "mutability": "mutable", + "name": "success", + "nameLocation": "4699:7:19", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "4694:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2435, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4694:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2438, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4729:10:19", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "4716:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2437, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4716:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4660:85:19" + }, + "returnParameters": { + "id": 2442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2441, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "4769:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2440, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4769:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4768:14:19" + }, + "scope": 2512, + "src": "4625:582:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2492, + "nodeType": "Block", + "src": "5509:122:19", + "statements": [ + { + "condition": { + "id": 2482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5523:8:19", + "subExpression": { + "id": 2481, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "5524:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2490, + "nodeType": "Block", + "src": "5583:42:19", + "statements": [ + { + "expression": { + "id": 2488, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "5604:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2480, + "id": 2489, + "nodeType": "Return", + "src": "5597:17:19" + } + ] + }, + "id": 2491, + "nodeType": "IfStatement", + "src": "5519:106:19", + "trueBody": { + "id": 2487, + "nodeType": "Block", + "src": "5533:44:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2484, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "5555:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2483, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2511, + "src": "5547:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5547:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2486, + "nodeType": "ExpressionStatement", + "src": "5547:19:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 2472, + "nodeType": "StructuredDocumentation", + "src": "5213:189:19", + "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error." + }, + "id": 2493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResult", + "nameLocation": "5416:16:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2474, + "mutability": "mutable", + "name": "success", + "nameLocation": "5438:7:19", + "nodeType": "VariableDeclaration", + "scope": 2493, + "src": "5433:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2473, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5433:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2476, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5460:10:19", + "nodeType": "VariableDeclaration", + "scope": 2493, + "src": "5447:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2475, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5447:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5432:39:19" + }, + "returnParameters": { + "id": 2480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2479, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2493, + "src": "5495:12:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2478, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5495:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5494:14:19" + }, + "scope": 2512, + "src": "5407:224:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2510, + "nodeType": "Block", + "src": "5798:461:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2499, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "5874:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5885:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5874:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5894:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5874:21:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2508, + "nodeType": "Block", + "src": "6204:49:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2505, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "6225:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6225:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2507, + "nodeType": "RevertStatement", + "src": "6218:24:19" + } + ] + }, + "id": 2509, + "nodeType": "IfStatement", + "src": "5870:383:19", + "trueBody": { + "id": 2504, + "nodeType": "Block", + "src": "5897:301:19", + "statements": [ + { + "AST": { + "nativeSrc": "6055:133:19", + "nodeType": "YulBlock", + "src": "6055:133:19", + "statements": [ + { + "nativeSrc": "6073:40:19", + "nodeType": "YulVariableDeclaration", + "src": "6073:40:19", + "value": { + "arguments": [ + { + "name": "returndata", + "nativeSrc": "6102:10:19", + "nodeType": "YulIdentifier", + "src": "6102:10:19" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6096:5:19", + "nodeType": "YulIdentifier", + "src": "6096:5:19" + }, + "nativeSrc": "6096:17:19", + "nodeType": "YulFunctionCall", + "src": "6096:17:19" + }, + "variables": [ + { + "name": "returndata_size", + "nativeSrc": "6077:15:19", + "nodeType": "YulTypedName", + "src": "6077:15:19", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6141:2:19", + "nodeType": "YulLiteral", + "src": "6141:2:19", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nativeSrc": "6145:10:19", + "nodeType": "YulIdentifier", + "src": "6145:10:19" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6137:3:19", + "nodeType": "YulIdentifier", + "src": "6137:3:19" + }, + "nativeSrc": "6137:19:19", + "nodeType": "YulFunctionCall", + "src": "6137:19:19" + }, + { + "name": "returndata_size", + "nativeSrc": "6158:15:19", + "nodeType": "YulIdentifier", + "src": "6158:15:19" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6130:6:19", + "nodeType": "YulIdentifier", + "src": "6130:6:19" + }, + "nativeSrc": "6130:44:19", + "nodeType": "YulFunctionCall", + "src": "6130:44:19" + }, + "nativeSrc": "6130:44:19", + "nodeType": "YulExpressionStatement", + "src": "6130:44:19" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2496, + "isOffset": false, + "isSlot": false, + "src": "6102:10:19", + "valueSize": 1 + }, + { + "declaration": 2496, + "isOffset": false, + "isSlot": false, + "src": "6145:10:19", + "valueSize": 1 + } + ], + "id": 2503, + "nodeType": "InlineAssembly", + "src": "6046:142:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 2494, + "nodeType": "StructuredDocumentation", + "src": "5637:101:19", + "text": " @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}." + }, + "id": 2511, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revert", + "nameLocation": "5752:7:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2496, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5773:10:19", + "nodeType": "VariableDeclaration", + "scope": 2511, + "src": "5760:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5760:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5759:25:19" + }, + "returnParameters": { + "id": 2498, + "nodeType": "ParameterList", + "parameters": [], + "src": "5798:0:19" + }, + "scope": 2512, + "src": "5743:516:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2513, + "src": "195:6066:19", + "usedErrors": [ + 2267, + 2272, + 2275 + ], + "usedEvents": [] + } + ], + "src": "101:6161:19" + }, + "id": 19 + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "exportedSymbols": { + "StorageSlot": [ + 2622 + ] + }, + "id": 2623, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2514, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "193:24:20" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StorageSlot", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2515, + "nodeType": "StructuredDocumentation", + "src": "219:1025:20", + "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```" + }, + "fullyImplemented": true, + "id": 2622, + "linearizedBaseContracts": [ + 2622 + ], + "name": "StorageSlot", + "nameLocation": "1253:11:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "StorageSlot.AddressSlot", + "id": 2518, + "members": [ + { + "constant": false, + "id": 2517, + "mutability": "mutable", + "name": "value", + "nameLocation": "1308:5:20", + "nodeType": "VariableDeclaration", + "scope": 2518, + "src": "1300:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1300:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSlot", + "nameLocation": "1278:11:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1271:49:20", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BooleanSlot", + "id": 2521, + "members": [ + { + "constant": false, + "id": 2520, + "mutability": "mutable", + "name": "value", + "nameLocation": "1360:5:20", + "nodeType": "VariableDeclaration", + "scope": 2521, + "src": "1355:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2519, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1355:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "BooleanSlot", + "nameLocation": "1333:11:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1326:46:20", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": 2524, + "members": [ + { + "constant": false, + "id": 2523, + "mutability": "mutable", + "name": "value", + "nameLocation": "1415:5:20", + "nodeType": "VariableDeclaration", + "scope": 2524, + "src": "1407:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1407:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Slot", + "nameLocation": "1385:11:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1378:49:20", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Uint256Slot", + "id": 2527, + "members": [ + { + "constant": false, + "id": 2526, + "mutability": "mutable", + "name": "value", + "nameLocation": "1470:5:20", + "nodeType": "VariableDeclaration", + "scope": 2527, + "src": "1462:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1462:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Uint256Slot", + "nameLocation": "1440:11:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1433:49:20", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.StringSlot", + "id": 2530, + "members": [ + { + "constant": false, + "id": 2529, + "mutability": "mutable", + "name": "value", + "nameLocation": "1523:5:20", + "nodeType": "VariableDeclaration", + "scope": 2530, + "src": "1516:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2528, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1516:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "name": "StringSlot", + "nameLocation": "1495:10:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1488:47:20", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BytesSlot", + "id": 2533, + "members": [ + { + "constant": false, + "id": 2532, + "mutability": "mutable", + "name": "value", + "nameLocation": "1574:5:20", + "nodeType": "VariableDeclaration", + "scope": 2533, + "src": "1568:11:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2531, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1568:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "BytesSlot", + "nameLocation": "1548:9:20", + "nodeType": "StructDefinition", + "scope": 2622, + "src": "1541:45:20", + "visibility": "public" + }, + { + "body": { + "id": 2543, + "nodeType": "Block", + "src": "1768:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "1830:38:20", + "nodeType": "YulBlock", + "src": "1830:38:20", + "statements": [ + { + "nativeSrc": "1844:14:20", + "nodeType": "YulAssignment", + "src": "1844:14:20", + "value": { + "name": "slot", + "nativeSrc": "1854:4:20", + "nodeType": "YulIdentifier", + "src": "1854:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "1844:6:20", + "nodeType": "YulIdentifier", + "src": "1844:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2540, + "isOffset": false, + "isSlot": true, + "src": "1844:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2536, + "isOffset": false, + "isSlot": false, + "src": "1854:4:20", + "valueSize": 1 + } + ], + "id": 2542, + "nodeType": "InlineAssembly", + "src": "1821:47:20" + } + ] + }, + "documentation": { + "id": 2534, + "nodeType": "StructuredDocumentation", + "src": "1592:87:20", + "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." + }, + "id": 2544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressSlot", + "nameLocation": "1693:14:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2536, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1716:4:20", + "nodeType": "VariableDeclaration", + "scope": 2544, + "src": "1708:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2535, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1708:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1707:14:20" + }, + "returnParameters": { + "id": 2541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2540, + "mutability": "mutable", + "name": "r", + "nameLocation": "1765:1:20", + "nodeType": "VariableDeclaration", + "scope": 2544, + "src": "1745:21:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": 2539, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2538, + "name": "AddressSlot", + "nameLocations": [ + "1745:11:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2518, + "src": "1745:11:20" + }, + "referencedDeclaration": 2518, + "src": "1745:11:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2518_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1744:23:20" + }, + "scope": 2622, + "src": "1684:190:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2554, + "nodeType": "Block", + "src": "2056:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "2118:38:20", + "nodeType": "YulBlock", + "src": "2118:38:20", + "statements": [ + { + "nativeSrc": "2132:14:20", + "nodeType": "YulAssignment", + "src": "2132:14:20", + "value": { + "name": "slot", + "nativeSrc": "2142:4:20", + "nodeType": "YulIdentifier", + "src": "2142:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2132:6:20", + "nodeType": "YulIdentifier", + "src": "2132:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2551, + "isOffset": false, + "isSlot": true, + "src": "2132:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2547, + "isOffset": false, + "isSlot": false, + "src": "2142:4:20", + "valueSize": 1 + } + ], + "id": 2553, + "nodeType": "InlineAssembly", + "src": "2109:47:20" + } + ] + }, + "documentation": { + "id": 2545, + "nodeType": "StructuredDocumentation", + "src": "1880:87:20", + "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`." + }, + "id": 2555, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBooleanSlot", + "nameLocation": "1981:14:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2547, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2004:4:20", + "nodeType": "VariableDeclaration", + "scope": 2555, + "src": "1996:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2546, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1996:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1995:14:20" + }, + "returnParameters": { + "id": 2552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2551, + "mutability": "mutable", + "name": "r", + "nameLocation": "2053:1:20", + "nodeType": "VariableDeclaration", + "scope": 2555, + "src": "2033:21:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$2521_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": 2550, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2549, + "name": "BooleanSlot", + "nameLocations": [ + "2033:11:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2521, + "src": "2033:11:20" + }, + "referencedDeclaration": 2521, + "src": "2033:11:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$2521_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2032:23:20" + }, + "scope": 2622, + "src": "1972:190:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2565, + "nodeType": "Block", + "src": "2344:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "2406:38:20", + "nodeType": "YulBlock", + "src": "2406:38:20", + "statements": [ + { + "nativeSrc": "2420:14:20", + "nodeType": "YulAssignment", + "src": "2420:14:20", + "value": { + "name": "slot", + "nativeSrc": "2430:4:20", + "nodeType": "YulIdentifier", + "src": "2430:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2420:6:20", + "nodeType": "YulIdentifier", + "src": "2420:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2562, + "isOffset": false, + "isSlot": true, + "src": "2420:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2558, + "isOffset": false, + "isSlot": false, + "src": "2430:4:20", + "valueSize": 1 + } + ], + "id": 2564, + "nodeType": "InlineAssembly", + "src": "2397:47:20" + } + ] + }, + "documentation": { + "id": 2556, + "nodeType": "StructuredDocumentation", + "src": "2168:87:20", + "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`." + }, + "id": 2566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytes32Slot", + "nameLocation": "2269:14:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2558, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2292:4:20", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "2284:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2557, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2284:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2283:14:20" + }, + "returnParameters": { + "id": 2563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "r", + "nameLocation": "2341:1:20", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "2321:21:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$2524_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": 2561, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2560, + "name": "Bytes32Slot", + "nameLocations": [ + "2321:11:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2524, + "src": "2321:11:20" + }, + "referencedDeclaration": 2524, + "src": "2321:11:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$2524_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2320:23:20" + }, + "scope": 2622, + "src": "2260:190:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2576, + "nodeType": "Block", + "src": "2632:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "2694:38:20", + "nodeType": "YulBlock", + "src": "2694:38:20", + "statements": [ + { + "nativeSrc": "2708:14:20", + "nodeType": "YulAssignment", + "src": "2708:14:20", + "value": { + "name": "slot", + "nativeSrc": "2718:4:20", + "nodeType": "YulIdentifier", + "src": "2718:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2708:6:20", + "nodeType": "YulIdentifier", + "src": "2708:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2573, + "isOffset": false, + "isSlot": true, + "src": "2708:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2569, + "isOffset": false, + "isSlot": false, + "src": "2718:4:20", + "valueSize": 1 + } + ], + "id": 2575, + "nodeType": "InlineAssembly", + "src": "2685:47:20" + } + ] + }, + "documentation": { + "id": 2567, + "nodeType": "StructuredDocumentation", + "src": "2456:87:20", + "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`." + }, + "id": 2577, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUint256Slot", + "nameLocation": "2557:14:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2569, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2580:4:20", + "nodeType": "VariableDeclaration", + "scope": 2577, + "src": "2572:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2572:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2571:14:20" + }, + "returnParameters": { + "id": 2574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2573, + "mutability": "mutable", + "name": "r", + "nameLocation": "2629:1:20", + "nodeType": "VariableDeclaration", + "scope": 2577, + "src": "2609:21:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$2527_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": 2572, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2571, + "name": "Uint256Slot", + "nameLocations": [ + "2609:11:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2527, + "src": "2609:11:20" + }, + "referencedDeclaration": 2527, + "src": "2609:11:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$2527_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2608:23:20" + }, + "scope": 2622, + "src": "2548:190:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2587, + "nodeType": "Block", + "src": "2917:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "2979:38:20", + "nodeType": "YulBlock", + "src": "2979:38:20", + "statements": [ + { + "nativeSrc": "2993:14:20", + "nodeType": "YulAssignment", + "src": "2993:14:20", + "value": { + "name": "slot", + "nativeSrc": "3003:4:20", + "nodeType": "YulIdentifier", + "src": "3003:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2993:6:20", + "nodeType": "YulIdentifier", + "src": "2993:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2584, + "isOffset": false, + "isSlot": true, + "src": "2993:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2580, + "isOffset": false, + "isSlot": false, + "src": "3003:4:20", + "valueSize": 1 + } + ], + "id": 2586, + "nodeType": "InlineAssembly", + "src": "2970:47:20" + } + ] + }, + "documentation": { + "id": 2578, + "nodeType": "StructuredDocumentation", + "src": "2744:86:20", + "text": " @dev Returns an `StringSlot` with member `value` located at `slot`." + }, + "id": 2588, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "2844:13:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2580, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2866:4:20", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "2858:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2579, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2858:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2857:14:20" + }, + "returnParameters": { + "id": 2585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2584, + "mutability": "mutable", + "name": "r", + "nameLocation": "2914:1:20", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "2895:20:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2530_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 2583, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2582, + "name": "StringSlot", + "nameLocations": [ + "2895:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2530, + "src": "2895:10:20" + }, + "referencedDeclaration": 2530, + "src": "2895:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2530_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2894:22:20" + }, + "scope": 2622, + "src": "2835:188:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2598, + "nodeType": "Block", + "src": "3225:112:20", + "statements": [ + { + "AST": { + "nativeSrc": "3287:44:20", + "nodeType": "YulBlock", + "src": "3287:44:20", + "statements": [ + { + "nativeSrc": "3301:20:20", + "nodeType": "YulAssignment", + "src": "3301:20:20", + "value": { + "name": "store.slot", + "nativeSrc": "3311:10:20", + "nodeType": "YulIdentifier", + "src": "3311:10:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3301:6:20", + "nodeType": "YulIdentifier", + "src": "3301:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2595, + "isOffset": false, + "isSlot": true, + "src": "3301:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2591, + "isOffset": false, + "isSlot": true, + "src": "3311:10:20", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 2597, + "nodeType": "InlineAssembly", + "src": "3278:53:20" + } + ] + }, + "documentation": { + "id": 2589, + "nodeType": "StructuredDocumentation", + "src": "3029:101:20", + "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`." + }, + "id": 2599, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "3144:13:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2591, + "mutability": "mutable", + "name": "store", + "nameLocation": "3173:5:20", + "nodeType": "VariableDeclaration", + "scope": 2599, + "src": "3158:20:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2590, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3158:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3157:22:20" + }, + "returnParameters": { + "id": 2596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2595, + "mutability": "mutable", + "name": "r", + "nameLocation": "3222:1:20", + "nodeType": "VariableDeclaration", + "scope": 2599, + "src": "3203:20:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2530_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 2594, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2593, + "name": "StringSlot", + "nameLocations": [ + "3203:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2530, + "src": "3203:10:20" + }, + "referencedDeclaration": 2530, + "src": "3203:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2530_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3202:22:20" + }, + "scope": 2622, + "src": "3135:202:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2609, + "nodeType": "Block", + "src": "3513:106:20", + "statements": [ + { + "AST": { + "nativeSrc": "3575:38:20", + "nodeType": "YulBlock", + "src": "3575:38:20", + "statements": [ + { + "nativeSrc": "3589:14:20", + "nodeType": "YulAssignment", + "src": "3589:14:20", + "value": { + "name": "slot", + "nativeSrc": "3599:4:20", + "nodeType": "YulIdentifier", + "src": "3599:4:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3589:6:20", + "nodeType": "YulIdentifier", + "src": "3589:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2606, + "isOffset": false, + "isSlot": true, + "src": "3589:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2602, + "isOffset": false, + "isSlot": false, + "src": "3599:4:20", + "valueSize": 1 + } + ], + "id": 2608, + "nodeType": "InlineAssembly", + "src": "3566:47:20" + } + ] + }, + "documentation": { + "id": 2600, + "nodeType": "StructuredDocumentation", + "src": "3343:85:20", + "text": " @dev Returns an `BytesSlot` with member `value` located at `slot`." + }, + "id": 2610, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3442:12:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2602, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3463:4:20", + "nodeType": "VariableDeclaration", + "scope": 2610, + "src": "3455:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2601, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3455:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3454:14:20" + }, + "returnParameters": { + "id": 2607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2606, + "mutability": "mutable", + "name": "r", + "nameLocation": "3510:1:20", + "nodeType": "VariableDeclaration", + "scope": 2610, + "src": "3492:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2533_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 2605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2604, + "name": "BytesSlot", + "nameLocations": [ + "3492:9:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2533, + "src": "3492:9:20" + }, + "referencedDeclaration": 2533, + "src": "3492:9:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2533_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3491:21:20" + }, + "scope": 2622, + "src": "3433:186:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2620, + "nodeType": "Block", + "src": "3816:112:20", + "statements": [ + { + "AST": { + "nativeSrc": "3878:44:20", + "nodeType": "YulBlock", + "src": "3878:44:20", + "statements": [ + { + "nativeSrc": "3892:20:20", + "nodeType": "YulAssignment", + "src": "3892:20:20", + "value": { + "name": "store.slot", + "nativeSrc": "3902:10:20", + "nodeType": "YulIdentifier", + "src": "3902:10:20" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3892:6:20", + "nodeType": "YulIdentifier", + "src": "3892:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2617, + "isOffset": false, + "isSlot": true, + "src": "3892:6:20", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2613, + "isOffset": false, + "isSlot": true, + "src": "3902:10:20", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 2619, + "nodeType": "InlineAssembly", + "src": "3869:53:20" + } + ] + }, + "documentation": { + "id": 2611, + "nodeType": "StructuredDocumentation", + "src": "3625:99:20", + "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`." + }, + "id": 2621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3738:12:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "store", + "nameLocation": "3765:5:20", + "nodeType": "VariableDeclaration", + "scope": 2621, + "src": "3751:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2612, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3751:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3750:21:20" + }, + "returnParameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2617, + "mutability": "mutable", + "name": "r", + "nameLocation": "3813:1:20", + "nodeType": "VariableDeclaration", + "scope": 2621, + "src": "3795:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2533_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 2616, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2615, + "name": "BytesSlot", + "nameLocations": [ + "3795:9:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2533, + "src": "3795:9:20" + }, + "referencedDeclaration": 2533, + "src": "3795:9:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2533_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3794:21:20" + }, + "scope": 2622, + "src": "3729:199:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2623, + "src": "1245:2685:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "193:3738:20" + }, + "id": 20 + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 2970 + ] + }, + "id": 2971, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2624, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:21" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ECDSA", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2625, + "nodeType": "StructuredDocumentation", + "src": "138:205:21", + "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address." + }, + "fullyImplemented": true, + "id": 2970, + "linearizedBaseContracts": [ + 2970 + ], + "name": "ECDSA", + "nameLocation": "352:5:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ECDSA.RecoverError", + "id": 2630, + "members": [ + { + "id": 2626, + "name": "NoError", + "nameLocation": "392:7:21", + "nodeType": "EnumValue", + "src": "392:7:21" + }, + { + "id": 2627, + "name": "InvalidSignature", + "nameLocation": "409:16:21", + "nodeType": "EnumValue", + "src": "409:16:21" + }, + { + "id": 2628, + "name": "InvalidSignatureLength", + "nameLocation": "435:22:21", + "nodeType": "EnumValue", + "src": "435:22:21" + }, + { + "id": 2629, + "name": "InvalidSignatureS", + "nameLocation": "467:17:21", + "nodeType": "EnumValue", + "src": "467:17:21" + } + ], + "name": "RecoverError", + "nameLocation": "369:12:21", + "nodeType": "EnumDefinition", + "src": "364:126:21" + }, + { + "documentation": { + "id": 2631, + "nodeType": "StructuredDocumentation", + "src": "496:63:21", + "text": " @dev The signature derives the `address(0)`." + }, + "errorSelector": "f645eedf", + "id": 2633, + "name": "ECDSAInvalidSignature", + "nameLocation": "570:21:21", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2632, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:21" + }, + "src": "564:30:21" + }, + { + "documentation": { + "id": 2634, + "nodeType": "StructuredDocumentation", + "src": "600:60:21", + "text": " @dev The signature has an invalid length." + }, + "errorSelector": "fce698f7", + "id": 2638, + "name": "ECDSAInvalidSignatureLength", + "nameLocation": "671:27:21", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2636, + "mutability": "mutable", + "name": "length", + "nameLocation": "707:6:21", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "699:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "698:16:21" + }, + "src": "665:50:21" + }, + { + "documentation": { + "id": 2639, + "nodeType": "StructuredDocumentation", + "src": "721:85:21", + "text": " @dev The signature has an S value that is in the upper half order." + }, + "errorSelector": "d78bce0c", + "id": 2643, + "name": "ECDSAInvalidSignatureS", + "nameLocation": "817:22:21", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2641, + "mutability": "mutable", + "name": "s", + "nameLocation": "848:1:21", + "nodeType": "VariableDeclaration", + "scope": 2643, + "src": "840:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2640, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "840:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "839:11:21" + }, + "src": "811:40:21" + }, + { + "body": { + "id": 2695, + "nodeType": "Block", + "src": "2242:653:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2658, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2648, + "src": "2256:9:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2266:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2256:16:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3635", + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2276:2:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "2256:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2693, + "nodeType": "Block", + "src": "2781:108:21", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 2682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2811:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2803:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2680, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2803:7:21", + "typeDescriptions": {} + } + }, + "id": 2683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2803:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2684, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "2815:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2828:22:21", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 2628, + "src": "2815:35:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "expression": { + "id": 2688, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2648, + "src": "2860:9:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2870:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2860:16:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2852:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2686, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2852:7:21", + "typeDescriptions": {} + } + }, + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2852:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2691, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2802:76:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2657, + "id": 2692, + "nodeType": "Return", + "src": "2795:83:21" + } + ] + }, + "id": 2694, + "nodeType": "IfStatement", + "src": "2252:637:21", + "trueBody": { + "id": 2679, + "nodeType": "Block", + "src": "2280:495:21", + "statements": [ + { + "assignments": [ + 2663 + ], + "declarations": [ + { + "constant": false, + "id": 2663, + "mutability": "mutable", + "name": "r", + "nameLocation": "2302:1:21", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "2294:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2662, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2294:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2664, + "nodeType": "VariableDeclarationStatement", + "src": "2294:9:21" + }, + { + "assignments": [ + 2666 + ], + "declarations": [ + { + "constant": false, + "id": 2666, + "mutability": "mutable", + "name": "s", + "nameLocation": "2325:1:21", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "2317:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2667, + "nodeType": "VariableDeclarationStatement", + "src": "2317:9:21" + }, + { + "assignments": [ + 2669 + ], + "declarations": [ + { + "constant": false, + "id": 2669, + "mutability": "mutable", + "name": "v", + "nameLocation": "2346:1:21", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "2340:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2668, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2340:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 2670, + "nodeType": "VariableDeclarationStatement", + "src": "2340:7:21" + }, + { + "AST": { + "nativeSrc": "2548:171:21", + "nodeType": "YulBlock", + "src": "2548:171:21", + "statements": [ + { + "nativeSrc": "2566:32:21", + "nodeType": "YulAssignment", + "src": "2566:32:21", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2581:9:21", + "nodeType": "YulIdentifier", + "src": "2581:9:21" + }, + { + "kind": "number", + "nativeSrc": "2592:4:21", + "nodeType": "YulLiteral", + "src": "2592:4:21", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2577:3:21", + "nodeType": "YulIdentifier", + "src": "2577:3:21" + }, + "nativeSrc": "2577:20:21", + "nodeType": "YulFunctionCall", + "src": "2577:20:21" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2571:5:21", + "nodeType": "YulIdentifier", + "src": "2571:5:21" + }, + "nativeSrc": "2571:27:21", + "nodeType": "YulFunctionCall", + "src": "2571:27:21" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "2566:1:21", + "nodeType": "YulIdentifier", + "src": "2566:1:21" + } + ] + }, + { + "nativeSrc": "2615:32:21", + "nodeType": "YulAssignment", + "src": "2615:32:21", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2630:9:21", + "nodeType": "YulIdentifier", + "src": "2630:9:21" + }, + { + "kind": "number", + "nativeSrc": "2641:4:21", + "nodeType": "YulLiteral", + "src": "2641:4:21", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2626:3:21", + "nodeType": "YulIdentifier", + "src": "2626:3:21" + }, + "nativeSrc": "2626:20:21", + "nodeType": "YulFunctionCall", + "src": "2626:20:21" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2620:5:21", + "nodeType": "YulIdentifier", + "src": "2620:5:21" + }, + "nativeSrc": "2620:27:21", + "nodeType": "YulFunctionCall", + "src": "2620:27:21" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "2615:1:21", + "nodeType": "YulIdentifier", + "src": "2615:1:21" + } + ] + }, + { + "nativeSrc": "2664:41:21", + "nodeType": "YulAssignment", + "src": "2664:41:21", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2674:1:21", + "nodeType": "YulLiteral", + "src": "2674:1:21", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2687:9:21", + "nodeType": "YulIdentifier", + "src": "2687:9:21" + }, + { + "kind": "number", + "nativeSrc": "2698:4:21", + "nodeType": "YulLiteral", + "src": "2698:4:21", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2683:3:21", + "nodeType": "YulIdentifier", + "src": "2683:3:21" + }, + "nativeSrc": "2683:20:21", + "nodeType": "YulFunctionCall", + "src": "2683:20:21" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2677:5:21", + "nodeType": "YulIdentifier", + "src": "2677:5:21" + }, + "nativeSrc": "2677:27:21", + "nodeType": "YulFunctionCall", + "src": "2677:27:21" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "2669:4:21", + "nodeType": "YulIdentifier", + "src": "2669:4:21" + }, + "nativeSrc": "2669:36:21", + "nodeType": "YulFunctionCall", + "src": "2669:36:21" + }, + "variableNames": [ + { + "name": "v", + "nativeSrc": "2664:1:21", + "nodeType": "YulIdentifier", + "src": "2664:1:21" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2663, + "isOffset": false, + "isSlot": false, + "src": "2566:1:21", + "valueSize": 1 + }, + { + "declaration": 2666, + "isOffset": false, + "isSlot": false, + "src": "2615:1:21", + "valueSize": 1 + }, + { + "declaration": 2648, + "isOffset": false, + "isSlot": false, + "src": "2581:9:21", + "valueSize": 1 + }, + { + "declaration": 2648, + "isOffset": false, + "isSlot": false, + "src": "2630:9:21", + "valueSize": 1 + }, + { + "declaration": 2648, + "isOffset": false, + "isSlot": false, + "src": "2687:9:21", + "valueSize": 1 + }, + { + "declaration": 2669, + "isOffset": false, + "isSlot": false, + "src": "2664:1:21", + "valueSize": 1 + } + ], + "id": 2671, + "nodeType": "InlineAssembly", + "src": "2539:180:21" + }, + { + "expression": { + "arguments": [ + { + "id": 2673, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "2750:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2674, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2669, + "src": "2756:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2675, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2759:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2676, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2666, + "src": "2762:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2672, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2696, + 2776, + 2884 + ], + "referencedDeclaration": 2884, + "src": "2739:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2739:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2657, + "id": 2678, + "nodeType": "Return", + "src": "2732:32:21" + } + ] + } + } + ] + }, + "documentation": { + "id": 2644, + "nodeType": "StructuredDocumentation", + "src": "857:1267:21", + "text": " @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]" + }, + "id": 2696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "2138:10:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2646, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2157:4:21", + "nodeType": "VariableDeclaration", + "scope": 2696, + "src": "2149:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2645, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2149:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2648, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2176:9:21", + "nodeType": "VariableDeclaration", + "scope": 2696, + "src": "2163:22:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2163:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2148:38:21" + }, + "returnParameters": { + "id": 2657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2651, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2696, + "src": "2210:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2210:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2654, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2696, + "src": "2219:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2653, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2652, + "name": "RecoverError", + "nameLocations": [ + "2219:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "2219:12:21" + }, + "referencedDeclaration": 2630, + "src": "2219:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2656, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2696, + "src": "2233:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2655, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2233:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2209:32:21" + }, + "scope": 2970, + "src": "2129:766:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2725, + "nodeType": "Block", + "src": "3789:168:21", + "statements": [ + { + "assignments": [ + 2707, + 2710, + 2712 + ], + "declarations": [ + { + "constant": false, + "id": 2707, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "3808:9:21", + "nodeType": "VariableDeclaration", + "scope": 2725, + "src": "3800:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3800:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2710, + "mutability": "mutable", + "name": "error", + "nameLocation": "3832:5:21", + "nodeType": "VariableDeclaration", + "scope": 2725, + "src": "3819:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2709, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2708, + "name": "RecoverError", + "nameLocations": [ + "3819:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "3819:12:21" + }, + "referencedDeclaration": 2630, + "src": "3819:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2712, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "3847:8:21", + "nodeType": "VariableDeclaration", + "scope": 2725, + "src": "3839:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2711, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3839:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2717, + "initialValue": { + "arguments": [ + { + "id": 2714, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2699, + "src": "3870:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2715, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2701, + "src": "3876:9:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2713, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2696, + 2776, + 2884 + ], + "referencedDeclaration": 2696, + "src": "3859:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3859:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3799:87:21" + }, + { + "expression": { + "arguments": [ + { + "id": 2719, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "3908:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 2720, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2712, + "src": "3915:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2718, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2969, + "src": "3896:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2630_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3896:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2722, + "nodeType": "ExpressionStatement", + "src": "3896:28:21" + }, + { + "expression": { + "id": 2723, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2707, + "src": "3941:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2705, + "id": 2724, + "nodeType": "Return", + "src": "3934:16:21" + } + ] + }, + "documentation": { + "id": 2697, + "nodeType": "StructuredDocumentation", + "src": "2901:796:21", + "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it." + }, + "id": 2726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "3711:7:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2699, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3727:4:21", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "3719:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2698, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3719:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2701, + "mutability": "mutable", + "name": "signature", + "nameLocation": "3746:9:21", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "3733:22:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2700, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3733:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3718:38:21" + }, + "returnParameters": { + "id": 2705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2704, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "3780:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3780:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3779:9:21" + }, + "scope": 2970, + "src": "3702:255:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2775, + "nodeType": "Block", + "src": "4285:342:21", + "statements": [ + { + "id": 2774, + "nodeType": "UncheckedBlock", + "src": "4295:326:21", + "statements": [ + { + "assignments": [ + 2744 + ], + "declarations": [ + { + "constant": false, + "id": 2744, + "mutability": "mutable", + "name": "s", + "nameLocation": "4327:1:21", + "nodeType": "VariableDeclaration", + "scope": 2774, + "src": "4319:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2743, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4319:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2751, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2745, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "4331:2:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "arguments": [ + { + "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666", + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4344:66:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + }, + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + } + ], + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4336:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2746, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4336:7:21", + "typeDescriptions": {} + } + }, + "id": 2749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4336:75:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4331:80:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4319:92:21" + }, + { + "assignments": [ + 2753 + ], + "declarations": [ + { + "constant": false, + "id": 2753, + "mutability": "mutable", + "name": "v", + "nameLocation": "4528:1:21", + "nodeType": "VariableDeclaration", + "scope": 2774, + "src": "4522:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2752, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4522:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 2766, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2758, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "4547:2:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4539:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2756, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4539:7:21", + "typeDescriptions": {} + } + }, + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4539:11:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 2760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4554:3:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "4539:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2762, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4538:20:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3237", + "id": 2763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4561:2:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "4538:25:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4532:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 2754, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4532:5:21", + "typeDescriptions": {} + } + }, + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4532:32:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4522:42:21" + }, + { + "expression": { + "arguments": [ + { + "id": 2768, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2729, + "src": "4596:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2769, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2753, + "src": "4602:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2770, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "4605:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2771, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2744, + "src": "4608:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2767, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2696, + 2776, + 2884 + ], + "referencedDeclaration": 2884, + "src": "4585:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4585:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2742, + "id": 2773, + "nodeType": "Return", + "src": "4578:32:21" + } + ] + } + ] + }, + "documentation": { + "id": 2727, + "nodeType": "StructuredDocumentation", + "src": "3963:205:21", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]" + }, + "id": 2776, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "4182:10:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2729, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4201:4:21", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4193:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2728, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4193:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "r", + "nameLocation": "4215:1:21", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4207:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2730, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4207:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2733, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4226:2:21", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4218:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2732, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4218:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4192:37:21" + }, + "returnParameters": { + "id": 2742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2736, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4253:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4253:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2739, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4262:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2738, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2737, + "name": "RecoverError", + "nameLocations": [ + "4262:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "4262:12:21" + }, + "referencedDeclaration": 2630, + "src": "4262:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2741, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2776, + "src": "4276:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2740, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4276:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4252:32:21" + }, + "scope": 2970, + "src": "4173:454:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2808, + "nodeType": "Block", + "src": "4840:164:21", + "statements": [ + { + "assignments": [ + 2789, + 2792, + 2794 + ], + "declarations": [ + { + "constant": false, + "id": 2789, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "4859:9:21", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "4851:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4851:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2792, + "mutability": "mutable", + "name": "error", + "nameLocation": "4883:5:21", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "4870:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2791, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2790, + "name": "RecoverError", + "nameLocations": [ + "4870:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "4870:12:21" + }, + "referencedDeclaration": 2630, + "src": "4870:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2794, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "4898:8:21", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "4890:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2793, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4890:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2800, + "initialValue": { + "arguments": [ + { + "id": 2796, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2779, + "src": "4921:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2797, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2781, + "src": "4927:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2798, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "4930:2:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2795, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2696, + 2776, + 2884 + ], + "referencedDeclaration": 2776, + "src": "4910:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 2799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4910:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4850:83:21" + }, + { + "expression": { + "arguments": [ + { + "id": 2802, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "4955:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 2803, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2794, + "src": "4962:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2801, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2969, + "src": "4943:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2630_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4943:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2805, + "nodeType": "ExpressionStatement", + "src": "4943:28:21" + }, + { + "expression": { + "id": 2806, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "4988:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2787, + "id": 2807, + "nodeType": "Return", + "src": "4981:16:21" + } + ] + }, + "documentation": { + "id": 2777, + "nodeType": "StructuredDocumentation", + "src": "4633:116:21", + "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately." + }, + "id": 2809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "4763:7:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2779, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4779:4:21", + "nodeType": "VariableDeclaration", + "scope": 2809, + "src": "4771:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2778, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4771:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2781, + "mutability": "mutable", + "name": "r", + "nameLocation": "4793:1:21", + "nodeType": "VariableDeclaration", + "scope": 2809, + "src": "4785:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2780, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4785:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4804:2:21", + "nodeType": "VariableDeclaration", + "scope": 2809, + "src": "4796:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2782, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4796:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4770:37:21" + }, + "returnParameters": { + "id": 2787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2786, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2809, + "src": "4831:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2785, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4831:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4830:9:21" + }, + "scope": 2970, + "src": "4754:250:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2883, + "nodeType": "Block", + "src": "5298:1372:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2830, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "6194:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6186:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6186:7:21", + "typeDescriptions": {} + } + }, + "id": 2831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6186:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", + "id": 2832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6199:66:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", + "typeString": "int_const 5789...(69 digits omitted)...7168" + }, + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "src": "6186:79:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2844, + "nodeType": "IfStatement", + "src": "6182:164:21", + "trueBody": { + "id": 2843, + "nodeType": "Block", + "src": "6267:79:21", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6297:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6289:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2834, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6289:7:21", + "typeDescriptions": {} + } + }, + "id": 2837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6289:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2838, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "6301:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6314:17:21", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 2629, + "src": "6301:30:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 2840, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "6333:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2841, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6288:47:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2827, + "id": 2842, + "nodeType": "Return", + "src": "6281:54:21" + } + ] + } + }, + { + "assignments": [ + 2846 + ], + "declarations": [ + { + "constant": false, + "id": 2846, + "mutability": "mutable", + "name": "signer", + "nameLocation": "6448:6:21", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "6440:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6440:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2853, + "initialValue": { + "arguments": [ + { + "id": 2848, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "6467:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2849, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2814, + "src": "6473:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2850, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2816, + "src": "6476:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2851, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "6479:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2847, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "6457:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6457:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6440:41:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2854, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "6495:6:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6513:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6505:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2855, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6505:7:21", + "typeDescriptions": {} + } + }, + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6505:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6495:20:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2873, + "nodeType": "IfStatement", + "src": "6491:113:21", + "trueBody": { + "id": 2872, + "nodeType": "Block", + "src": "6517:87:21", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6547:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6539:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6539:7:21", + "typeDescriptions": {} + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6539:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2864, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "6551:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6564:16:21", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 2627, + "src": "6551:29:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6590:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6582:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2866, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6582:7:21", + "typeDescriptions": {} + } + }, + "id": 2869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6582:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2870, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6538:55:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2827, + "id": 2871, + "nodeType": "Return", + "src": "6531:62:21" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 2874, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "6622:6:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2875, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "6630:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6643:7:21", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 2626, + "src": "6630:20:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6660:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6652:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2877, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6652:7:21", + "typeDescriptions": {} + } + }, + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6652:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2881, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6621:42:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 2827, + "id": 2882, + "nodeType": "Return", + "src": "6614:49:21" + } + ] + }, + "documentation": { + "id": 2810, + "nodeType": "StructuredDocumentation", + "src": "5010:125:21", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 2884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "5149:10:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2819, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2812, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5177:4:21", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5169:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2811, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5169:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2814, + "mutability": "mutable", + "name": "v", + "nameLocation": "5197:1:21", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5191:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2813, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5191:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2816, + "mutability": "mutable", + "name": "r", + "nameLocation": "5216:1:21", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5208:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2815, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5208:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2818, + "mutability": "mutable", + "name": "s", + "nameLocation": "5235:1:21", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5227:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2817, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5227:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5159:83:21" + }, + "returnParameters": { + "id": 2827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2821, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5266:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5266:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2824, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5275:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2823, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2822, + "name": "RecoverError", + "nameLocations": [ + "5275:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "5275:12:21" + }, + "referencedDeclaration": 2630, + "src": "5275:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2826, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2884, + "src": "5289:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2825, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5289:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5265:32:21" + }, + "scope": 2970, + "src": "5140:1530:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2919, + "nodeType": "Block", + "src": "6897:166:21", + "statements": [ + { + "assignments": [ + 2899, + 2902, + 2904 + ], + "declarations": [ + { + "constant": false, + "id": 2899, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "6916:9:21", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "6908:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6908:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2902, + "mutability": "mutable", + "name": "error", + "nameLocation": "6940:5:21", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "6927:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2901, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2900, + "name": "RecoverError", + "nameLocations": [ + "6927:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "6927:12:21" + }, + "referencedDeclaration": 2630, + "src": "6927:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2904, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "6955:8:21", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "6947:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2903, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6947:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2911, + "initialValue": { + "arguments": [ + { + "id": 2906, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "6978:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2907, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2889, + "src": "6984:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2908, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2891, + "src": "6987:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2909, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2893, + "src": "6990:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2905, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2696, + 2776, + 2884 + ], + "referencedDeclaration": 2884, + "src": "6967:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 2910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6967:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$2630_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6907:85:21" + }, + { + "expression": { + "arguments": [ + { + "id": 2913, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "7014:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 2914, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "7021:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2912, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2969, + "src": "7002:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$2630_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 2915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7002:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2916, + "nodeType": "ExpressionStatement", + "src": "7002:28:21" + }, + { + "expression": { + "id": 2917, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2899, + "src": "7047:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2897, + "id": 2918, + "nodeType": "Return", + "src": "7040:16:21" + } + ] + }, + "documentation": { + "id": 2885, + "nodeType": "StructuredDocumentation", + "src": "6676:122:21", + "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 2920, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "6812:7:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2887, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6828:4:21", + "nodeType": "VariableDeclaration", + "scope": 2920, + "src": "6820:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2886, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6820:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2889, + "mutability": "mutable", + "name": "v", + "nameLocation": "6840:1:21", + "nodeType": "VariableDeclaration", + "scope": 2920, + "src": "6834:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2888, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6834:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "r", + "nameLocation": "6851:1:21", + "nodeType": "VariableDeclaration", + "scope": 2920, + "src": "6843:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6843:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2893, + "mutability": "mutable", + "name": "s", + "nameLocation": "6862:1:21", + "nodeType": "VariableDeclaration", + "scope": 2920, + "src": "6854:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2892, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6854:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6819:45:21" + }, + "returnParameters": { + "id": 2897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2896, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2920, + "src": "6888:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6888:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6887:9:21" + }, + "scope": 2970, + "src": "6803:260:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2968, + "nodeType": "Block", + "src": "7268:460:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2929, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "7282:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2930, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "7291:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7304:7:21", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 2626, + "src": "7291:20:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7282:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2935, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "7378:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2936, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "7387:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7400:16:21", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 2627, + "src": "7387:29:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7378:38:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 2946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2943, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "7483:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2944, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "7492:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7505:22:21", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 2628, + "src": "7492:35:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7483:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2955, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "7617:5:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2956, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2630, + "src": "7626:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$2630_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7639:17:21", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 2629, + "src": "7626:30:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7617:39:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2964, + "nodeType": "IfStatement", + "src": "7613:109:21", + "trueBody": { + "id": 2963, + "nodeType": "Block", + "src": "7658:64:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2960, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2926, + "src": "7702:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2959, + "name": "ECDSAInvalidSignatureS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2643, + "src": "7679:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 2961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7679:32:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2962, + "nodeType": "RevertStatement", + "src": "7672:39:21" + } + ] + } + }, + "id": 2965, + "nodeType": "IfStatement", + "src": "7479:243:21", + "trueBody": { + "id": 2954, + "nodeType": "Block", + "src": "7529:78:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2950, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2926, + "src": "7586:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7578:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7578:7:21", + "typeDescriptions": {} + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7578:17:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2947, + "name": "ECDSAInvalidSignatureLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "7550:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 2952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7550:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2953, + "nodeType": "RevertStatement", + "src": "7543:53:21" + } + ] + } + }, + "id": 2966, + "nodeType": "IfStatement", + "src": "7374:348:21", + "trueBody": { + "id": 2942, + "nodeType": "Block", + "src": "7418:55:21", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2939, + "name": "ECDSAInvalidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2633, + "src": "7439:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7439:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2941, + "nodeType": "RevertStatement", + "src": "7432:30:21" + } + ] + } + }, + "id": 2967, + "nodeType": "IfStatement", + "src": "7278:444:21", + "trueBody": { + "id": 2934, + "nodeType": "Block", + "src": "7313:55:21", + "statements": [ + { + "functionReturnParameters": 2928, + "id": 2933, + "nodeType": "Return", + "src": "7327:7:21" + } + ] + } + } + ] + }, + "documentation": { + "id": 2921, + "nodeType": "StructuredDocumentation", + "src": "7069:122:21", + "text": " @dev Optionally reverts with the corresponding custom error according to the `error` argument provided." + }, + "id": 2969, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_throwError", + "nameLocation": "7205:11:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2924, + "mutability": "mutable", + "name": "error", + "nameLocation": "7230:5:21", + "nodeType": "VariableDeclaration", + "scope": 2969, + "src": "7217:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 2923, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2922, + "name": "RecoverError", + "nameLocations": [ + "7217:12:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2630, + "src": "7217:12:21" + }, + "referencedDeclaration": 2630, + "src": "7217:12:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$2630", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2926, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "7245:8:21", + "nodeType": "VariableDeclaration", + "scope": 2969, + "src": "7237:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2925, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7237:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7216:38:21" + }, + "returnParameters": { + "id": 2928, + "nodeType": "ParameterList", + "parameters": [], + "src": "7268:0:21" + }, + "scope": 2970, + "src": "7196:532:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2971, + "src": "344:7386:21", + "usedErrors": [ + 2633, + 2638, + 2643 + ], + "usedEvents": [] + } + ], + "src": "112:7619:21" + }, + "id": 21 + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 2982 + ] + }, + "id": 2983, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2972, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:22" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2973, + "nodeType": "StructuredDocumentation", + "src": "141:279:22", + "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 2982, + "linearizedBaseContracts": [ + 2982 + ], + "name": "IERC165", + "nameLocation": "431:7:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2974, + "nodeType": "StructuredDocumentation", + "src": "445:340:22", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 2981, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "799:17:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2976, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "824:11:22", + "nodeType": "VariableDeclaration", + "scope": 2981, + "src": "817:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2975, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "817:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "816:20:22" + }, + "returnParameters": { + "id": 2980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2979, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2981, + "src": "860:4:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2978, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "860:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "859:6:22" + }, + "scope": 2982, + "src": "790:76:22", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2983, + "src": "421:447:22", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:754:22" + }, + "id": 22 + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 3595 + ] + }, + "id": 3596, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2984, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "205:24:23" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2985, + "nodeType": "StructuredDocumentation", + "src": "231:1098:23", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ====" + }, + "fullyImplemented": true, + "id": 3595, + "linearizedBaseContracts": [ + 3595 + ], + "name": "EnumerableSet", + "nameLocation": "1338:13:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 2993, + "members": [ + { + "constant": false, + "id": 2988, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1862:7:23", + "nodeType": "VariableDeclaration", + "scope": 2993, + "src": "1852:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1852:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2987, + "nodeType": "ArrayTypeName", + "src": "1852:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2992, + "mutability": "mutable", + "name": "_positions", + "nameLocation": "2054:10:23", + "nodeType": "VariableDeclaration", + "scope": 2993, + "src": "2020:44:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 2991, + "keyName": "value", + "keyNameLocation": "2036:5:23", + "keyType": { + "id": 2989, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2028:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2020:33:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2045:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1805:3:23", + "nodeType": "StructDefinition", + "scope": 3595, + "src": "1798:273:23", + "visibility": "public" + }, + { + "body": { + "id": 3034, + "nodeType": "Block", + "src": "2310:337:23", + "statements": [ + { + "condition": { + "id": 3008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2324:22:23", + "subExpression": { + "arguments": [ + { + "id": 3005, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2997, + "src": "2335:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 3006, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2999, + "src": "2340:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3004, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "2325:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2325:21:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3032, + "nodeType": "Block", + "src": "2604:37:23", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 3030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2625:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3003, + "id": 3031, + "nodeType": "Return", + "src": "2618:12:23" + } + ] + }, + "id": 3033, + "nodeType": "IfStatement", + "src": "2320:321:23", + "trueBody": { + "id": 3029, + "nodeType": "Block", + "src": "2348:250:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3014, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2999, + "src": "2379:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 3009, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2997, + "src": "2362:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3012, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2366:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "2362:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2374:4:23", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2362:16:23", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2362:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3016, + "nodeType": "ExpressionStatement", + "src": "2362:23:23" + }, + { + "expression": { + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 3017, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2997, + "src": "2520:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3020, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2524:10:23", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 2992, + "src": "2520:14:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3021, + "indexExpression": { + "id": 3019, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2999, + "src": "2535:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2520:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 3022, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2997, + "src": "2544:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3023, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2548:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "2544:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2556:6:23", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2544:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2520:42:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3026, + "nodeType": "ExpressionStatement", + "src": "2520:42:23" + }, + { + "expression": { + "hexValue": "74727565", + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2583:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3003, + "id": 3028, + "nodeType": "Return", + "src": "2576:11:23" + } + ] + } + } + ] + }, + "documentation": { + "id": 2994, + "nodeType": "StructuredDocumentation", + "src": "2077:159:23", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 3035, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "2250:4:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2997, + "mutability": "mutable", + "name": "set", + "nameLocation": "2267:3:23", + "nodeType": "VariableDeclaration", + "scope": 3035, + "src": "2255:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 2996, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2995, + "name": "Set", + "nameLocations": [ + "2255:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "2255:3:23" + }, + "referencedDeclaration": 2993, + "src": "2255:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2999, + "mutability": "mutable", + "name": "value", + "nameLocation": "2280:5:23", + "nodeType": "VariableDeclaration", + "scope": 3035, + "src": "2272:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2998, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2272:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2254:32:23" + }, + "returnParameters": { + "id": 3003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3002, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3035, + "src": "2304:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3001, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2304:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2303:6:23" + }, + "scope": 3595, + "src": "2241:406:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3118, + "nodeType": "Block", + "src": "2887:1296:23", + "statements": [ + { + "assignments": [ + 3047 + ], + "declarations": [ + { + "constant": false, + "id": 3047, + "mutability": "mutable", + "name": "position", + "nameLocation": "2999:8:23", + "nodeType": "VariableDeclaration", + "scope": 3118, + "src": "2991:16:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3046, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2991:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3052, + "initialValue": { + "baseExpression": { + "expression": { + "id": 3048, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3010:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3049, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3014:10:23", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 2992, + "src": "3010:14:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3051, + "indexExpression": { + "id": 3050, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3041, + "src": "3025:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3010:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2991:40:23" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3053, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "3046:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3058:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3046:13:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3116, + "nodeType": "Block", + "src": "4140:37:23", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4161:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3045, + "id": 3115, + "nodeType": "Return", + "src": "4154:12:23" + } + ] + }, + "id": 3117, + "nodeType": "IfStatement", + "src": "3042:1135:23", + "trueBody": { + "id": 3113, + "nodeType": "Block", + "src": "3061:1073:23", + "statements": [ + { + "assignments": [ + 3057 + ], + "declarations": [ + { + "constant": false, + "id": 3057, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "3421:10:23", + "nodeType": "VariableDeclaration", + "scope": 3113, + "src": "3413:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3056, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3413:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3061, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3058, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "3434:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 3059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3445:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3434:12:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3413:33:23" + }, + { + "assignments": [ + 3063 + ], + "declarations": [ + { + "constant": false, + "id": 3063, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "3468:9:23", + "nodeType": "VariableDeclaration", + "scope": 3113, + "src": "3460:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3460:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3069, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3064, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3480:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3484:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "3480:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3492:6:23", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3480:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3501:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3480:22:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3460:42:23" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3070, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3057, + "src": "3521:10:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3071, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "3535:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3521:23:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3097, + "nodeType": "IfStatement", + "src": "3517:378:23", + "trueBody": { + "id": 3096, + "nodeType": "Block", + "src": "3546:349:23", + "statements": [ + { + "assignments": [ + 3074 + ], + "declarations": [ + { + "constant": false, + "id": 3074, + "mutability": "mutable", + "name": "lastValue", + "nameLocation": "3572:9:23", + "nodeType": "VariableDeclaration", + "scope": 3096, + "src": "3564:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3073, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3564:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3079, + "initialValue": { + "baseExpression": { + "expression": { + "id": 3075, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3584:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3588:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "3584:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3078, + "indexExpression": { + "id": 3077, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "3596:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3584:22:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3564:42:23" + }, + { + "expression": { + "id": 3086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 3080, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3705:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "3705:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3084, + "indexExpression": { + "id": 3082, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3057, + "src": "3717:10:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3705:23:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3085, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3074, + "src": "3731:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3705:35:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3087, + "nodeType": "ExpressionStatement", + "src": "3705:35:23" + }, + { + "expression": { + "id": 3094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 3088, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3844:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3091, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3848:10:23", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 2992, + "src": "3844:14:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3092, + "indexExpression": { + "id": 3090, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3074, + "src": "3859:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3844:25:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3093, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "3872:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3844:36:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3095, + "nodeType": "ExpressionStatement", + "src": "3844:36:23" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 3098, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3973:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3977:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "3973:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3985:3:23", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3973:15:23", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3973:17:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3104, + "nodeType": "ExpressionStatement", + "src": "3973:17:23" + }, + { + "expression": { + "id": 3109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4069:28:23", + "subExpression": { + "baseExpression": { + "expression": { + "id": 3105, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "4076:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3106, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4080:10:23", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 2992, + "src": "4076:14:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3108, + "indexExpression": { + "id": 3107, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3041, + "src": "4091:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4076:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3110, + "nodeType": "ExpressionStatement", + "src": "4069:28:23" + }, + { + "expression": { + "hexValue": "74727565", + "id": 3111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3045, + "id": 3112, + "nodeType": "Return", + "src": "4112:11:23" + } + ] + } + } + ] + }, + "documentation": { + "id": 3036, + "nodeType": "StructuredDocumentation", + "src": "2653:157:23", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 3119, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2824:7:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3039, + "mutability": "mutable", + "name": "set", + "nameLocation": "2844:3:23", + "nodeType": "VariableDeclaration", + "scope": 3119, + "src": "2832:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3038, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3037, + "name": "Set", + "nameLocations": [ + "2832:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "2832:3:23" + }, + "referencedDeclaration": 2993, + "src": "2832:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3041, + "mutability": "mutable", + "name": "value", + "nameLocation": "2857:5:23", + "nodeType": "VariableDeclaration", + "scope": 3119, + "src": "2849:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3040, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2849:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2831:32:23" + }, + "returnParameters": { + "id": 3045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3044, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3119, + "src": "2881:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3043, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2881:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2880:6:23" + }, + "scope": 3595, + "src": "2815:1368:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3137, + "nodeType": "Block", + "src": "4343:50:23", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 3130, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3123, + "src": "4360:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3131, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4364:10:23", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 2992, + "src": "4360:14:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3133, + "indexExpression": { + "id": 3132, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3125, + "src": "4375:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4360:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 3134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4360:26:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3129, + "id": 3136, + "nodeType": "Return", + "src": "4353:33:23" + } + ] + }, + "documentation": { + "id": 3120, + "nodeType": "StructuredDocumentation", + "src": "4189:70:23", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 3138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "4273:9:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3123, + "mutability": "mutable", + "name": "set", + "nameLocation": "4295:3:23", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "4283:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3122, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3121, + "name": "Set", + "nameLocations": [ + "4283:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "4283:3:23" + }, + "referencedDeclaration": 2993, + "src": "4283:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3125, + "mutability": "mutable", + "name": "value", + "nameLocation": "4308:5:23", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "4300:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3124, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4300:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4282:32:23" + }, + "returnParameters": { + "id": 3129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3128, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "4337:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3127, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4337:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4336:6:23" + }, + "scope": 3595, + "src": "4264:129:23", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3151, + "nodeType": "Block", + "src": "4539:42:23", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 3147, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3142, + "src": "4556:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3148, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4560:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "4556:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4568:6:23", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4556:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3146, + "id": 3150, + "nodeType": "Return", + "src": "4549:25:23" + } + ] + }, + "documentation": { + "id": 3139, + "nodeType": "StructuredDocumentation", + "src": "4399:70:23", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 3152, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4483:7:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3142, + "mutability": "mutable", + "name": "set", + "nameLocation": "4503:3:23", + "nodeType": "VariableDeclaration", + "scope": 3152, + "src": "4491:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3141, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3140, + "name": "Set", + "nameLocations": [ + "4491:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "4491:3:23" + }, + "referencedDeclaration": 2993, + "src": "4491:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4490:17:23" + }, + "returnParameters": { + "id": 3146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3145, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3152, + "src": "4530:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4530:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4529:9:23" + }, + "scope": 3595, + "src": "4474:107:23", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3168, + "nodeType": "Block", + "src": "4999:42:23", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 3163, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3156, + "src": "5016:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "5016:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3166, + "indexExpression": { + "id": 3165, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3158, + "src": "5028:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5016:18:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3162, + "id": 3167, + "nodeType": "Return", + "src": "5009:25:23" + } + ] + }, + "documentation": { + "id": 3153, + "nodeType": "StructuredDocumentation", + "src": "4587:331:23", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4932:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3156, + "mutability": "mutable", + "name": "set", + "nameLocation": "4948:3:23", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "4936:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3155, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3154, + "name": "Set", + "nameLocations": [ + "4936:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "4936:3:23" + }, + "referencedDeclaration": 2993, + "src": "4936:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3158, + "mutability": "mutable", + "name": "index", + "nameLocation": "4961:5:23", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "4953:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4953:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4935:32:23" + }, + "returnParameters": { + "id": 3162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3161, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "4990:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3160, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4990:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4989:9:23" + }, + "scope": 3595, + "src": "4923:118:23", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3182, + "nodeType": "Block", + "src": "5655:35:23", + "statements": [ + { + "expression": { + "expression": { + "id": 3179, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3173, + "src": "5672:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3180, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5676:7:23", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2988, + "src": "5672:11:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "functionReturnParameters": 3178, + "id": 3181, + "nodeType": "Return", + "src": "5665:18:23" + } + ] + }, + "documentation": { + "id": 3170, + "nodeType": "StructuredDocumentation", + "src": "5047:529:23", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_values", + "nameLocation": "5590:7:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3173, + "mutability": "mutable", + "name": "set", + "nameLocation": "5610:3:23", + "nodeType": "VariableDeclaration", + "scope": 3183, + "src": "5598:15:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3172, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3171, + "name": "Set", + "nameLocations": [ + "5598:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "5598:3:23" + }, + "referencedDeclaration": 2993, + "src": "5598:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "5597:17:23" + }, + "returnParameters": { + "id": 3178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3177, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3183, + "src": "5637:16:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3175, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5637:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3176, + "nodeType": "ArrayTypeName", + "src": "5637:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5636:18:23" + }, + "scope": 3595, + "src": "5581:109:23", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 3187, + "members": [ + { + "constant": false, + "id": 3186, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "5747:6:23", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "5743:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3185, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3184, + "name": "Set", + "nameLocations": [ + "5743:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "5743:3:23" + }, + "referencedDeclaration": 2993, + "src": "5743:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nameLocation": "5722:10:23", + "nodeType": "StructDefinition", + "scope": 3595, + "src": "5715:45:23", + "visibility": "public" + }, + { + "body": { + "id": 3204, + "nodeType": "Block", + "src": "6006:47:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3199, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3191, + "src": "6028:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6032:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "6028:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3201, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "6040:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3198, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "6023:4:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6023:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3197, + "id": 3203, + "nodeType": "Return", + "src": "6016:30:23" + } + ] + }, + "documentation": { + "id": 3188, + "nodeType": "StructuredDocumentation", + "src": "5766:159:23", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 3205, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "5939:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3191, + "mutability": "mutable", + "name": "set", + "nameLocation": "5962:3:23", + "nodeType": "VariableDeclaration", + "scope": 3205, + "src": "5943:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3190, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3189, + "name": "Bytes32Set", + "nameLocations": [ + "5943:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "5943:10:23" + }, + "referencedDeclaration": 3187, + "src": "5943:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3193, + "mutability": "mutable", + "name": "value", + "nameLocation": "5975:5:23", + "nodeType": "VariableDeclaration", + "scope": 3205, + "src": "5967:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5967:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5942:39:23" + }, + "returnParameters": { + "id": 3197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3196, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3205, + "src": "6000:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3195, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6000:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5999:6:23" + }, + "scope": 3595, + "src": "5930:123:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3222, + "nodeType": "Block", + "src": "6300:50:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3217, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3209, + "src": "6325:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3218, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6329:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "6325:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3219, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3211, + "src": "6337:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3216, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3119, + "src": "6317:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6317:26:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3215, + "id": 3221, + "nodeType": "Return", + "src": "6310:33:23" + } + ] + }, + "documentation": { + "id": 3206, + "nodeType": "StructuredDocumentation", + "src": "6059:157:23", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 3223, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6230:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3209, + "mutability": "mutable", + "name": "set", + "nameLocation": "6256:3:23", + "nodeType": "VariableDeclaration", + "scope": 3223, + "src": "6237:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3208, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3207, + "name": "Bytes32Set", + "nameLocations": [ + "6237:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "6237:10:23" + }, + "referencedDeclaration": 3187, + "src": "6237:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3211, + "mutability": "mutable", + "name": "value", + "nameLocation": "6269:5:23", + "nodeType": "VariableDeclaration", + "scope": 3223, + "src": "6261:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3210, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6261:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6236:39:23" + }, + "returnParameters": { + "id": 3215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3214, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3223, + "src": "6294:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3213, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6294:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6293:6:23" + }, + "scope": 3595, + "src": "6221:129:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3240, + "nodeType": "Block", + "src": "6517:52:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3235, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3227, + "src": "6544:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3236, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6548:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "6544:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3237, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3229, + "src": "6556:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3234, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "6534:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6534:28:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3233, + "id": 3239, + "nodeType": "Return", + "src": "6527:35:23" + } + ] + }, + "documentation": { + "id": 3224, + "nodeType": "StructuredDocumentation", + "src": "6356:70:23", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 3241, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6440:8:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3227, + "mutability": "mutable", + "name": "set", + "nameLocation": "6468:3:23", + "nodeType": "VariableDeclaration", + "scope": 3241, + "src": "6449:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3226, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3225, + "name": "Bytes32Set", + "nameLocations": [ + "6449:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "6449:10:23" + }, + "referencedDeclaration": 3187, + "src": "6449:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3229, + "mutability": "mutable", + "name": "value", + "nameLocation": "6481:5:23", + "nodeType": "VariableDeclaration", + "scope": 3241, + "src": "6473:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3228, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6473:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6448:39:23" + }, + "returnParameters": { + "id": 3233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3232, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3241, + "src": "6511:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3231, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6511:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6510:6:23" + }, + "scope": 3595, + "src": "6431:138:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3255, + "nodeType": "Block", + "src": "6722:43:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3251, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3245, + "src": "6747:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3252, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6751:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "6747:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3250, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "6739:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 3253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6739:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3249, + "id": 3254, + "nodeType": "Return", + "src": "6732:26:23" + } + ] + }, + "documentation": { + "id": 3242, + "nodeType": "StructuredDocumentation", + "src": "6575:70:23", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 3256, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "6659:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3245, + "mutability": "mutable", + "name": "set", + "nameLocation": "6685:3:23", + "nodeType": "VariableDeclaration", + "scope": 3256, + "src": "6666:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3244, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3243, + "name": "Bytes32Set", + "nameLocations": [ + "6666:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "6666:10:23" + }, + "referencedDeclaration": 3187, + "src": "6666:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "6665:24:23" + }, + "returnParameters": { + "id": 3249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3248, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3256, + "src": "6713:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6713:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6712:9:23" + }, + "scope": 3595, + "src": "6650:115:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3273, + "nodeType": "Block", + "src": "7190:46:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3268, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3260, + "src": "7211:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3269, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7215:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "7211:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3270, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3262, + "src": "7223:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3267, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "7207:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7207:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3266, + "id": 3272, + "nodeType": "Return", + "src": "7200:29:23" + } + ] + }, + "documentation": { + "id": 3257, + "nodeType": "StructuredDocumentation", + "src": "6771:331:23", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7116:2:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3260, + "mutability": "mutable", + "name": "set", + "nameLocation": "7138:3:23", + "nodeType": "VariableDeclaration", + "scope": 3274, + "src": "7119:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3259, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3258, + "name": "Bytes32Set", + "nameLocations": [ + "7119:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "7119:10:23" + }, + "referencedDeclaration": 3187, + "src": "7119:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3262, + "mutability": "mutable", + "name": "index", + "nameLocation": "7151:5:23", + "nodeType": "VariableDeclaration", + "scope": 3274, + "src": "7143:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7143:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7118:39:23" + }, + "returnParameters": { + "id": 3266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3265, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3274, + "src": "7181:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7181:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7180:9:23" + }, + "scope": 3595, + "src": "7107:129:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3303, + "nodeType": "Block", + "src": "7857:219:23", + "statements": [ + { + "assignments": [ + 3288 + ], + "declarations": [ + { + "constant": false, + "id": 3288, + "mutability": "mutable", + "name": "store", + "nameLocation": "7884:5:23", + "nodeType": "VariableDeclaration", + "scope": 3303, + "src": "7867:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3286, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7867:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3287, + "nodeType": "ArrayTypeName", + "src": "7867:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3293, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3290, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3278, + "src": "7900:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 3291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7904:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3186, + "src": "7900:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3289, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3183, + "src": "7892:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7892:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7867:44:23" + }, + { + "assignments": [ + 3298 + ], + "declarations": [ + { + "constant": false, + "id": 3298, + "mutability": "mutable", + "name": "result", + "nameLocation": "7938:6:23", + "nodeType": "VariableDeclaration", + "scope": 3303, + "src": "7921:23:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7921:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3297, + "nodeType": "ArrayTypeName", + "src": "7921:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3299, + "nodeType": "VariableDeclarationStatement", + "src": "7921:23:23" + }, + { + "AST": { + "nativeSrc": "8007:39:23", + "nodeType": "YulBlock", + "src": "8007:39:23", + "statements": [ + { + "nativeSrc": "8021:15:23", + "nodeType": "YulAssignment", + "src": "8021:15:23", + "value": { + "name": "store", + "nativeSrc": "8031:5:23", + "nodeType": "YulIdentifier", + "src": "8031:5:23" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "8021:6:23", + "nodeType": "YulIdentifier", + "src": "8021:6:23" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3298, + "isOffset": false, + "isSlot": false, + "src": "8021:6:23", + "valueSize": 1 + }, + { + "declaration": 3288, + "isOffset": false, + "isSlot": false, + "src": "8031:5:23", + "valueSize": 1 + } + ], + "id": 3300, + "nodeType": "InlineAssembly", + "src": "7998:48:23" + }, + { + "expression": { + "id": 3301, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3298, + "src": "8063:6:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 3283, + "id": 3302, + "nodeType": "Return", + "src": "8056:13:23" + } + ] + }, + "documentation": { + "id": 3275, + "nodeType": "StructuredDocumentation", + "src": "7242:529:23", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "7785:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3278, + "mutability": "mutable", + "name": "set", + "nameLocation": "7811:3:23", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "7792:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 3277, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3276, + "name": "Bytes32Set", + "nameLocations": [ + "7792:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "7792:10:23" + }, + "referencedDeclaration": 3187, + "src": "7792:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "7791:24:23" + }, + "returnParameters": { + "id": 3283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3282, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "7839:16:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7839:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3281, + "nodeType": "ArrayTypeName", + "src": "7839:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "7838:18:23" + }, + "scope": 3595, + "src": "7776:300:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 3308, + "members": [ + { + "constant": false, + "id": 3307, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "8133:6:23", + "nodeType": "VariableDeclaration", + "scope": 3308, + "src": "8129:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3306, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3305, + "name": "Set", + "nameLocations": [ + "8129:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "8129:3:23" + }, + "referencedDeclaration": 2993, + "src": "8129:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "8108:10:23", + "nodeType": "StructDefinition", + "scope": 3595, + "src": "8101:45:23", + "visibility": "public" + }, + { + "body": { + "id": 3334, + "nodeType": "Block", + "src": "8392:74:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3320, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3312, + "src": "8414:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3321, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8418:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "8414:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3328, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3314, + "src": "8450:5:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8442:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3326, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8442:7:23", + "typeDescriptions": {} + } + }, + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8442:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8434:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8434:7:23", + "typeDescriptions": {} + } + }, + "id": 3330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8434:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3322, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8426:7:23", + "typeDescriptions": {} + } + }, + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8426:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3319, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "8409:4:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8409:50:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3318, + "id": 3333, + "nodeType": "Return", + "src": "8402:57:23" + } + ] + }, + "documentation": { + "id": 3309, + "nodeType": "StructuredDocumentation", + "src": "8152:159:23", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 3335, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "8325:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3312, + "mutability": "mutable", + "name": "set", + "nameLocation": "8348:3:23", + "nodeType": "VariableDeclaration", + "scope": 3335, + "src": "8329:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3311, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3310, + "name": "AddressSet", + "nameLocations": [ + "8329:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "8329:10:23" + }, + "referencedDeclaration": 3308, + "src": "8329:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3314, + "mutability": "mutable", + "name": "value", + "nameLocation": "8361:5:23", + "nodeType": "VariableDeclaration", + "scope": 3335, + "src": "8353:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8353:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8328:39:23" + }, + "returnParameters": { + "id": 3318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3317, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3335, + "src": "8386:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3316, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8386:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8385:6:23" + }, + "scope": 3595, + "src": "8316:150:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3361, + "nodeType": "Block", + "src": "8713:77:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3347, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3339, + "src": "8738:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3348, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8742:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "8738:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3355, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3341, + "src": "8774:5:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8766:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3353, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8766:7:23", + "typeDescriptions": {} + } + }, + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8766:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8758:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8758:7:23", + "typeDescriptions": {} + } + }, + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8758:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8750:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3349, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8750:7:23", + "typeDescriptions": {} + } + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8750:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3346, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3119, + "src": "8730:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8730:53:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3345, + "id": 3360, + "nodeType": "Return", + "src": "8723:60:23" + } + ] + }, + "documentation": { + "id": 3336, + "nodeType": "StructuredDocumentation", + "src": "8472:157:23", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 3362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "8643:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3339, + "mutability": "mutable", + "name": "set", + "nameLocation": "8669:3:23", + "nodeType": "VariableDeclaration", + "scope": 3362, + "src": "8650:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3338, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3337, + "name": "AddressSet", + "nameLocations": [ + "8650:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "8650:10:23" + }, + "referencedDeclaration": 3308, + "src": "8650:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3341, + "mutability": "mutable", + "name": "value", + "nameLocation": "8682:5:23", + "nodeType": "VariableDeclaration", + "scope": 3362, + "src": "8674:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8674:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8649:39:23" + }, + "returnParameters": { + "id": 3345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3344, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3362, + "src": "8707:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3343, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8707:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8706:6:23" + }, + "scope": 3595, + "src": "8634:156:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3388, + "nodeType": "Block", + "src": "8957:79:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3374, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3366, + "src": "8984:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8988:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "8984:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3382, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3368, + "src": "9020:5:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9012:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3380, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9012:7:23", + "typeDescriptions": {} + } + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9012:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9004:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9004:7:23", + "typeDescriptions": {} + } + }, + "id": 3384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9004:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8996:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3376, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8996:7:23", + "typeDescriptions": {} + } + }, + "id": 3385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8996:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3373, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "8974:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8974:55:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3372, + "id": 3387, + "nodeType": "Return", + "src": "8967:62:23" + } + ] + }, + "documentation": { + "id": 3363, + "nodeType": "StructuredDocumentation", + "src": "8796:70:23", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 3389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "8880:8:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3366, + "mutability": "mutable", + "name": "set", + "nameLocation": "8908:3:23", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "8889:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3365, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3364, + "name": "AddressSet", + "nameLocations": [ + "8889:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "8889:10:23" + }, + "referencedDeclaration": 3308, + "src": "8889:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3368, + "mutability": "mutable", + "name": "value", + "nameLocation": "8921:5:23", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "8913:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3367, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8913:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8888:39:23" + }, + "returnParameters": { + "id": 3372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3371, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "8951:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3370, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8951:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8950:6:23" + }, + "scope": 3595, + "src": "8871:165:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3403, + "nodeType": "Block", + "src": "9189:43:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3399, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "9214:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9218:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "9214:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3398, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "9206:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9206:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3397, + "id": 3402, + "nodeType": "Return", + "src": "9199:26:23" + } + ] + }, + "documentation": { + "id": 3390, + "nodeType": "StructuredDocumentation", + "src": "9042:70:23", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 3404, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "9126:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3393, + "mutability": "mutable", + "name": "set", + "nameLocation": "9152:3:23", + "nodeType": "VariableDeclaration", + "scope": 3404, + "src": "9133:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3392, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3391, + "name": "AddressSet", + "nameLocations": [ + "9133:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "9133:10:23" + }, + "referencedDeclaration": 3308, + "src": "9133:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "9132:24:23" + }, + "returnParameters": { + "id": 3397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3396, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3404, + "src": "9180:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9180:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9179:9:23" + }, + "scope": 3595, + "src": "9117:115:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3430, + "nodeType": "Block", + "src": "9657:73:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3422, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3408, + "src": "9702:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3423, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9706:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "9702:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3424, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3410, + "src": "9714:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3421, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "9698:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9698:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9690:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9690:7:23", + "typeDescriptions": {} + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9690:31:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9682:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3417, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9682:7:23", + "typeDescriptions": {} + } + }, + "id": 3427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9682:40:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9674:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9674:7:23", + "typeDescriptions": {} + } + }, + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9674:49:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3414, + "id": 3429, + "nodeType": "Return", + "src": "9667:56:23" + } + ] + }, + "documentation": { + "id": 3405, + "nodeType": "StructuredDocumentation", + "src": "9238:331:23", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "9583:2:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3408, + "mutability": "mutable", + "name": "set", + "nameLocation": "9605:3:23", + "nodeType": "VariableDeclaration", + "scope": 3431, + "src": "9586:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3407, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3406, + "name": "AddressSet", + "nameLocations": [ + "9586:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "9586:10:23" + }, + "referencedDeclaration": 3308, + "src": "9586:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3410, + "mutability": "mutable", + "name": "index", + "nameLocation": "9618:5:23", + "nodeType": "VariableDeclaration", + "scope": 3431, + "src": "9610:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9610:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9585:39:23" + }, + "returnParameters": { + "id": 3414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3413, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3431, + "src": "9648:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9648:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9647:9:23" + }, + "scope": 3595, + "src": "9574:156:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3460, + "nodeType": "Block", + "src": "10351:219:23", + "statements": [ + { + "assignments": [ + 3445 + ], + "declarations": [ + { + "constant": false, + "id": 3445, + "mutability": "mutable", + "name": "store", + "nameLocation": "10378:5:23", + "nodeType": "VariableDeclaration", + "scope": 3460, + "src": "10361:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3443, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10361:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3444, + "nodeType": "ArrayTypeName", + "src": "10361:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3450, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3447, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3435, + "src": "10394:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 3448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10398:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3307, + "src": "10394:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3446, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3183, + "src": "10386:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10386:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10361:44:23" + }, + { + "assignments": [ + 3455 + ], + "declarations": [ + { + "constant": false, + "id": 3455, + "mutability": "mutable", + "name": "result", + "nameLocation": "10432:6:23", + "nodeType": "VariableDeclaration", + "scope": 3460, + "src": "10415:23:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10415:7:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3454, + "nodeType": "ArrayTypeName", + "src": "10415:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 3456, + "nodeType": "VariableDeclarationStatement", + "src": "10415:23:23" + }, + { + "AST": { + "nativeSrc": "10501:39:23", + "nodeType": "YulBlock", + "src": "10501:39:23", + "statements": [ + { + "nativeSrc": "10515:15:23", + "nodeType": "YulAssignment", + "src": "10515:15:23", + "value": { + "name": "store", + "nativeSrc": "10525:5:23", + "nodeType": "YulIdentifier", + "src": "10525:5:23" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10515:6:23", + "nodeType": "YulIdentifier", + "src": "10515:6:23" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3455, + "isOffset": false, + "isSlot": false, + "src": "10515:6:23", + "valueSize": 1 + }, + { + "declaration": 3445, + "isOffset": false, + "isSlot": false, + "src": "10525:5:23", + "valueSize": 1 + } + ], + "id": 3457, + "nodeType": "InlineAssembly", + "src": "10492:48:23" + }, + { + "expression": { + "id": 3458, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3455, + "src": "10557:6:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 3440, + "id": 3459, + "nodeType": "Return", + "src": "10550:13:23" + } + ] + }, + "documentation": { + "id": 3432, + "nodeType": "StructuredDocumentation", + "src": "9736:529:23", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "10279:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3435, + "mutability": "mutable", + "name": "set", + "nameLocation": "10305:3:23", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "10286:22:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 3434, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3433, + "name": "AddressSet", + "nameLocations": [ + "10286:10:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "10286:10:23" + }, + "referencedDeclaration": 3308, + "src": "10286:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "10285:24:23" + }, + "returnParameters": { + "id": 3440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3439, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "10333:16:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10333:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3438, + "nodeType": "ArrayTypeName", + "src": "10333:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "10332:18:23" + }, + "scope": 3595, + "src": "10270:300:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 3465, + "members": [ + { + "constant": false, + "id": 3464, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "10621:6:23", + "nodeType": "VariableDeclaration", + "scope": 3465, + "src": "10617:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 3463, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3462, + "name": "Set", + "nameLocations": [ + "10617:3:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2993, + "src": "10617:3:23" + }, + "referencedDeclaration": 2993, + "src": "10617:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "10599:7:23", + "nodeType": "StructDefinition", + "scope": 3595, + "src": "10592:42:23", + "visibility": "public" + }, + { + "body": { + "id": 3485, + "nodeType": "Block", + "src": "10877:56:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3477, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3469, + "src": "10899:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10903:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "10899:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 3481, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3471, + "src": "10919:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10911:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3479, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10911:7:23", + "typeDescriptions": {} + } + }, + "id": 3482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10911:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3476, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "10894:4:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10894:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3475, + "id": 3484, + "nodeType": "Return", + "src": "10887:39:23" + } + ] + }, + "documentation": { + "id": 3466, + "nodeType": "StructuredDocumentation", + "src": "10640:159:23", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 3486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "10813:3:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3469, + "mutability": "mutable", + "name": "set", + "nameLocation": "10833:3:23", + "nodeType": "VariableDeclaration", + "scope": 3486, + "src": "10817:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3468, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3467, + "name": "UintSet", + "nameLocations": [ + "10817:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "10817:7:23" + }, + "referencedDeclaration": 3465, + "src": "10817:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3471, + "mutability": "mutable", + "name": "value", + "nameLocation": "10846:5:23", + "nodeType": "VariableDeclaration", + "scope": 3486, + "src": "10838:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10838:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10816:36:23" + }, + "returnParameters": { + "id": 3475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3474, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3486, + "src": "10871:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3473, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10871:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10870:6:23" + }, + "scope": 3595, + "src": "10804:129:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3506, + "nodeType": "Block", + "src": "11177:59:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3498, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3490, + "src": "11202:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11206:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "11202:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 3502, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "11222:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11214:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3500, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11214:7:23", + "typeDescriptions": {} + } + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11214:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3497, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3119, + "src": "11194:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11194:35:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3496, + "id": 3505, + "nodeType": "Return", + "src": "11187:42:23" + } + ] + }, + "documentation": { + "id": 3487, + "nodeType": "StructuredDocumentation", + "src": "10939:157:23", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 3507, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "11110:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3490, + "mutability": "mutable", + "name": "set", + "nameLocation": "11133:3:23", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "11117:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3489, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3488, + "name": "UintSet", + "nameLocations": [ + "11117:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "11117:7:23" + }, + "referencedDeclaration": 3465, + "src": "11117:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "value", + "nameLocation": "11146:5:23", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "11138:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11138:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11116:36:23" + }, + "returnParameters": { + "id": 3496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3495, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "11171:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3494, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11171:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11170:6:23" + }, + "scope": 3595, + "src": "11101:135:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3527, + "nodeType": "Block", + "src": "11400:61:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3519, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3511, + "src": "11427:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3520, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11431:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "11427:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 3523, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3513, + "src": "11447:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11439:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3521, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11439:7:23", + "typeDescriptions": {} + } + }, + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11439:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3518, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3138, + "src": "11417:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11417:37:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3517, + "id": 3526, + "nodeType": "Return", + "src": "11410:44:23" + } + ] + }, + "documentation": { + "id": 3508, + "nodeType": "StructuredDocumentation", + "src": "11242:70:23", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 3528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "11326:8:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3511, + "mutability": "mutable", + "name": "set", + "nameLocation": "11351:3:23", + "nodeType": "VariableDeclaration", + "scope": 3528, + "src": "11335:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3510, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3509, + "name": "UintSet", + "nameLocations": [ + "11335:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "11335:7:23" + }, + "referencedDeclaration": 3465, + "src": "11335:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3513, + "mutability": "mutable", + "name": "value", + "nameLocation": "11364:5:23", + "nodeType": "VariableDeclaration", + "scope": 3528, + "src": "11356:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11356:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11334:36:23" + }, + "returnParameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3516, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3528, + "src": "11394:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3515, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11394:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11393:6:23" + }, + "scope": 3595, + "src": "11317:144:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3542, + "nodeType": "Block", + "src": "11611:43:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3538, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3532, + "src": "11636:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11640:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "11636:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3537, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "11628:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 3540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11628:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3536, + "id": 3541, + "nodeType": "Return", + "src": "11621:26:23" + } + ] + }, + "documentation": { + "id": 3529, + "nodeType": "StructuredDocumentation", + "src": "11467:70:23", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 3543, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "11551:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3532, + "mutability": "mutable", + "name": "set", + "nameLocation": "11574:3:23", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "11558:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3531, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3530, + "name": "UintSet", + "nameLocations": [ + "11558:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "11558:7:23" + }, + "referencedDeclaration": 3465, + "src": "11558:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "11557:21:23" + }, + "returnParameters": { + "id": 3536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3535, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3543, + "src": "11602:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11602:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11601:9:23" + }, + "scope": 3595, + "src": "11542:112:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3563, + "nodeType": "Block", + "src": "12076:55:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3557, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3547, + "src": "12105:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3558, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12109:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "12105:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 3559, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3549, + "src": "12117:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3556, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "12101:3:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 3560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12101:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12093:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12093:7:23", + "typeDescriptions": {} + } + }, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12093:31:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3553, + "id": 3562, + "nodeType": "Return", + "src": "12086:38:23" + } + ] + }, + "documentation": { + "id": 3544, + "nodeType": "StructuredDocumentation", + "src": "11660:331:23", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "12005:2:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3547, + "mutability": "mutable", + "name": "set", + "nameLocation": "12024:3:23", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "12008:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3546, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3545, + "name": "UintSet", + "nameLocations": [ + "12008:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "12008:7:23" + }, + "referencedDeclaration": 3465, + "src": "12008:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3549, + "mutability": "mutable", + "name": "index", + "nameLocation": "12037:5:23", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "12029:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12029:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12007:36:23" + }, + "returnParameters": { + "id": 3553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "12067:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12067:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12066:9:23" + }, + "scope": 3595, + "src": "11996:135:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3593, + "nodeType": "Block", + "src": "12749:219:23", + "statements": [ + { + "assignments": [ + 3578 + ], + "declarations": [ + { + "constant": false, + "id": 3578, + "mutability": "mutable", + "name": "store", + "nameLocation": "12776:5:23", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "12759:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3576, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12759:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3577, + "nodeType": "ArrayTypeName", + "src": "12759:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3583, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3580, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3568, + "src": "12792:3:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 3581, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12796:6:23", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3464, + "src": "12792:10:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$2993_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 3579, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3183, + "src": "12784:7:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$2993_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12784:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12759:44:23" + }, + { + "assignments": [ + 3588 + ], + "declarations": [ + { + "constant": false, + "id": 3588, + "mutability": "mutable", + "name": "result", + "nameLocation": "12830:6:23", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "12813:23:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3587, + "nodeType": "ArrayTypeName", + "src": "12813:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 3589, + "nodeType": "VariableDeclarationStatement", + "src": "12813:23:23" + }, + { + "AST": { + "nativeSrc": "12899:39:23", + "nodeType": "YulBlock", + "src": "12899:39:23", + "statements": [ + { + "nativeSrc": "12913:15:23", + "nodeType": "YulAssignment", + "src": "12913:15:23", + "value": { + "name": "store", + "nativeSrc": "12923:5:23", + "nodeType": "YulIdentifier", + "src": "12923:5:23" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12913:6:23", + "nodeType": "YulIdentifier", + "src": "12913:6:23" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3588, + "isOffset": false, + "isSlot": false, + "src": "12913:6:23", + "valueSize": 1 + }, + { + "declaration": 3578, + "isOffset": false, + "isSlot": false, + "src": "12923:5:23", + "valueSize": 1 + } + ], + "id": 3590, + "nodeType": "InlineAssembly", + "src": "12890:48:23" + }, + { + "expression": { + "id": 3591, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3588, + "src": "12955:6:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 3573, + "id": 3592, + "nodeType": "Return", + "src": "12948:13:23" + } + ] + }, + "documentation": { + "id": 3565, + "nodeType": "StructuredDocumentation", + "src": "12137:529:23", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3594, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "12680:6:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3568, + "mutability": "mutable", + "name": "set", + "nameLocation": "12703:3:23", + "nodeType": "VariableDeclaration", + "scope": 3594, + "src": "12687:19:23", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 3567, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3566, + "name": "UintSet", + "nameLocations": [ + "12687:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3465, + "src": "12687:7:23" + }, + "referencedDeclaration": 3465, + "src": "12687:7:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$3465_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "12686:21:23" + }, + "returnParameters": { + "id": 3573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3572, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3594, + "src": "12731:16:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12731:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3571, + "nodeType": "ArrayTypeName", + "src": "12731:9:23", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12730:18:23" + }, + "scope": 3595, + "src": "12671:297:23", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3596, + "src": "1330:11640:23", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "205:12766:23" + }, + "id": 23 + }, + "contracts/account/CMAccount.sol": { + "ast": { + "absolutePath": "contracts/account/CMAccount.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 563 + ], + "Address": [ + 2512 + ], + "BookingTokenOperator": [ + 5868 + ], + "CMAccount": [ + 4805 + ], + "ChequeManager": [ + 5471 + ], + "ERC1967Proxy": [ + 1371 + ], + "ERC1967Utils": [ + 1674 + ], + "GasMoneyManager": [ + 5745 + ], + "ICMAccountManager": [ + 5941 + ], + "IERC20": [ + 1798 + ], + "IERC721": [ + 2241 + ], + "IERC721Receiver": [ + 2259 + ], + "Initializable": [ + 817 + ], + "PartnerConfiguration": [ + 6926 + ], + "SafeERC20": [ + 2124 + ], + "UUPSUpgradeable": [ + 999 + ] + }, + "id": 4806, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3597, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "86:24:24" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": 3599, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 1372, + "src": "112:86:24", + "symbolAliases": [ + { + "foreign": { + "id": 3598, + "name": "ERC1967Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "121:12:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 3601, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 818, + "src": "199:98:24", + "symbolAliases": [ + { + "foreign": { + "id": 3600, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "208:13:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 3603, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 1000, + "src": "298:102:24", + "symbolAliases": [ + { + "foreign": { + "id": 3602, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "307:15:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "id": 3605, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 564, + "src": "401:146:24", + "symbolAliases": [ + { + "foreign": { + "id": 3604, + "name": "AccessControlEnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "410:34:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 3607, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 2513, + "src": "548:68:24", + "symbolAliases": [ + { + "foreign": { + "id": 3606, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "557:7:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 3610, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 2125, + "src": "617:92:24", + "symbolAliases": [ + { + "foreign": { + "id": 3608, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "626:9:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 3609, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1798, + "src": "637:6:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 3612, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 2242, + "src": "710:75:24", + "symbolAliases": [ + { + "foreign": { + "id": 3611, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "719:7:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "id": 3614, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 2260, + "src": "786:91:24", + "symbolAliases": [ + { + "foreign": { + "id": 3613, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "795:15:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 3616, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 1675, + "src": "878:86:24", + "symbolAliases": [ + { + "foreign": { + "id": 3615, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "887:12:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 3618, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 5942, + "src": "966:69:24", + "symbolAliases": [ + { + "foreign": { + "id": 3617, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "975:17:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/ChequeManager.sol", + "file": "./ChequeManager.sol", + "id": 3620, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 5472, + "src": "1036:52:24", + "symbolAliases": [ + { + "foreign": { + "id": 3619, + "name": "ChequeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5471, + "src": "1045:13:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "file": "../booking-token/BookingTokenOperator.sol", + "id": 3622, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 5869, + "src": "1089:81:24", + "symbolAliases": [ + { + "foreign": { + "id": 3621, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5868, + "src": "1098:20:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "file": "../partner/PartnerConfiguration.sol", + "id": 3624, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 6927, + "src": "1171:75:24", + "symbolAliases": [ + { + "foreign": { + "id": 3623, + "name": "PartnerConfiguration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6926, + "src": "1180:20:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "file": "./GasMoneyManager.sol", + "id": 3626, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4806, + "sourceUnit": 5746, + "src": "1247:56:24", + "symbolAliases": [ + { + "foreign": { + "id": 3625, + "name": "GasMoneyManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5745, + "src": "1256:15:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3628, + "name": "Initializable", + "nameLocations": [ + "2639:13:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "2639:13:24" + }, + "id": 3629, + "nodeType": "InheritanceSpecifier", + "src": "2639:13:24" + }, + { + "baseName": { + "id": 3630, + "name": "AccessControlEnumerableUpgradeable", + "nameLocations": [ + "2658:34:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 563, + "src": "2658:34:24" + }, + "id": 3631, + "nodeType": "InheritanceSpecifier", + "src": "2658:34:24" + }, + { + "baseName": { + "id": 3632, + "name": "UUPSUpgradeable", + "nameLocations": [ + "2698:15:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 999, + "src": "2698:15:24" + }, + "id": 3633, + "nodeType": "InheritanceSpecifier", + "src": "2698:15:24" + }, + { + "baseName": { + "id": 3634, + "name": "IERC721Receiver", + "nameLocations": [ + "2719:15:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2259, + "src": "2719:15:24" + }, + "id": 3635, + "nodeType": "InheritanceSpecifier", + "src": "2719:15:24" + }, + { + "baseName": { + "id": 3636, + "name": "ChequeManager", + "nameLocations": [ + "2740:13:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5471, + "src": "2740:13:24" + }, + "id": 3637, + "nodeType": "InheritanceSpecifier", + "src": "2740:13:24" + }, + { + "baseName": { + "id": 3638, + "name": "PartnerConfiguration", + "nameLocations": [ + "2759:20:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6926, + "src": "2759:20:24" + }, + "id": 3639, + "nodeType": "InheritanceSpecifier", + "src": "2759:20:24" + }, + { + "baseName": { + "id": 3640, + "name": "GasMoneyManager", + "nameLocations": [ + "2785:15:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5745, + "src": "2785:15:24" + }, + "id": 3641, + "nodeType": "InheritanceSpecifier", + "src": "2785:15:24" + } + ], + "canonicalName": "CMAccount", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3627, + "nodeType": "StructuredDocumentation", + "src": "1305:1307:24", + "text": " @title Camino Messenger Account\n @notice A CM Account manages funds, minting/buying of booking tokens, provided\n or wanted services, and multiple bots for distributors and suppliers on\n Camino Messenger ecosystem.\n Registering bots is done by role based access control. Bot's with\n `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n contract to be used as gas money. This restricted with a `limit`\n (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n values are 10 CAM per 24 hours.\n `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n calling the corresponding functions on the {BookingToken} contract. The buy\n operation pays the price of the Booking Token with the funds on the\n {CMAccount} contract.\n @dev This contract uses UUPS style upgradeability. The authorization function\n `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n restricted to only upgrade to the implementation address registered on the\n {CMAccountManager} contract.\n @custom:security-contact https://r.xyz/program/camino-network" + }, + "fullyImplemented": true, + "id": 4805, + "linearizedBaseContracts": [ + 4805, + 5745, + 6926, + 5471, + 1174, + 2259, + 999, + 1333, + 563, + 362, + 1214, + 2982, + 1323, + 1297, + 1045, + 817 + ], + "name": "CMAccount", + "nameLocation": "2622:9:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 3644, + "libraryName": { + "id": 3642, + "name": "Address", + "nameLocations": [ + "2813:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2512, + "src": "2813:7:24" + }, + "nodeType": "UsingForDirective", + "src": "2807:34:24", + "typeName": { + "id": 3643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2825:15:24", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "global": false, + "id": 3648, + "libraryName": { + "id": 3645, + "name": "SafeERC20", + "nameLocations": [ + "2852:9:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2124, + "src": "2852:9:24" + }, + "nodeType": "UsingForDirective", + "src": "2846:27:24", + "typeName": { + "id": 3647, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3646, + "name": "IERC20", + "nameLocations": [ + "2866:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "2866:6:24" + }, + "referencedDeclaration": 1798, + "src": "2866:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "documentation": { + "id": 3649, + "nodeType": "StructuredDocumentation", + "src": "3052:90:24", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 3654, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "3171:13:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "3147:66:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3650, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3147:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3197:15:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 3651, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3187:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3187:26:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3655, + "nodeType": "StructuredDocumentation", + "src": "3220:111:24", + "text": " @notice Bot admin role can add & remove bots and set gas money withdrawal\n parameters." + }, + "functionSelector": "33746274", + "id": 3660, + "mutability": "constant", + "name": "BOT_ADMIN_ROLE", + "nameLocation": "3360:14:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "3336:68:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3656, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3336:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f545f41444d494e5f524f4c45", + "id": 3658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3387:16:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + }, + "value": "BOT_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + } + ], + "id": 3657, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3377:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3377:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3661, + "nodeType": "StructuredDocumentation", + "src": "3411:111:24", + "text": " @notice Cheque operator role can issue cheques to be paid by this CMAccount\n contract." + }, + "functionSelector": "63e86cc8", + "id": 3666, + "mutability": "constant", + "name": "CHEQUE_OPERATOR_ROLE", + "nameLocation": "3551:20:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "3527:80:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3662, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3527:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4348455155455f4f50455241544f525f524f4c45", + "id": 3664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3584:22:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + }, + "value": "CHEQUE_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + } + ], + "id": 3663, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3574:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3574:33:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3667, + "nodeType": "StructuredDocumentation", + "src": "3614:191:24", + "text": " @notice Gas withdrawer role can withdraw gas money from the contract. This is\n intended to be used by the bots and is granted when `addMessengerBot` is\n called." + }, + "functionSelector": "383aba87", + "id": 3672, + "mutability": "constant", + "name": "GAS_WITHDRAWER_ROLE", + "nameLocation": "3834:19:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "3810:78:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3668, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3810:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4741535f574954484452415745525f524f4c45", + "id": 3670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3866:21:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + }, + "value": "GAS_WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + } + ], + "id": 3669, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3856:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3856:32:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3673, + "nodeType": "StructuredDocumentation", + "src": "3895:80:24", + "text": " @notice Withdrawer role can withdraw funds from the contract." + }, + "functionSelector": "85f438c1", + "id": 3678, + "mutability": "constant", + "name": "WITHDRAWER_ROLE", + "nameLocation": "4004:15:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "3980:70:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3980:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "574954484452415745525f524f4c45", + "id": 3676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4032:17:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + }, + "value": "WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + } + ], + "id": 3675, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4022:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4022:28:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3679, + "nodeType": "StructuredDocumentation", + "src": "4057:226:24", + "text": " @notice Booking operator role can mint and buy booking tokens using the\n functions on this contract. This is generally used by the bots. The\n price for the booking token is paid by this contract." + }, + "functionSelector": "852b3ccb", + "id": 3684, + "mutability": "constant", + "name": "BOOKING_OPERATOR_ROLE", + "nameLocation": "4312:21:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "4288:82:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3680, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4288:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f4f4b494e475f4f50455241544f525f524f4c45", + "id": 3682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4346:23:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + }, + "value": "BOOKING_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + } + ], + "id": 3681, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4336:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4336:34:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 3685, + "nodeType": "StructuredDocumentation", + "src": "4377:91:24", + "text": " @notice Service admin role can add & remove supported & wanted services." + }, + "functionSelector": "d09445c2", + "id": 3690, + "mutability": "constant", + "name": "SERVICE_ADMIN_ROLE", + "nameLocation": "4497:18:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "4473:76:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3686, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4473:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "534552564943455f41444d494e5f524f4c45", + "id": 3688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:20:24", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + }, + "value": "SERVICE_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + } + ], + "id": 3687, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4518:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4518:31:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "CMAccount.CMAccountStorage", + "documentation": { + "id": 3691, + "nodeType": "StructuredDocumentation", + "src": "4729:71:24", + "text": "@custom:storage-location erc7201:camino.messenger.storage.CMAccount" + }, + "id": 3701, + "members": [ + { + "constant": false, + "id": 3694, + "mutability": "mutable", + "name": "_manager", + "nameLocation": "4919:8:24", + "nodeType": "VariableDeclaration", + "scope": 3701, + "src": "4911:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4911:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3697, + "mutability": "mutable", + "name": "_bookingToken", + "nameLocation": "5022:13:24", + "nodeType": "VariableDeclaration", + "scope": 3701, + "src": "5014:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5014:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3700, + "mutability": "mutable", + "name": "_prefundAmount", + "nameLocation": "5108:14:24", + "nodeType": "VariableDeclaration", + "scope": 3701, + "src": "5100:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5100:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountStorage", + "nameLocation": "4812:16:24", + "nodeType": "StructDefinition", + "scope": 4805, + "src": "4805:324:24", + "visibility": "public" + }, + { + "constant": true, + "id": 3704, + "mutability": "constant", + "name": "CMAccountStorageLocation", + "nameLocation": "5278:24:24", + "nodeType": "VariableDeclaration", + "scope": 4805, + "src": "5253:126:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3702, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5253:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830633762373337393663376363383962396638343962393035366139333230306562613734313838316535376131623033623962656462326330653037313030", + "id": 3703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5313:66:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_5645873346375426079033729947690106159612509051670143668876781420921770504448_by_1", + "typeString": "int_const 5645...(68 digits omitted)...4448" + }, + "value": "0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100" + }, + "visibility": "private" + }, + { + "body": { + "id": 3711, + "nodeType": "Block", + "src": "5468:83:24", + "statements": [ + { + "AST": { + "nativeSrc": "5487:58:24", + "nodeType": "YulBlock", + "src": "5487:58:24", + "statements": [ + { + "nativeSrc": "5501:34:24", + "nodeType": "YulAssignment", + "src": "5501:34:24", + "value": { + "name": "CMAccountStorageLocation", + "nativeSrc": "5511:24:24", + "nodeType": "YulIdentifier", + "src": "5511:24:24" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "5501:6:24", + "nodeType": "YulIdentifier", + "src": "5501:6:24" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3708, + "isOffset": false, + "isSlot": true, + "src": "5501:6:24", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 3704, + "isOffset": false, + "isSlot": false, + "src": "5511:24:24", + "valueSize": 1 + } + ], + "id": 3710, + "nodeType": "InlineAssembly", + "src": "5478:67:24" + } + ] + }, + "id": 3712, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCMAccountStorage", + "nameLocation": "5395:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3705, + "nodeType": "ParameterList", + "parameters": [], + "src": "5415:2:24" + }, + "returnParameters": { + "id": 3709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3708, + "mutability": "mutable", + "name": "$", + "nameLocation": "5465:1:24", + "nodeType": "VariableDeclaration", + "scope": 3712, + "src": "5440:26:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 3707, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3706, + "name": "CMAccountStorage", + "nameLocations": [ + "5440:16:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3701, + "src": "5440:16:24" + }, + "referencedDeclaration": 3701, + "src": "5440:16:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5439:28:24" + }, + "scope": 4805, + "src": "5386:165:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 3713, + "nodeType": "StructuredDocumentation", + "src": "5730:106:24", + "text": " @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded." + }, + "eventSelector": "a3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db4", + "id": 3719, + "name": "CMAccountUpgraded", + "nameLocation": "5847:17:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 3718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3715, + "indexed": true, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "5881:17:24", + "nodeType": "VariableDeclaration", + "scope": 3719, + "src": "5865:33:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5865:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3717, + "indexed": true, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5916:17:24", + "nodeType": "VariableDeclaration", + "scope": 3719, + "src": "5900:33:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5900:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5864:70:24" + }, + "src": "5841:94:24" + }, + { + "anonymous": false, + "documentation": { + "id": 3720, + "nodeType": "StructuredDocumentation", + "src": "5941:77:24", + "text": " @notice Deposit event, emitted when there is a new deposit" + }, + "eventSelector": "e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "id": 3726, + "name": "Deposit", + "nameLocation": "6029:7:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 3725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3722, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6053:6:24", + "nodeType": "VariableDeclaration", + "scope": 3726, + "src": "6037:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3721, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6037:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3724, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6069:6:24", + "nodeType": "VariableDeclaration", + "scope": 3726, + "src": "6061:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6061:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6036:40:24" + }, + "src": "6023:54:24" + }, + { + "anonymous": false, + "documentation": { + "id": 3727, + "nodeType": "StructuredDocumentation", + "src": "6083:81:24", + "text": " @notice Withdraw event, emitted when there is a new withdrawal" + }, + "eventSelector": "884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364", + "id": 3733, + "name": "Withdraw", + "nameLocation": "6175:8:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 3732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3729, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "6200:8:24", + "nodeType": "VariableDeclaration", + "scope": 3733, + "src": "6184:24:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6184:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3731, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6218:6:24", + "nodeType": "VariableDeclaration", + "scope": 3733, + "src": "6210:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6210:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6183:42:24" + }, + "src": "6169:57:24" + }, + { + "anonymous": false, + "documentation": { + "id": 3734, + "nodeType": "StructuredDocumentation", + "src": "6232:46:24", + "text": " @notice Messenger bot added" + }, + "eventSelector": "db3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a873994", + "id": 3738, + "name": "MessengerBotAdded", + "nameLocation": "6289:17:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 3737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3736, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6323:3:24", + "nodeType": "VariableDeclaration", + "scope": 3738, + "src": "6307:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6307:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6306:21:24" + }, + "src": "6283:45:24" + }, + { + "anonymous": false, + "documentation": { + "id": 3739, + "nodeType": "StructuredDocumentation", + "src": "6334:48:24", + "text": " @notice Messenger bot removed" + }, + "eventSelector": "d124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc62913", + "id": 3743, + "name": "MessengerBotRemoved", + "nameLocation": "6393:19:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 3742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3741, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6429:3:24", + "nodeType": "VariableDeclaration", + "scope": 3743, + "src": "6413:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6413:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6412:21:24" + }, + "src": "6387:47:24" + }, + { + "documentation": { + "id": 3744, + "nodeType": "StructuredDocumentation", + "src": "6613:97:24", + "text": " @notice CMAccount implementation address does not match the one in the manager" + }, + "errorSelector": "d334043e", + "id": 3750, + "name": "CMAccountImplementationMismatch", + "nameLocation": "6721:31:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3746, + "mutability": "mutable", + "name": "latestImplementation", + "nameLocation": "6761:20:24", + "nodeType": "VariableDeclaration", + "scope": 3750, + "src": "6753:28:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6753:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3748, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6791:17:24", + "nodeType": "VariableDeclaration", + "scope": 3750, + "src": "6783:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6783:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6752:57:24" + }, + "src": "6715:95:24" + }, + { + "documentation": { + "id": 3751, + "nodeType": "StructuredDocumentation", + "src": "6816:105:24", + "text": " @notice New implementation is the same as the current implementation, no update needed" + }, + "errorSelector": "82afabc1", + "id": 3757, + "name": "CMAccountNoUpgradeNeeded", + "nameLocation": "6932:24:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3753, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "6965:17:24", + "nodeType": "VariableDeclaration", + "scope": 3757, + "src": "6957:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6957:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3755, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6992:17:24", + "nodeType": "VariableDeclaration", + "scope": 3757, + "src": "6984:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6984:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6956:54:24" + }, + "src": "6926:85:24" + }, + { + "documentation": { + "id": 3758, + "nodeType": "StructuredDocumentation", + "src": "7017:75:24", + "text": " @notice Error to revert with if depositer is not allowed" + }, + "errorSelector": "269ec892", + "id": 3762, + "name": "DepositorNotAllowed", + "nameLocation": "7103:19:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3760, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7131:6:24", + "nodeType": "VariableDeclaration", + "scope": 3762, + "src": "7123:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7123:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7122:16:24" + }, + "src": "7097:42:24" + }, + { + "documentation": { + "id": 3763, + "nodeType": "StructuredDocumentation", + "src": "7145:62:24", + "text": " @notice Error to revert zero value deposits" + }, + "errorSelector": "4a4e0cd2", + "id": 3767, + "name": "ZeroValueDeposit", + "nameLocation": "7218:16:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3765, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7243:6:24", + "nodeType": "VariableDeclaration", + "scope": 3767, + "src": "7235:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7235:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7234:16:24" + }, + "src": "7212:39:24" + }, + { + "documentation": { + "id": 3768, + "nodeType": "StructuredDocumentation", + "src": "7257:79:24", + "text": " @notice Error to revert with if the prefund is not spent yet" + }, + "errorSelector": "8990ec0a", + "id": 3776, + "name": "PrefundNotSpentYet", + "nameLocation": "7347:18:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3770, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "7374:18:24", + "nodeType": "VariableDeclaration", + "scope": 3776, + "src": "7366:26:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7366:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3772, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "7402:11:24", + "nodeType": "VariableDeclaration", + "scope": 3776, + "src": "7394:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7394:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3774, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7423:6:24", + "nodeType": "VariableDeclaration", + "scope": 3776, + "src": "7415:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7415:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7365:65:24" + }, + "src": "7341:90:24" + }, + { + "documentation": { + "id": 3777, + "nodeType": "StructuredDocumentation", + "src": "7437:70:24", + "text": " @notice Error to revert if transfer to zero address" + }, + "errorSelector": "ea553b34", + "id": 3779, + "name": "TransferToZeroAddress", + "nameLocation": "7518:21:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3778, + "nodeType": "ParameterList", + "parameters": [], + "src": "7539:2:24" + }, + "src": "7512:30:24" + }, + { + "body": { + "id": 3786, + "nodeType": "Block", + "src": "7788:39:24", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3783, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "7798:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7798:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3785, + "nodeType": "ExpressionStatement", + "src": "7798:22:24" + } + ] + }, + "documentation": { + "id": 3780, + "nodeType": "StructuredDocumentation", + "src": "7721:48:24", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 3787, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3781, + "nodeType": "ParameterList", + "parameters": [], + "src": "7785:2:24" + }, + "returnParameters": { + "id": 3782, + "nodeType": "ParameterList", + "parameters": [], + "src": "7788:0:24" + }, + "scope": 4805, + "src": "7774:53:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3868, + "nodeType": "Block", + "src": "8020:705:24", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3802, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "8030:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8030:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3804, + "nodeType": "ExpressionStatement", + "src": "8030:22:24" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3805, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "8062:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8062:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3807, + "nodeType": "ExpressionStatement", + "src": "8062:24:24" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3808, + "name": "__ChequeManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4974, + "src": "8096:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8096:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3810, + "nodeType": "ExpressionStatement", + "src": "8096:22:24" + }, + { + "expression": { + "arguments": [ + { + "id": 3812, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "8140:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3813, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "8160:12:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3811, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8129:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 3814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8129:44:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3815, + "nodeType": "ExpressionStatement", + "src": "8129:44:24" + }, + { + "expression": { + "arguments": [ + { + "id": 3817, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "8194:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3818, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "8214:12:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3816, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8183:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 3819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8183:44:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3820, + "nodeType": "ExpressionStatement", + "src": "8183:44:24" + }, + { + "expression": { + "arguments": [ + { + "id": 3822, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3660, + "src": "8248:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3823, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "8264:12:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3821, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8237:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 3824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8237:40:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3825, + "nodeType": "ExpressionStatement", + "src": "8237:40:24" + }, + { + "expression": { + "arguments": [ + { + "id": 3827, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3654, + "src": "8298:13:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3828, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3797, + "src": "8313:8:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3826, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "8287:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 3829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8287:35:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3830, + "nodeType": "ExpressionStatement", + "src": "8287:35:24" + }, + { + "assignments": [ + 3833 + ], + "declarations": [ + { + "constant": false, + "id": 3833, + "mutability": "mutable", + "name": "$", + "nameLocation": "8358:1:24", + "nodeType": "VariableDeclaration", + "scope": 3868, + "src": "8333:26:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 3832, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3831, + "name": "CMAccountStorage", + "nameLocations": [ + "8333:16:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3701, + "src": "8333:16:24" + }, + "referencedDeclaration": 3701, + "src": "8333:16:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3836, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3834, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "8362:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$3701_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 3835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8362:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8333:51:24" + }, + { + "expression": { + "id": 3841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3837, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "8395:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3839, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8397:8:24", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 3694, + "src": "8395:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3840, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3789, + "src": "8408:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8395:20:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3842, + "nodeType": "ExpressionStatement", + "src": "8395:20:24" + }, + { + "expression": { + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3843, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "8425:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8427:13:24", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 3697, + "src": "8425:15:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3846, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3791, + "src": "8443:12:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8425:30:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3848, + "nodeType": "ExpressionStatement", + "src": "8425:30:24" + }, + { + "expression": { + "id": 3853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3849, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "8465:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8467:14:24", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 3700, + "src": "8465:16:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3852, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3793, + "src": "8484:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8465:32:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3854, + "nodeType": "ExpressionStatement", + "src": "8465:32:24" + }, + { + "assignments": [ + 3856 + ], + "declarations": [ + { + "constant": false, + "id": 3856, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "8554:15:24", + "nodeType": "VariableDeclaration", + "scope": 3868, + "src": "8546:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8546:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3858, + "initialValue": { + "hexValue": "3130", + "id": 3857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8572:8:24", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000_by_1", + "typeString": "int_const 10000000000000000000" + }, + "value": "10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8546:34:24" + }, + { + "assignments": [ + 3860 + ], + "declarations": [ + { + "constant": false, + "id": 3860, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "8608:16:24", + "nodeType": "VariableDeclaration", + "scope": 3868, + "src": "8600:24:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8600:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3862, + "initialValue": { + "hexValue": "3234", + "id": 3861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8627:8:24", + "subdenomination": "hours", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "24" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8600:35:24" + }, + { + "expression": { + "arguments": [ + { + "id": 3864, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3856, + "src": "8684:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3865, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3860, + "src": "8701:16:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3863, + "name": "__GasMoneyManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "8661:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8661:57:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3867, + "nodeType": "ExpressionStatement", + "src": "8661:57:24" + } + ] + }, + "functionSelector": "33e1a223", + "id": 3869, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3800, + "kind": "modifierInvocation", + "modifierName": { + "id": 3799, + "name": "initializer", + "nameLocations": [ + "8008:11:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 671, + "src": "8008:11:24" + }, + "nodeType": "ModifierInvocation", + "src": "8008:11:24" + } + ], + "name": "initialize", + "nameLocation": "7842:10:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3789, + "mutability": "mutable", + "name": "manager", + "nameLocation": "7870:7:24", + "nodeType": "VariableDeclaration", + "scope": 3869, + "src": "7862:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7862:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3791, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "7895:12:24", + "nodeType": "VariableDeclaration", + "scope": 3869, + "src": "7887:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3790, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7887:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3793, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "7925:13:24", + "nodeType": "VariableDeclaration", + "scope": 3869, + "src": "7917:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3792, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7917:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3795, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "7956:12:24", + "nodeType": "VariableDeclaration", + "scope": 3869, + "src": "7948:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7948:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3797, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "7986:8:24", + "nodeType": "VariableDeclaration", + "scope": 3869, + "src": "7978:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7978:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7852:148:24" + }, + "returnParameters": { + "id": 3801, + "nodeType": "ParameterList", + "parameters": [], + "src": "8020:0:24" + }, + "scope": 4805, + "src": "7833:892:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3872, + "nodeType": "Block", + "src": "8758:2:24", + "statements": [] + }, + "id": 3873, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3870, + "nodeType": "ParameterList", + "parameters": [], + "src": "8738:2:24" + }, + "returnParameters": { + "id": 3871, + "nodeType": "ParameterList", + "parameters": [], + "src": "8758:0:24" + }, + "scope": 4805, + "src": "8731:29:24", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 5470 + ], + "body": { + "id": 3889, + "nodeType": "Block", + "src": "9123:95:24", + "statements": [ + { + "assignments": [ + 3882 + ], + "declarations": [ + { + "constant": false, + "id": 3882, + "mutability": "mutable", + "name": "$", + "nameLocation": "9158:1:24", + "nodeType": "VariableDeclaration", + "scope": 3889, + "src": "9133:26:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 3881, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3880, + "name": "CMAccountStorage", + "nameLocations": [ + "9133:16:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3701, + "src": "9133:16:24" + }, + "referencedDeclaration": 3701, + "src": "9133:16:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3885, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3883, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "9162:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$3701_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 3884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9162:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9133:51:24" + }, + { + "expression": { + "expression": { + "id": 3886, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "9201:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3887, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9203:8:24", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 3694, + "src": "9201:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3879, + "id": 3888, + "nodeType": "Return", + "src": "9194:17:24" + } + ] + }, + "documentation": { + "id": 3874, + "nodeType": "StructuredDocumentation", + "src": "8939:111:24", + "text": " @notice Returns the CMAccountManager address.\n @return CMAccountManager address" + }, + "functionSelector": "c162d7da", + "id": 3890, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "9064:17:24", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3876, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9096:8:24" + }, + "parameters": { + "id": 3875, + "nodeType": "ParameterList", + "parameters": [], + "src": "9081:2:24" + }, + "returnParameters": { + "id": 3879, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3878, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "9114:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9114:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9113:9:24" + }, + "scope": 4805, + "src": "9055:163:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3905, + "nodeType": "Block", + "src": "9397:100:24", + "statements": [ + { + "assignments": [ + 3898 + ], + "declarations": [ + { + "constant": false, + "id": 3898, + "mutability": "mutable", + "name": "$", + "nameLocation": "9432:1:24", + "nodeType": "VariableDeclaration", + "scope": 3905, + "src": "9407:26:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 3897, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3896, + "name": "CMAccountStorage", + "nameLocations": [ + "9407:16:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3701, + "src": "9407:16:24" + }, + "referencedDeclaration": 3701, + "src": "9407:16:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3901, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3899, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "9436:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$3701_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 3900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9436:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9407:51:24" + }, + { + "expression": { + "expression": { + "id": 3902, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3898, + "src": "9475:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3903, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9477:13:24", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 3697, + "src": "9475:15:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3895, + "id": 3904, + "nodeType": "Return", + "src": "9468:22:24" + } + ] + }, + "documentation": { + "id": 3891, + "nodeType": "StructuredDocumentation", + "src": "9224:104:24", + "text": " @notice Returns the booking token address.\n @return BookingToken address" + }, + "functionSelector": "4f3f4639", + "id": 3906, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingTokenAddress", + "nameLocation": "9342:22:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3892, + "nodeType": "ParameterList", + "parameters": [], + "src": "9364:2:24" + }, + "returnParameters": { + "id": 3895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3894, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3906, + "src": "9388:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9388:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9387:9:24" + }, + "scope": 4805, + "src": "9333:164:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3921, + "nodeType": "Block", + "src": "9657:101:24", + "statements": [ + { + "assignments": [ + 3914 + ], + "declarations": [ + { + "constant": false, + "id": 3914, + "mutability": "mutable", + "name": "$", + "nameLocation": "9692:1:24", + "nodeType": "VariableDeclaration", + "scope": 3921, + "src": "9667:26:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 3913, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3912, + "name": "CMAccountStorage", + "nameLocations": [ + "9667:16:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3701, + "src": "9667:16:24" + }, + "referencedDeclaration": 3701, + "src": "9667:16:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3917, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3915, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "9696:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$3701_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 3916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9696:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9667:51:24" + }, + { + "expression": { + "expression": { + "id": 3918, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3914, + "src": "9735:1:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$3701_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 3919, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9737:14:24", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 3700, + "src": "9735:16:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3911, + "id": 3920, + "nodeType": "Return", + "src": "9728:23:24" + } + ] + }, + "documentation": { + "id": 3907, + "nodeType": "StructuredDocumentation", + "src": "9503:91:24", + "text": " @notice Returns the prefund amount.\n @return prefund amount" + }, + "functionSelector": "c39409e1", + "id": 3922, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPrefundAmount", + "nameLocation": "9608:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3908, + "nodeType": "ParameterList", + "parameters": [], + "src": "9624:2:24" + }, + "returnParameters": { + "id": 3911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3910, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3922, + "src": "9648:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9648:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9647:9:24" + }, + "scope": 4805, + "src": "9599:159:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 953 + ], + "body": { + "id": 3972, + "nodeType": "Block", + "src": "10478:785:24", + "statements": [ + { + "assignments": [ + 3933 + ], + "declarations": [ + { + "constant": false, + "id": 3933, + "mutability": "mutable", + "name": "managerImplementation", + "nameLocation": "10555:21:24", + "nodeType": "VariableDeclaration", + "scope": 3972, + "src": "10547:29:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3932, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10547:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3940, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3935, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3890 + ], + "referencedDeclaration": 3890, + "src": "10597:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10597:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3934, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "10579:17:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 3937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10579:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 3938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10618:24:24", + "memberName": "getAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5909, + "src": "10579:63:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 3939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10579:65:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10547:97:24" + }, + { + "assignments": [ + 3942 + ], + "declarations": [ + { + "constant": false, + "id": 3942, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "10662:17:24", + "nodeType": "VariableDeclaration", + "scope": 3972, + "src": "10654:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10654:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3946, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 3943, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "10682:12:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1674_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 3944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10695:17:24", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1432, + "src": "10682:30:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10682:32:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10654:60:24" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3947, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3942, + "src": "10800:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3948, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "10821:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10800:38:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3956, + "nodeType": "IfStatement", + "src": "10796:138:24", + "trueBody": { + "id": 3955, + "nodeType": "Block", + "src": "10840:94:24", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3951, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3942, + "src": "10886:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3952, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "10905:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3950, + "name": "CMAccountNoUpgradeNeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3757, + "src": "10861:24:24", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 3953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10861:62:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3954, + "nodeType": "RevertStatement", + "src": "10854:69:24" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3957, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "11037:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3958, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "11058:21:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11037:42:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3966, + "nodeType": "IfStatement", + "src": "11033:153:24", + "trueBody": { + "id": 3965, + "nodeType": "Block", + "src": "11081:105:24", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3961, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "11134:21:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3962, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "11157:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3960, + "name": "CMAccountImplementationMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3750, + "src": "11102:31:24", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 3963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11102:73:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3964, + "nodeType": "RevertStatement", + "src": "11095:80:24" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 3968, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3942, + "src": "11219:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3969, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "11238:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3967, + "name": "CMAccountUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "11201:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11201:55:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3971, + "nodeType": "EmitStatement", + "src": "11196:60:24" + } + ] + }, + "documentation": { + "id": 3923, + "nodeType": "StructuredDocumentation", + "src": "9937:440:24", + "text": " @notice Authorizes the upgrade of the CMAccount.\n Reverts if the new implementation is the same as the old one.\n Reverts if the new implementation does not match the implementation address\n in the manager. Only implementations registered at the manager are allowed.\n @dev Emits a {CMAccountUpgraded} event.\n @param newImplementation The new implementation address" + }, + "id": 3973, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 3929, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3654, + "src": "10463:13:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3930, + "kind": "modifierInvocation", + "modifierName": { + "id": 3928, + "name": "onlyRole", + "nameLocations": [ + "10454:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10454:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "10454:23:24" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "10391:17:24", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3927, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10445:8:24" + }, + "parameters": { + "id": 3926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3925, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "10417:17:24", + "nodeType": "VariableDeclaration", + "scope": 3973, + "src": "10409:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10409:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10408:27:24" + }, + "returnParameters": { + "id": 3931, + "nodeType": "ParameterList", + "parameters": [], + "src": "10478:0:24" + }, + "scope": 4805, + "src": "10382:881:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 5464 + ], + "body": { + "id": 3987, + "nodeType": "Block", + "src": "11471:58:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3983, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3666, + "src": "11496:20:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3984, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3976, + "src": "11518:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3982, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "11488:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 3985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11488:34:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3981, + "id": 3986, + "nodeType": "Return", + "src": "11481:41:24" + } + ] + }, + "documentation": { + "id": 3974, + "nodeType": "StructuredDocumentation", + "src": "11269:126:24", + "text": " @notice Returns true if an address is authorized to sign cheques\n @param bot The bot's address" + }, + "functionSelector": "e0b78add", + "id": 3988, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "11409:12:24", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3978, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11447:8:24" + }, + "parameters": { + "id": 3977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3976, + "mutability": "mutable", + "name": "bot", + "nameLocation": "11430:3:24", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "11422:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11422:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11421:13:24" + }, + "returnParameters": { + "id": 3981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3980, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3988, + "src": "11465:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3979, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11465:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11464:6:24" + }, + "scope": 4805, + "src": "11400:129:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4036, + "nodeType": "Block", + "src": "11763:987:24", + "statements": [ + { + "assignments": [ + 3995 + ], + "declarations": [ + { + "constant": false, + "id": 3995, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "11781:13:24", + "nodeType": "VariableDeclaration", + "scope": 4036, + "src": "11773:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11773:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3998, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3996, + "name": "getPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3922, + "src": "11797:16:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11797:18:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11773:42:24" + }, + { + "assignments": [ + 4000 + ], + "declarations": [ + { + "constant": false, + "id": 4000, + "mutability": "mutable", + "name": "totalChequePayments", + "nameLocation": "11833:19:24", + "nodeType": "VariableDeclaration", + "scope": 4036, + "src": "11825:27:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11825:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4003, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4001, + "name": "getTotalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5456, + "src": "11855:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 4002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11855:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11825:54:24" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4004, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4000, + "src": "12036:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4005, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3995, + "src": "12058:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12036:35:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4035, + "nodeType": "IfStatement", + "src": "12032:712:24", + "trueBody": { + "id": 4034, + "nodeType": "Block", + "src": "12073:671:24", + "statements": [ + { + "assignments": [ + 4008 + ], + "declarations": [ + { + "constant": false, + "id": 4008, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "12333:11:24", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "12325:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12325:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4012, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4009, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3995, + "src": "12347:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4010, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4000, + "src": "12363:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12347:35:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12325:57:24" + }, + { + "assignments": [ + 4014 + ], + "declarations": [ + { + "constant": false, + "id": 4014, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "12404:18:24", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "12396:26:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12396:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4022, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 4017, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "12433:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$4805", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$4805", + "typeString": "contract CMAccount" + } + ], + "id": 4016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12425:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12425:7:24", + "typeDescriptions": {} + } + }, + "id": 4018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12425:13:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12439:7:24", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "12425:21:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4020, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "12449:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12425:35:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12396:64:24" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4023, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3991, + "src": "12606:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 4024, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "12615:18:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12606:27:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4033, + "nodeType": "IfStatement", + "src": "12602:132:24", + "trueBody": { + "id": 4032, + "nodeType": "Block", + "src": "12635:99:24", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4027, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "12679:18:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4028, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "12699:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4029, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3991, + "src": "12712:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4026, + "name": "PrefundNotSpentYet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "12660:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 4030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12660:59:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4031, + "nodeType": "RevertStatement", + "src": "12653:66:24" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 3989, + "nodeType": "StructuredDocumentation", + "src": "11535:166:24", + "text": " @notice Verifies if the amount is withdrawable by checking if prefund is spent\n @param amount The amount to check if it's withdrawable" + }, + "id": 4037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkPrefundSpent", + "nameLocation": "11715:18:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3991, + "mutability": "mutable", + "name": "amount", + "nameLocation": "11742:6:24", + "nodeType": "VariableDeclaration", + "scope": 4037, + "src": "11734:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11734:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11733:16:24" + }, + "returnParameters": { + "id": 3993, + "nodeType": "ParameterList", + "parameters": [], + "src": "11763:0:24" + }, + "scope": 4805, + "src": "11706:1044:24", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4065, + "nodeType": "Block", + "src": "13178:204:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4051, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4042, + "src": "13288:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4050, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "13269:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 4052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13269:26:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4053, + "nodeType": "ExpressionStatement", + "src": "13269:26:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4057, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4042, + "src": "13326:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4054, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4040, + "src": "13306:9:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13316:9:24", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2316, + "src": "13306:19:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 4058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13306:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4059, + "nodeType": "ExpressionStatement", + "src": "13306:27:24" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4061, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4040, + "src": "13357:9:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 4062, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4042, + "src": "13368:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4060, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3733, + "src": "13348:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13348:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4064, + "nodeType": "EmitStatement", + "src": "13343:32:24" + } + ] + }, + "documentation": { + "id": 4038, + "nodeType": "StructuredDocumentation", + "src": "12756:308:24", + "text": " @notice Withdraw CAM from the CMAccount\n This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n and withdraw the prefund." + }, + "functionSelector": "f3fef3a3", + "id": 4066, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4045, + "kind": "modifierInvocation", + "modifierName": { + "id": 4044, + "name": "nonReentrant", + "nameLocations": [ + "13139:12:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1114, + "src": "13139:12:24" + }, + "nodeType": "ModifierInvocation", + "src": "13139:12:24" + }, + { + "arguments": [ + { + "id": 4047, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3678, + "src": "13161:15:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4048, + "kind": "modifierInvocation", + "modifierName": { + "id": 4046, + "name": "onlyRole", + "nameLocations": [ + "13152:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "13152:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "13152:25:24" + } + ], + "name": "withdraw", + "nameLocation": "13078:8:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4040, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "13103:9:24", + "nodeType": "VariableDeclaration", + "scope": 4066, + "src": "13087:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13087:15:24", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4042, + "mutability": "mutable", + "name": "amount", + "nameLocation": "13122:6:24", + "nodeType": "VariableDeclaration", + "scope": 4066, + "src": "13114:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13114:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13086:43:24" + }, + "returnParameters": { + "id": 4049, + "nodeType": "ParameterList", + "parameters": [], + "src": "13178:0:24" + }, + "scope": 4805, + "src": "13069:313:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4096, + "nodeType": "Block", + "src": "14114:248:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4087, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3906, + "src": "14201:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14201:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4089, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4069, + "src": "14239:11:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4090, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "14264:3:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 4091, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4073, + "src": "14281:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4092, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4075, + "src": "14314:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4093, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4078, + "src": "14333:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "expression": { + "id": 4084, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5868, + "src": "14150:20:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$5868_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 4086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14171:16:24", + "memberName": "mintBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5793, + "src": "14150:37:24", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$1798_$returns$__$", + "typeString": "function (address,address,string memory,uint256,uint256,contract IERC20)" + } + }, + "id": 4094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14150:205:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4095, + "nodeType": "ExpressionStatement", + "src": "14150:205:24" + } + ] + }, + "documentation": { + "id": 4067, + "nodeType": "StructuredDocumentation", + "src": "13561:330:24", + "text": " @notice Mints booking token.\n @param reservedFor The account to reserve the token for\n @param uri The URI of the token\n @param expirationTimestamp The expiration timestamp\n @param price The price of the token\n @param paymentToken The payment token, if address(0) then native" + }, + "functionSelector": "58e5cae0", + "id": 4097, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4081, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "14091:21:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4082, + "kind": "modifierInvocation", + "modifierName": { + "id": 4080, + "name": "onlyRole", + "nameLocations": [ + "14082:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "14082:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "14082:31:24" + } + ], + "name": "mintBookingToken", + "nameLocation": "13905:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4069, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "13939:11:24", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "13931:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13931:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4071, + "mutability": "mutable", + "name": "uri", + "nameLocation": "13974:3:24", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "13960:17:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4070, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13960:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4073, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "13995:19:24", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "13987:27:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13987:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4075, + "mutability": "mutable", + "name": "price", + "nameLocation": "14032:5:24", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "14024:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14024:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4078, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "14054:12:24", + "nodeType": "VariableDeclaration", + "scope": 4097, + "src": "14047:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4077, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4076, + "name": "IERC20", + "nameLocations": [ + "14047:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "14047:6:24" + }, + "referencedDeclaration": 1798, + "src": "14047:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "13921:151:24" + }, + "returnParameters": { + "id": 4083, + "nodeType": "ParameterList", + "parameters": [], + "src": "14114:0:24" + }, + "scope": 4805, + "src": "13896:466:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4116, + "nodeType": "Block", + "src": "14557:88:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4111, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3906, + "src": "14604:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14604:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4113, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "14630:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4108, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5868, + "src": "14567:20:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$5868_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 4110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14588:15:24", + "memberName": "buyBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5867, + "src": "14567:36:24", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14567:71:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4115, + "nodeType": "ExpressionStatement", + "src": "14567:71:24" + } + ] + }, + "documentation": { + "id": 4098, + "nodeType": "StructuredDocumentation", + "src": "14368:88:24", + "text": " @notice Buys booking token.\n @param tokenId The token id" + }, + "functionSelector": "26687c9f", + "id": 4117, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4103, + "kind": "modifierInvocation", + "modifierName": { + "id": 4102, + "name": "nonReentrant", + "nameLocations": [ + "14512:12:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1114, + "src": "14512:12:24" + }, + "nodeType": "ModifierInvocation", + "src": "14512:12:24" + }, + { + "arguments": [ + { + "id": 4105, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "14534:21:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4106, + "kind": "modifierInvocation", + "modifierName": { + "id": 4104, + "name": "onlyRole", + "nameLocations": [ + "14525:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "14525:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "14525:31:24" + } + ], + "name": "buyBookingToken", + "nameLocation": "14470:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4100, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "14494:7:24", + "nodeType": "VariableDeclaration", + "scope": 4117, + "src": "14486:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14486:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14485:17:24" + }, + "returnParameters": { + "id": 4107, + "nodeType": "ParameterList", + "parameters": [], + "src": "14557:0:24" + }, + "scope": 4805, + "src": "14461:184:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 2258 + ], + "body": { + "id": 4135, + "nodeType": "Block", + "src": "14900:54:24", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 4131, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "14917:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$4805", + "typeString": "contract CMAccount" + } + }, + "id": 4132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14922:16:24", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 4136, + "src": "14917:21:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 4133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14939:8:24", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "14917:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 4130, + "id": 4134, + "nodeType": "Return", + "src": "14910:37:24" + } + ] + }, + "documentation": { + "id": 4118, + "nodeType": "StructuredDocumentation", + "src": "14651:145:24", + "text": " @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n @dev See {IERC721Receiver-onERC721Received}." + }, + "functionSelector": "150b7a02", + "id": 4136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "14810:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4136, + "src": "14827:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14827:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4122, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4136, + "src": "14836:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14836:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4124, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4136, + "src": "14845:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14845:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4126, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4136, + "src": "14854:12:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4125, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14854:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14826:41:24" + }, + "returnParameters": { + "id": 4130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4129, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4136, + "src": "14892:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4128, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "14892:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "14891:8:24" + }, + "scope": 4805, + "src": "14801:153:24", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4168, + "nodeType": "Block", + "src": "15505:133:24", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4150, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4142, + "src": "15519:2:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15533:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15525:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15525:7:24", + "typeDescriptions": {} + } + }, + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15525:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15519:16:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4160, + "nodeType": "IfStatement", + "src": "15515:77:24", + "trueBody": { + "id": 4159, + "nodeType": "Block", + "src": "15537:55:24", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4156, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3779, + "src": "15558:21:24", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15558:23:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4158, + "nodeType": "RevertStatement", + "src": "15551:30:24" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4164, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4142, + "src": "15620:2:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4165, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4144, + "src": "15624:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4161, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4140, + "src": "15601:5:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 4163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15607:12:24", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1884, + "src": "15601:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1798_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$1798_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15601:30:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4167, + "nodeType": "ExpressionStatement", + "src": "15601:30:24" + } + ] + }, + "documentation": { + "id": 4137, + "nodeType": "StructuredDocumentation", + "src": "15133:267:24", + "text": " @notice Transfers ERC20 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC20 token\n @param to The address to transfer the tokens to\n @param amount The amount of tokens to transfer" + }, + "functionSelector": "9db5dbe4", + "id": 4169, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4147, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3678, + "src": "15488:15:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4148, + "kind": "modifierInvocation", + "modifierName": { + "id": 4146, + "name": "onlyRole", + "nameLocations": [ + "15479:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15479:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "15479:25:24" + } + ], + "name": "transferERC20", + "nameLocation": "15414:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4140, + "mutability": "mutable", + "name": "token", + "nameLocation": "15435:5:24", + "nodeType": "VariableDeclaration", + "scope": 4169, + "src": "15428:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4139, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4138, + "name": "IERC20", + "nameLocations": [ + "15428:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "15428:6:24" + }, + "referencedDeclaration": 1798, + "src": "15428:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4142, + "mutability": "mutable", + "name": "to", + "nameLocation": "15450:2:24", + "nodeType": "VariableDeclaration", + "scope": 4169, + "src": "15442:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15442:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4144, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15462:6:24", + "nodeType": "VariableDeclaration", + "scope": 4169, + "src": "15454:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15454:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15427:42:24" + }, + "returnParameters": { + "id": 4149, + "nodeType": "ParameterList", + "parameters": [], + "src": "15505:0:24" + }, + "scope": 4805, + "src": "15405:233:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4205, + "nodeType": "Block", + "src": "16015:153:24", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4183, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4175, + "src": "16029:2:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16043:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16035:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16035:7:24", + "typeDescriptions": {} + } + }, + "id": 4187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16035:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16029:16:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4193, + "nodeType": "IfStatement", + "src": "16025:77:24", + "trueBody": { + "id": 4192, + "nodeType": "Block", + "src": "16047:55:24", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4189, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3779, + "src": "16068:21:24", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16068:23:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4191, + "nodeType": "RevertStatement", + "src": "16061:30:24" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4199, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "16142:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$4805", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$4805", + "typeString": "contract CMAccount" + } + ], + "id": 4198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16134:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16134:7:24", + "typeDescriptions": {} + } + }, + "id": 4200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16134:13:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4201, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4175, + "src": "16149:2:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4202, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4177, + "src": "16153:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4194, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4173, + "src": "16111:5:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2241", + "typeString": "contract IERC721" + } + }, + "id": 4196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16117:16:24", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 2196, + "src": "16111:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" + } + }, + "id": 4203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16111:50:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4204, + "nodeType": "ExpressionStatement", + "src": "16111:50:24" + } + ] + }, + "documentation": { + "id": 4170, + "nodeType": "StructuredDocumentation", + "src": "15644:263:24", + "text": " @notice Transfers ERC721 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC721 token\n @param to The address to transfer the tokens to\n @param tokenId The token id of the token" + }, + "functionSelector": "1aca6376", + "id": 4206, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4180, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3678, + "src": "15998:15:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4181, + "kind": "modifierInvocation", + "modifierName": { + "id": 4179, + "name": "onlyRole", + "nameLocations": [ + "15989:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15989:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "15989:25:24" + } + ], + "name": "transferERC721", + "nameLocation": "15921:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4173, + "mutability": "mutable", + "name": "token", + "nameLocation": "15944:5:24", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "15936:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2241", + "typeString": "contract IERC721" + }, + "typeName": { + "id": 4172, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4171, + "name": "IERC721", + "nameLocations": [ + "15936:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2241, + "src": "15936:7:24" + }, + "referencedDeclaration": 2241, + "src": "15936:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2241", + "typeString": "contract IERC721" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4175, + "mutability": "mutable", + "name": "to", + "nameLocation": "15959:2:24", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "15951:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15951:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4177, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15971:7:24", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "15963:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15963:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15935:44:24" + }, + "returnParameters": { + "id": 4182, + "nodeType": "ParameterList", + "parameters": [], + "src": "16015:0:24" + }, + "scope": 4805, + "src": "15912:256:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4231, + "nodeType": "Block", + "src": "17307:92:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4224, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4209, + "src": "17344:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4223, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "17329:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17329:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4226, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4211, + "src": "17358:3:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4227, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4216, + "src": "17363:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 4228, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4213, + "src": "17377:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4222, + "name": "_addService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6172, + "src": "17317:11:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (bytes32,uint256,string memory[] memory,bool)" + } + }, + "id": 4229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17317:75:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4230, + "nodeType": "ExpressionStatement", + "src": "17317:75:24" + } + ] + }, + "documentation": { + "id": 4207, + "nodeType": "StructuredDocumentation", + "src": "16347:770:24", + "text": " @notice Adds a service to the account as a supported service.\n `serviceName` is defined as pkg + service name in protobuf. For example:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceName Service name to add to the account as a supported service\n @param fee Fee of the service in aCAM (wei in ETH terminology)\n @param capabilities Capabilities of the service (if any, optional)" + }, + "functionSelector": "432cf639", + "id": 4232, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4219, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "17287:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4220, + "kind": "modifierInvocation", + "modifierName": { + "id": 4218, + "name": "onlyRole", + "nameLocations": [ + "17278:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17278:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "17278:28:24" + } + ], + "name": "addService", + "nameLocation": "17131:10:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4217, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4209, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17165:11:24", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "17151:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4208, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17151:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4211, + "mutability": "mutable", + "name": "fee", + "nameLocation": "17194:3:24", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "17186:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17186:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4213, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "17212:14:24", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "17207:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4212, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17207:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4216, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "17252:12:24", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "17236:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4214, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17236:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4215, + "nodeType": "ArrayTypeName", + "src": "17236:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "17141:129:24" + }, + "returnParameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [], + "src": "17307:0:24" + }, + "scope": 4805, + "src": "17122:277:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4247, + "nodeType": "Block", + "src": "17568:60:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4243, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4235, + "src": "17608:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4242, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "17593:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17593:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4241, + "name": "_removeService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6211, + "src": "17578:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 4245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17578:43:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4246, + "nodeType": "ExpressionStatement", + "src": "17578:43:24" + } + ] + }, + "documentation": { + "id": 4233, + "nodeType": "StructuredDocumentation", + "src": "17405:72:24", + "text": " @notice Remove a service from the account by its name" + }, + "functionSelector": "f51acaea", + "id": 4248, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4238, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "17548:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4239, + "kind": "modifierInvocation", + "modifierName": { + "id": 4237, + "name": "onlyRole", + "nameLocations": [ + "17539:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17539:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "17539:28:24" + } + ], + "name": "removeService", + "nameLocation": "17491:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4235, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17519:11:24", + "nodeType": "VariableDeclaration", + "scope": 4248, + "src": "17505:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4234, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17505:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17504:27:24" + }, + "returnParameters": { + "id": 4240, + "nodeType": "ParameterList", + "parameters": [], + "src": "17568:0:24" + }, + "scope": 4805, + "src": "17482:146:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4266, + "nodeType": "Block", + "src": "17809:65:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4261, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4251, + "src": "17849:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4260, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "17834:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17834:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4263, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4253, + "src": "17863:3:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4259, + "name": "_setServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6245, + "src": "17819:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 4264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17819:48:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4265, + "nodeType": "ExpressionStatement", + "src": "17819:48:24" + } + ] + }, + "documentation": { + "id": 4249, + "nodeType": "StructuredDocumentation", + "src": "17646:59:24", + "text": " @notice Set the fee of a service by name" + }, + "functionSelector": "41bf7c69", + "id": 4267, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4256, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "17789:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4257, + "kind": "modifierInvocation", + "modifierName": { + "id": 4255, + "name": "onlyRole", + "nameLocations": [ + "17780:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17780:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "17780:28:24" + } + ], + "name": "setServiceFee", + "nameLocation": "17719:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4251, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "17747:11:24", + "nodeType": "VariableDeclaration", + "scope": 4267, + "src": "17733:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4250, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17733:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4253, + "mutability": "mutable", + "name": "fee", + "nameLocation": "17768:3:24", + "nodeType": "VariableDeclaration", + "scope": 4267, + "src": "17760:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17760:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17732:40:24" + }, + "returnParameters": { + "id": 4258, + "nodeType": "ParameterList", + "parameters": [], + "src": "17809:0:24" + }, + "scope": 4805, + "src": "17710:164:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4285, + "nodeType": "Block", + "src": "18120:87:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4280, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4270, + "src": "18171:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4279, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "18156:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18156:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4282, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4272, + "src": "18185:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4278, + "name": "_setServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6279, + "src": "18130:25:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$", + "typeString": "function (bytes32,bool)" + } + }, + "id": 4283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18130:70:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4284, + "nodeType": "ExpressionStatement", + "src": "18130:70:24" + } + ] + }, + "documentation": { + "id": 4268, + "nodeType": "StructuredDocumentation", + "src": "17904:71:24", + "text": " @notice Set the restricted rate of a service by name" + }, + "functionSelector": "a7d022f8", + "id": 4286, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4275, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18100:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4276, + "kind": "modifierInvocation", + "modifierName": { + "id": 4274, + "name": "onlyRole", + "nameLocations": [ + "18091:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18091:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "18091:28:24" + } + ], + "name": "setServiceRestrictedRate", + "nameLocation": "17989:24:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4270, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18037:11:24", + "nodeType": "VariableDeclaration", + "scope": 4286, + "src": "18023:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4269, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18023:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4272, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "18063:14:24", + "nodeType": "VariableDeclaration", + "scope": 4286, + "src": "18058:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4271, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18058:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "18013:70:24" + }, + "returnParameters": { + "id": 4277, + "nodeType": "ParameterList", + "parameters": [], + "src": "18120:0:24" + }, + "scope": 4805, + "src": "17980:227:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4305, + "nodeType": "Block", + "src": "18459:83:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4300, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4289, + "src": "18508:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4299, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "18493:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18493:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4302, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4292, + "src": "18522:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + ], + "id": 4298, + "name": "_setServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6313, + "src": "18469:23:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory[] memory)" + } + }, + "id": 4303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18469:66:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4304, + "nodeType": "ExpressionStatement", + "src": "18469:66:24" + } + ] + }, + "documentation": { + "id": 4287, + "nodeType": "StructuredDocumentation", + "src": "18238:69:24", + "text": " @notice Set all capabilities for a service by name" + }, + "functionSelector": "ebc20d20", + "id": 4306, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4295, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18439:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4296, + "kind": "modifierInvocation", + "modifierName": { + "id": 4294, + "name": "onlyRole", + "nameLocations": [ + "18430:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18430:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "18430:28:24" + } + ], + "name": "setServiceCapabilities", + "nameLocation": "18321:22:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4289, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18367:11:24", + "nodeType": "VariableDeclaration", + "scope": 4306, + "src": "18353:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4288, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18353:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4292, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "18404:12:24", + "nodeType": "VariableDeclaration", + "scope": 4306, + "src": "18388:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4290, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18388:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4291, + "nodeType": "ArrayTypeName", + "src": "18388:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "18343:79:24" + }, + "returnParameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [], + "src": "18459:0:24" + }, + "scope": 4805, + "src": "18312:230:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4324, + "nodeType": "Block", + "src": "18793:79:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4319, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4309, + "src": "18840:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4318, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "18825:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18825:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4321, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4311, + "src": "18854:10:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4317, + "name": "_addServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6348, + "src": "18803:21:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 4322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18803:62:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4323, + "nodeType": "ExpressionStatement", + "src": "18803:62:24" + } + ] + }, + "documentation": { + "id": 4307, + "nodeType": "StructuredDocumentation", + "src": "18574:73:24", + "text": " @notice Add a single capability to the service by name" + }, + "functionSelector": "7512e55b", + "id": 4325, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4314, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "18773:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4315, + "kind": "modifierInvocation", + "modifierName": { + "id": 4313, + "name": "onlyRole", + "nameLocations": [ + "18764:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18764:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "18764:28:24" + } + ], + "name": "addServiceCapability", + "nameLocation": "18661:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4309, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18705:11:24", + "nodeType": "VariableDeclaration", + "scope": 4325, + "src": "18691:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4308, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18691:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4311, + "mutability": "mutable", + "name": "capability", + "nameLocation": "18740:10:24", + "nodeType": "VariableDeclaration", + "scope": 4325, + "src": "18726:24:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4310, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18726:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18681:75:24" + }, + "returnParameters": { + "id": 4316, + "nodeType": "ParameterList", + "parameters": [], + "src": "18793:0:24" + }, + "scope": 4805, + "src": "18652:220:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4343, + "nodeType": "Block", + "src": "19105:82:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4338, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4328, + "src": "19155:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4337, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "19140:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19140:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4340, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4330, + "src": "19169:10:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4336, + "name": "_removeServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6431, + "src": "19115:24:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 4341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19115:65:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4342, + "nodeType": "ExpressionStatement", + "src": "19115:65:24" + } + ] + }, + "documentation": { + "id": 4326, + "nodeType": "StructuredDocumentation", + "src": "18878:78:24", + "text": " @notice Remove a single capability from the service by name" + }, + "functionSelector": "8c20f574", + "id": 4344, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4333, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "19085:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4334, + "kind": "modifierInvocation", + "modifierName": { + "id": 4332, + "name": "onlyRole", + "nameLocations": [ + "19076:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19076:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "19076:28:24" + } + ], + "name": "removeServiceCapability", + "nameLocation": "18970:23:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4328, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19017:11:24", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "19003:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4327, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19003:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4330, + "mutability": "mutable", + "name": "capability", + "nameLocation": "19052:10:24", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "19038:24:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4329, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19038:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18993:75:24" + }, + "returnParameters": { + "id": 4335, + "nodeType": "ParameterList", + "parameters": [], + "src": "19105:0:24" + }, + "scope": 4805, + "src": "18961:226:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4360, + "nodeType": "Block", + "src": "19423:106:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4357, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4347, + "src": "19510:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4353, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3890 + ], + "referencedDeclaration": 3890, + "src": "19458:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19458:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4352, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "19440:17:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 4355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19440:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 4356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19479:30:24", + "memberName": "getRegisteredServiceHashByName", + "nodeType": "MemberAccess", + "referencedDeclaration": 5933, + "src": "19440:69:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view external returns (bytes32)" + } + }, + "id": 4358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19440:82:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4351, + "id": 4359, + "nodeType": "Return", + "src": "19433:89:24" + } + ] + }, + "documentation": { + "id": 4345, + "nodeType": "StructuredDocumentation", + "src": "19193:131:24", + "text": " @notice Get service hash by name. Returns the keccak256 hash of the service name\n from the account manager" + }, + "id": 4361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceHash", + "nameLocation": "19338:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4347, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19367:11:24", + "nodeType": "VariableDeclaration", + "scope": 4361, + "src": "19353:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4346, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19353:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19352:27:24" + }, + "returnParameters": { + "id": 4351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4350, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "19410:11:24", + "nodeType": "VariableDeclaration", + "scope": 4361, + "src": "19402:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4349, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19402:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "19401:21:24" + }, + "scope": 4805, + "src": "19329:200:24", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4446, + "nodeType": "Block", + "src": "19939:635:24", + "statements": [ + { + "assignments": [ + 4376 + ], + "declarations": [ + { + "constant": false, + "id": 4376, + "mutability": "mutable", + "name": "_serviceHashes", + "nameLocation": "20033:14:24", + "nodeType": "VariableDeclaration", + "scope": 4446, + "src": "20016:31:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4374, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20016:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4375, + "nodeType": "ArrayTypeName", + "src": "20016:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4379, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4377, + "name": "getAllServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6450, + "src": "20050:19:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 4378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20050:21:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20016:55:24" + }, + { + "assignments": [ + 4384 + ], + "declarations": [ + { + "constant": false, + "id": 4384, + "mutability": "mutable", + "name": "_serviceNames", + "nameLocation": "20097:13:24", + "nodeType": "VariableDeclaration", + "scope": 4446, + "src": "20081:29:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4382, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20081:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4383, + "nodeType": "ArrayTypeName", + "src": "20081:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 4391, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4388, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "20126:14:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20141:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20126:21:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "20113:12:24", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 4385, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20117:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4386, + "nodeType": "ArrayTypeName", + "src": "20117:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 4390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20113:35:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20081:67:24" + }, + { + "assignments": [ + 4396 + ], + "declarations": [ + { + "constant": false, + "id": 4396, + "mutability": "mutable", + "name": "_allSupportedServicesList", + "nameLocation": "20175:25:24", + "nodeType": "VariableDeclaration", + "scope": 4446, + "src": "20158:42:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 4394, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4393, + "name": "Service", + "nameLocations": [ + "20158:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5968, + "src": "20158:7:24" + }, + "referencedDeclaration": 5968, + "src": "20158:7:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 4395, + "nodeType": "ArrayTypeName", + "src": "20158:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "id": 4404, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4401, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "20217:14:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20232:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20217:21:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "20203:13:24", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct PartnerConfiguration.Service memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 4398, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4397, + "name": "Service", + "nameLocations": [ + "20207:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5968, + "src": "20207:7:24" + }, + "referencedDeclaration": 5968, + "src": "20207:7:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 4399, + "nodeType": "ArrayTypeName", + "src": "20207:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + } + }, + "id": 4403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20203:36:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20158:81:24" + }, + { + "body": { + "id": 4440, + "nodeType": "Block", + "src": "20302:206:24", + "statements": [ + { + "expression": { + "id": 4428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4416, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4384, + "src": "20316:13:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4418, + "indexExpression": { + "id": 4417, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20330:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20316:16:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 4424, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "20405:14:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4426, + "indexExpression": { + "id": 4425, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20420:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20405:17:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4420, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3890 + ], + "referencedDeclaration": 3890, + "src": "20353:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20353:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4419, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "20335:17:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 4422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20335:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 4423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20374:30:24", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 5940, + "src": "20335:69:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 4427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20335:88:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "20316:107:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 4429, + "nodeType": "ExpressionStatement", + "src": "20316:107:24" + }, + { + "expression": { + "id": 4438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4430, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4396, + "src": "20437:25:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "id": 4432, + "indexExpression": { + "id": 4431, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20463:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "20437:28:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 4434, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "20479:14:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4436, + "indexExpression": { + "id": 4435, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20494:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20479:17:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4433, + "name": "getService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6476, + "src": "20468:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_Service_$5968_memory_ptr_$", + "typeString": "function (bytes32) view returns (struct PartnerConfiguration.Service memory)" + } + }, + "id": 4437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20468:29:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "20437:60:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "id": 4439, + "nodeType": "ExpressionStatement", + "src": "20437:60:24" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4409, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20270:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4410, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "20274:14:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20289:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20274:21:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20270:25:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4441, + "initializationExpression": { + "assignments": [ + 4406 + ], + "declarations": [ + { + "constant": false, + "id": 4406, + "mutability": "mutable", + "name": "i", + "nameLocation": "20263:1:24", + "nodeType": "VariableDeclaration", + "scope": 4441, + "src": "20255:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20255:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4408, + "initialValue": { + "hexValue": "30", + "id": 4407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20267:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20255:13:24" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 4414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "20297:3:24", + "subExpression": { + "id": 4413, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4406, + "src": "20297:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4415, + "nodeType": "ExpressionStatement", + "src": "20297:3:24" + }, + "nodeType": "ForStatement", + "src": "20250:258:24" + }, + { + "expression": { + "components": [ + { + "id": 4442, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4384, + "src": "20526:13:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 4443, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4396, + "src": "20541:25:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + } + ], + "id": 4444, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20525:42:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr_$", + "typeString": "tuple(string memory[] memory,struct PartnerConfiguration.Service memory[] memory)" + } + }, + "functionReturnParameters": 4371, + "id": 4445, + "nodeType": "Return", + "src": "20518:49:24" + } + ] + }, + "documentation": { + "id": 4362, + "nodeType": "StructuredDocumentation", + "src": "19708:116:24", + "text": " @notice Get all supported services. Return a list of service names and a list of service objects." + }, + "functionSelector": "7eec56c7", + "id": 4447, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedServices", + "nameLocation": "19838:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4363, + "nodeType": "ParameterList", + "parameters": [], + "src": "19858:2:24" + }, + "returnParameters": { + "id": 4371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4366, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "19898:12:24", + "nodeType": "VariableDeclaration", + "scope": 4447, + "src": "19882:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4364, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19882:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4365, + "nodeType": "ArrayTypeName", + "src": "19882:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4370, + "mutability": "mutable", + "name": "services", + "nameLocation": "19929:8:24", + "nodeType": "VariableDeclaration", + "scope": 4447, + "src": "19912:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 4368, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4367, + "name": "Service", + "nameLocations": [ + "19912:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5968, + "src": "19912:7:24" + }, + "referencedDeclaration": 5968, + "src": "19912:7:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 4369, + "nodeType": "ArrayTypeName", + "src": "19912:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$5968_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "src": "19881:57:24" + }, + "scope": 4805, + "src": "19829:745:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4461, + "nodeType": "Block", + "src": "20760:66:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4457, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4450, + "src": "20806:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4456, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "20791:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20791:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4455, + "name": "getServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4462, + 6502 + ], + "referencedDeclaration": 6502, + "src": "20777:13:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 4459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20777:42:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4454, + "id": 4460, + "nodeType": "Return", + "src": "20770:49:24" + } + ] + }, + "documentation": { + "id": 4448, + "nodeType": "StructuredDocumentation", + "src": "20580:91:24", + "text": " @notice Get service fee by name. Overloading the getServiceFee function." + }, + "functionSelector": "18274da4", + "id": 4462, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "20685:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4450, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20713:11:24", + "nodeType": "VariableDeclaration", + "scope": 4462, + "src": "20699:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4449, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20699:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20698:27:24" + }, + "returnParameters": { + "id": 4454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4453, + "mutability": "mutable", + "name": "fee", + "nameLocation": "20755:3:24", + "nodeType": "VariableDeclaration", + "scope": 4462, + "src": "20747:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20747:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20746:13:24" + }, + "scope": 4805, + "src": "20676:150:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4476, + "nodeType": "Block", + "src": "21054:77:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4472, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4465, + "src": "21111:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4471, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "21096:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21096:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4470, + "name": "getServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4477, + 6528 + ], + "referencedDeclaration": 6528, + "src": "21071:24:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 4474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21071:53:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4469, + "id": 4475, + "nodeType": "Return", + "src": "21064:60:24" + } + ] + }, + "documentation": { + "id": 4463, + "nodeType": "StructuredDocumentation", + "src": "20832:114:24", + "text": " @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function." + }, + "functionSelector": "b5124635", + "id": 4477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "20960:24:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4465, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20999:11:24", + "nodeType": "VariableDeclaration", + "scope": 4477, + "src": "20985:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4464, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20985:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20984:27:24" + }, + "returnParameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4468, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "21038:14:24", + "nodeType": "VariableDeclaration", + "scope": 4477, + "src": "21033:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4467, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21033:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21032:21:24" + }, + "scope": 4805, + "src": "20951:180:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4492, + "nodeType": "Block", + "src": "21361:75:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4488, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4480, + "src": "21416:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4487, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "21401:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21401:27:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4486, + "name": "getServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4493, + 6555 + ], + "referencedDeclaration": 6555, + "src": "21378:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32) view returns (string memory[] memory)" + } + }, + "id": 4490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21378:51:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 4485, + "id": 4491, + "nodeType": "Return", + "src": "21371:58:24" + } + ] + }, + "documentation": { + "id": 4478, + "nodeType": "StructuredDocumentation", + "src": "21137:109:24", + "text": " @notice Get service capabilities by name. Overloading the getServiceCapabilities function." + }, + "functionSelector": "319d13f3", + "id": 4493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "21260:22:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4480, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "21297:11:24", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "21283:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4479, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21283:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21282:27:24" + }, + "returnParameters": { + "id": 4485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4484, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "21347:12:24", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "21331:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4482, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21331:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4483, + "nodeType": "ArrayTypeName", + "src": "21331:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "21330:30:24" + }, + "scope": 4805, + "src": "21251:185:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4528, + "nodeType": "Block", + "src": "21817:188:24", + "statements": [ + { + "body": { + "id": 4526, + "nodeType": "Block", + "src": "21877:122:24", + "statements": [ + { + "assignments": [ + 4515 + ], + "declarations": [ + { + "constant": false, + "id": 4515, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "21899:11:24", + "nodeType": "VariableDeclaration", + "scope": 4526, + "src": "21891:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4514, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21891:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4521, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 4517, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4497, + "src": "21928:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4519, + "indexExpression": { + "id": 4518, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4504, + "src": "21941:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21928:15:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4516, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "21913:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21913:31:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21891:53:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4523, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "21976:11:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4522, + "name": "_addWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6610, + "src": "21958:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 4524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21958:30:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4525, + "nodeType": "ExpressionStatement", + "src": "21958:30:24" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4507, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4504, + "src": "21847:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4508, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4497, + "src": "21851:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21864:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21851:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21847:23:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4527, + "initializationExpression": { + "assignments": [ + 4504 + ], + "declarations": [ + { + "constant": false, + "id": 4504, + "mutability": "mutable", + "name": "i", + "nameLocation": "21840:1:24", + "nodeType": "VariableDeclaration", + "scope": 4527, + "src": "21832:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21832:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4506, + "initialValue": { + "hexValue": "30", + "id": 4505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21844:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "21832:13:24" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 4512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "21872:3:24", + "subExpression": { + "id": 4511, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4504, + "src": "21872:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4513, + "nodeType": "ExpressionStatement", + "src": "21872:3:24" + }, + "nodeType": "ForStatement", + "src": "21827:172:24" + } + ] + }, + "documentation": { + "id": 4494, + "nodeType": "StructuredDocumentation", + "src": "21615:104:24", + "text": " @notice Adds wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "1c5db99e", + "id": 4529, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4500, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "21797:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4501, + "kind": "modifierInvocation", + "modifierName": { + "id": 4499, + "name": "onlyRole", + "nameLocations": [ + "21788:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "21788:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "21788:28:24" + } + ], + "name": "addWantedServices", + "nameLocation": "21733:17:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4498, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4497, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "21767:12:24", + "nodeType": "VariableDeclaration", + "scope": 4529, + "src": "21751:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4495, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21751:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4496, + "nodeType": "ArrayTypeName", + "src": "21751:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "21750:30:24" + }, + "returnParameters": { + "id": 4502, + "nodeType": "ParameterList", + "parameters": [], + "src": "21817:0:24" + }, + "scope": 4805, + "src": "21724:281:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4564, + "nodeType": "Block", + "src": "22219:191:24", + "statements": [ + { + "body": { + "id": 4562, + "nodeType": "Block", + "src": "22279:125:24", + "statements": [ + { + "assignments": [ + 4551 + ], + "declarations": [ + { + "constant": false, + "id": 4551, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "22301:11:24", + "nodeType": "VariableDeclaration", + "scope": 4562, + "src": "22293:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4550, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22293:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4557, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 4553, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4533, + "src": "22330:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4555, + "indexExpression": { + "id": 4554, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "22343:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22330:15:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 4552, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "22315:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 4556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22315:31:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22293:53:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4559, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4551, + "src": "22381:11:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4558, + "name": "_removeWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6643, + "src": "22360:20:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 4560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22360:33:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4561, + "nodeType": "ExpressionStatement", + "src": "22360:33:24" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4543, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "22249:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4544, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4533, + "src": "22253:12:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22266:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22253:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22249:23:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4563, + "initializationExpression": { + "assignments": [ + 4540 + ], + "declarations": [ + { + "constant": false, + "id": 4540, + "mutability": "mutable", + "name": "i", + "nameLocation": "22242:1:24", + "nodeType": "VariableDeclaration", + "scope": 4563, + "src": "22234:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22234:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4542, + "initialValue": { + "hexValue": "30", + "id": 4541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22246:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22234:13:24" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 4548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22274:3:24", + "subExpression": { + "id": 4547, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "22274:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4549, + "nodeType": "ExpressionStatement", + "src": "22274:3:24" + }, + "nodeType": "ForStatement", + "src": "22229:175:24" + } + ] + }, + "documentation": { + "id": 4530, + "nodeType": "StructuredDocumentation", + "src": "22011:107:24", + "text": " @notice Removes wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "39e4c705", + "id": 4565, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4536, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "22199:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4537, + "kind": "modifierInvocation", + "modifierName": { + "id": 4535, + "name": "onlyRole", + "nameLocations": [ + "22190:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "22190:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "22190:28:24" + } + ], + "name": "removeWantedServices", + "nameLocation": "22132:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4533, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "22169:12:24", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "22153:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4531, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22153:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4532, + "nodeType": "ArrayTypeName", + "src": "22153:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "22152:30:24" + }, + "returnParameters": { + "id": 4538, + "nodeType": "ParameterList", + "parameters": [], + "src": "22219:0:24" + }, + "scope": 4805, + "src": "22123:287:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4621, + "nodeType": "Block", + "src": "22609:450:24", + "statements": [ + { + "assignments": [ + 4576 + ], + "declarations": [ + { + "constant": false, + "id": 4576, + "mutability": "mutable", + "name": "_wantedServiceHashes", + "nameLocation": "22636:20:24", + "nodeType": "VariableDeclaration", + "scope": 4621, + "src": "22619:37:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4574, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22619:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4575, + "nodeType": "ArrayTypeName", + "src": "22619:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4579, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4577, + "name": "getWantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6662, + "src": "22659:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 4578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22659:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22619:64:24" + }, + { + "assignments": [ + 4584 + ], + "declarations": [ + { + "constant": false, + "id": 4584, + "mutability": "mutable", + "name": "_wantedServiceNames", + "nameLocation": "22710:19:24", + "nodeType": "VariableDeclaration", + "scope": 4621, + "src": "22694:35:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4582, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22694:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4583, + "nodeType": "ArrayTypeName", + "src": "22694:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 4591, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4588, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4576, + "src": "22745:20:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22766:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22745:27:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "22732:12:24", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 4585, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22736:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4586, + "nodeType": "ArrayTypeName", + "src": "22736:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 4590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22732:41:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22694:79:24" + }, + { + "body": { + "id": 4617, + "nodeType": "Block", + "src": "22842:174:24", + "statements": [ + { + "expression": { + "id": 4615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4603, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "22856:19:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 4605, + "indexExpression": { + "id": 4604, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "22876:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22856:22:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 4611, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4576, + "src": "22968:20:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4613, + "indexExpression": { + "id": 4612, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "22989:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22968:23:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4607, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3890 + ], + "referencedDeclaration": 3890, + "src": "22899:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22899:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4606, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "22881:17:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 4609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22881:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22920:30:24", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 5940, + "src": "22881:69:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 4614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22881:124:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "22856:149:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 4616, + "nodeType": "ExpressionStatement", + "src": "22856:149:24" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4596, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "22804:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4597, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4576, + "src": "22808:20:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22829:6:24", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "22808:27:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22804:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4618, + "initializationExpression": { + "assignments": [ + 4593 + ], + "declarations": [ + { + "constant": false, + "id": 4593, + "mutability": "mutable", + "name": "i", + "nameLocation": "22797:1:24", + "nodeType": "VariableDeclaration", + "scope": 4618, + "src": "22789:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22789:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4595, + "initialValue": { + "hexValue": "30", + "id": 4594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22801:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22789:13:24" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 4601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "22837:3:24", + "subExpression": { + "id": 4600, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "22837:1:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4602, + "nodeType": "ExpressionStatement", + "src": "22837:3:24" + }, + "nodeType": "ForStatement", + "src": "22784:232:24" + }, + { + "expression": { + "id": 4619, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "23033:19:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 4571, + "id": 4620, + "nodeType": "Return", + "src": "23026:26:24" + } + ] + }, + "documentation": { + "id": 4566, + "nodeType": "StructuredDocumentation", + "src": "22416:108:24", + "text": " @notice Get all wanted services.\n @return serviceNames List of service names" + }, + "functionSelector": "08564c19", + "id": 4622, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServices", + "nameLocation": "22538:17:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4567, + "nodeType": "ParameterList", + "parameters": [], + "src": "22555:2:24" + }, + "returnParameters": { + "id": 4571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4570, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "22595:12:24", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "22579:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 4568, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22579:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 4569, + "nodeType": "ArrayTypeName", + "src": "22579:8:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "22578:30:24" + }, + "scope": 4805, + "src": "22529:530:24", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4635, + "nodeType": "Block", + "src": "23474:59:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4632, + "name": "_isSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4625, + "src": "23513:12:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4631, + "name": "_setOffChainPaymentSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6775, + "src": "23484:28:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23484:42:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4634, + "nodeType": "ExpressionStatement", + "src": "23484:42:24" + } + ] + }, + "documentation": { + "id": 4623, + "nodeType": "StructuredDocumentation", + "src": "23238:139:24", + "text": " @notice Sets if off-chain payment is supported.\n @param _isSupported true if off-chain payment is supported" + }, + "functionSelector": "a31aa039", + "id": 4636, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4628, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "23454:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4629, + "kind": "modifierInvocation", + "modifierName": { + "id": 4627, + "name": "onlyRole", + "nameLocations": [ + "23445:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23445:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "23445:28:24" + } + ], + "name": "setOffChainPaymentSupported", + "nameLocation": "23391:27:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4625, + "mutability": "mutable", + "name": "_isSupported", + "nameLocation": "23424:12:24", + "nodeType": "VariableDeclaration", + "scope": 4636, + "src": "23419:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4624, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23419:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23418:19:24" + }, + "returnParameters": { + "id": 4630, + "nodeType": "ParameterList", + "parameters": [], + "src": "23474:0:24" + }, + "scope": 4805, + "src": "23382:151:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4649, + "nodeType": "Block", + "src": "23748:52:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4646, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4639, + "src": "23777:15:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4645, + "name": "_addSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6696, + "src": "23758:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23758:35:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4648, + "nodeType": "ExpressionStatement", + "src": "23758:35:24" + } + ] + }, + "documentation": { + "id": 4637, + "nodeType": "StructuredDocumentation", + "src": "23539:116:24", + "text": " @notice Adds a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "6d69fcaf", + "id": 4650, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4642, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "23728:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4643, + "kind": "modifierInvocation", + "modifierName": { + "id": 4641, + "name": "onlyRole", + "nameLocations": [ + "23719:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23719:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "23719:28:24" + } + ], + "name": "addSupportedToken", + "nameLocation": "23669:17:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4639, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "23695:15:24", + "nodeType": "VariableDeclaration", + "scope": 4650, + "src": "23687:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23687:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23686:25:24" + }, + "returnParameters": { + "id": 4644, + "nodeType": "ParameterList", + "parameters": [], + "src": "23748:0:24" + }, + "scope": 4805, + "src": "23660:140:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4663, + "nodeType": "Block", + "src": "24021:55:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4660, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4653, + "src": "24053:15:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4659, + "name": "_removeSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6730, + "src": "24031:21:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24031:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4662, + "nodeType": "ExpressionStatement", + "src": "24031:38:24" + } + ] + }, + "documentation": { + "id": 4651, + "nodeType": "StructuredDocumentation", + "src": "23806:119:24", + "text": " @notice Removes a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "76319190", + "id": 4664, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4656, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "24001:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4657, + "kind": "modifierInvocation", + "modifierName": { + "id": 4655, + "name": "onlyRole", + "nameLocations": [ + "23992:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23992:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "23992:28:24" + } + ], + "name": "removeSupportedToken", + "nameLocation": "23939:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4653, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "23968:15:24", + "nodeType": "VariableDeclaration", + "scope": 4664, + "src": "23960:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23960:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23959:25:24" + }, + "returnParameters": { + "id": 4658, + "nodeType": "ParameterList", + "parameters": [], + "src": "24021:0:24" + }, + "scope": 4805, + "src": "23930:146:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4680, + "nodeType": "Block", + "src": "24621:51:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4676, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4667, + "src": "24645:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4677, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4669, + "src": "24660:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4675, + "name": "_addPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "24631:13:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 4678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24631:34:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4679, + "nodeType": "ExpressionStatement", + "src": "24631:34:24" + } + ] + }, + "documentation": { + "id": 4665, + "nodeType": "StructuredDocumentation", + "src": "24255:261:24", + "text": " @notice Add public key with address\n These public keys are intended to be used with for off-chain encryption of private booking data.\n @param pubKeyAddress address of the public key\n @param data public key data" + }, + "functionSelector": "ccde65dc", + "id": 4681, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4672, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "24601:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4673, + "kind": "modifierInvocation", + "modifierName": { + "id": 4671, + "name": "onlyRole", + "nameLocations": [ + "24592:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24592:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "24592:28:24" + } + ], + "name": "addPublicKey", + "nameLocation": "24530:12:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4667, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "24551:13:24", + "nodeType": "VariableDeclaration", + "scope": 4681, + "src": "24543:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24543:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4669, + "mutability": "mutable", + "name": "data", + "nameLocation": "24579:4:24", + "nodeType": "VariableDeclaration", + "scope": 4681, + "src": "24566:17:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4668, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24566:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24542:42:24" + }, + "returnParameters": { + "id": 4674, + "nodeType": "ParameterList", + "parameters": [], + "src": "24621:0:24" + }, + "scope": 4805, + "src": "24521:151:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4694, + "nodeType": "Block", + "src": "24822:48:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4691, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4684, + "src": "24849:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4690, + "name": "_removePublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6874, + "src": "24832:16:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24832:31:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4693, + "nodeType": "ExpressionStatement", + "src": "24832:31:24" + } + ] + }, + "documentation": { + "id": 4682, + "nodeType": "StructuredDocumentation", + "src": "24678:55:24", + "text": " @notice Remove public key by address" + }, + "functionSelector": "e7bfce9a", + "id": 4695, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4687, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "24802:18:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4688, + "kind": "modifierInvocation", + "modifierName": { + "id": 4686, + "name": "onlyRole", + "nameLocations": [ + "24793:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24793:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "24793:28:24" + } + ], + "name": "removePublicKey", + "nameLocation": "24747:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4684, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "24771:13:24", + "nodeType": "VariableDeclaration", + "scope": 4695, + "src": "24763:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24763:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24762:23:24" + }, + "returnParameters": { + "id": 4689, + "nodeType": "ParameterList", + "parameters": [], + "src": "24822:0:24" + }, + "scope": 4805, + "src": "24738:132:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4737, + "nodeType": "Block", + "src": "25211:398:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4707, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4700, + "src": "25308:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4706, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "25289:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 4708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25289:28:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4709, + "nodeType": "ExpressionStatement", + "src": "25289:28:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4711, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3666, + "src": "25369:20:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4712, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4698, + "src": "25391:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4710, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25358:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25358:37:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4714, + "nodeType": "ExpressionStatement", + "src": "25358:37:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4716, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "25416:21:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4717, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4698, + "src": "25439:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4715, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25405:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25405:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4719, + "nodeType": "ExpressionStatement", + "src": "25405:38:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4721, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "25464:19:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4722, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4698, + "src": "25485:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4720, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 522 + ], + "referencedDeclaration": 522, + "src": "25453:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25453:36:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4724, + "nodeType": "ExpressionStatement", + "src": "25453:36:24" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4726, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4698, + "src": "25523:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4725, + "name": "MessengerBotAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3738, + "src": "25505:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25505:22:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4728, + "nodeType": "EmitStatement", + "src": "25500:27:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4734, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4700, + "src": "25593:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 4731, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4698, + "src": "25578:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25570:8:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 4729, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25570:8:24", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 4732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25570:12:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25583:9:24", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2316, + "src": "25570:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 4735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25570:32:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4736, + "nodeType": "ExpressionStatement", + "src": "25570:32:24" + } + ] + }, + "documentation": { + "id": 4696, + "nodeType": "StructuredDocumentation", + "src": "25049:69:24", + "text": " @notice Adds messenger bot with initial gas money." + }, + "functionSelector": "51889d6b", + "id": 4738, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4703, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3660, + "src": "25195:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4704, + "kind": "modifierInvocation", + "modifierName": { + "id": 4702, + "name": "onlyRole", + "nameLocations": [ + "25186:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25186:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "25186:24:24" + } + ], + "name": "addMessengerBot", + "nameLocation": "25132:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4698, + "mutability": "mutable", + "name": "bot", + "nameLocation": "25156:3:24", + "nodeType": "VariableDeclaration", + "scope": 4738, + "src": "25148:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25148:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4700, + "mutability": "mutable", + "name": "gasMoney", + "nameLocation": "25169:8:24", + "nodeType": "VariableDeclaration", + "scope": 4738, + "src": "25161:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25161:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25147:31:24" + }, + "returnParameters": { + "id": 4705, + "nodeType": "ParameterList", + "parameters": [], + "src": "25211:0:24" + }, + "scope": 4805, + "src": "25123:486:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4766, + "nodeType": "Block", + "src": "25764:191:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4748, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3666, + "src": "25786:20:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4749, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4741, + "src": "25808:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4747, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25774:11:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25774:38:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4751, + "nodeType": "ExpressionStatement", + "src": "25774:38:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4753, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "25834:21:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4754, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4741, + "src": "25857:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4752, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25822:11:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25822:39:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4756, + "nodeType": "ExpressionStatement", + "src": "25822:39:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4758, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "25883:19:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4759, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4741, + "src": "25904:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4757, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 562 + ], + "referencedDeclaration": 562, + "src": "25871:11:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 4760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25871:37:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4761, + "nodeType": "ExpressionStatement", + "src": "25871:37:24" + }, + { + "eventCall": { + "arguments": [ + { + "id": 4763, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4741, + "src": "25944:3:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4762, + "name": "MessengerBotRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3743, + "src": "25924:19:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25924:24:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4765, + "nodeType": "EmitStatement", + "src": "25919:29:24" + } + ] + }, + "documentation": { + "id": 4739, + "nodeType": "StructuredDocumentation", + "src": "25615:71:24", + "text": " @notice Removes messenger bot by revoking the roles." + }, + "functionSelector": "c6640e68", + "id": 4767, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4744, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3660, + "src": "25748:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4745, + "kind": "modifierInvocation", + "modifierName": { + "id": 4743, + "name": "onlyRole", + "nameLocations": [ + "25739:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25739:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "25739:24:24" + } + ], + "name": "removeMessengerBot", + "nameLocation": "25700:18:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4741, + "mutability": "mutable", + "name": "bot", + "nameLocation": "25727:3:24", + "nodeType": "VariableDeclaration", + "scope": 4767, + "src": "25719:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25719:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25718:13:24" + }, + "returnParameters": { + "id": 4746, + "nodeType": "ParameterList", + "parameters": [], + "src": "25764:0:24" + }, + "scope": 4805, + "src": "25691:264:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4786, + "nodeType": "Block", + "src": "26378:78:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4779, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4770, + "src": "26407:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4778, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "26388:18:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 4780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26388:26:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4781, + "nodeType": "ExpressionStatement", + "src": "26388:26:24" + }, + { + "expression": { + "arguments": [ + { + "id": 4783, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4770, + "src": "26442:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4782, + "name": "_withdrawGasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5664, + "src": "26424:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26424:25:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4785, + "nodeType": "ExpressionStatement", + "src": "26424:25:24" + } + ] + }, + "documentation": { + "id": 4768, + "nodeType": "StructuredDocumentation", + "src": "26134:147:24", + "text": " @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n @param amount The amount to withdraw in aCAM (wei)" + }, + "functionSelector": "5c988994", + "id": 4787, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4773, + "kind": "modifierInvocation", + "modifierName": { + "id": 4772, + "name": "nonReentrant", + "nameLocations": [ + "26335:12:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1114, + "src": "26335:12:24" + }, + "nodeType": "ModifierInvocation", + "src": "26335:12:24" + }, + { + "arguments": [ + { + "id": 4775, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "26357:19:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4776, + "kind": "modifierInvocation", + "modifierName": { + "id": 4774, + "name": "onlyRole", + "nameLocations": [ + "26348:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26348:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "26348:29:24" + } + ], + "name": "withdrawGasMoney", + "nameLocation": "26295:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4770, + "mutability": "mutable", + "name": "amount", + "nameLocation": "26320:6:24", + "nodeType": "VariableDeclaration", + "scope": 4787, + "src": "26312:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26312:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26311:16:24" + }, + "returnParameters": { + "id": 4777, + "nodeType": "ParameterList", + "parameters": [], + "src": "26378:0:24" + }, + "scope": 4805, + "src": "26286:170:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4803, + "nodeType": "Block", + "src": "26798:54:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4799, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4790, + "src": "26831:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4800, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4792, + "src": "26838:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4798, + "name": "_setGasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5696, + "src": "26808:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 4801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26808:37:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4802, + "nodeType": "ExpressionStatement", + "src": "26808:37:24" + } + ] + }, + "documentation": { + "id": 4788, + "nodeType": "StructuredDocumentation", + "src": "26462:237:24", + "text": " @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n @param limit Amount of gas money to withdraw in wei per period\n @param period Duration of the withdrawal period in seconds" + }, + "functionSelector": "6fc22cd1", + "id": 4804, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 4795, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3660, + "src": "26782:14:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4796, + "kind": "modifierInvocation", + "modifierName": { + "id": 4794, + "name": "onlyRole", + "nameLocations": [ + "26773:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26773:8:24" + }, + "nodeType": "ModifierInvocation", + "src": "26773:24:24" + } + ], + "name": "setGasMoneyWithdrawal", + "nameLocation": "26713:21:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4790, + "mutability": "mutable", + "name": "limit", + "nameLocation": "26743:5:24", + "nodeType": "VariableDeclaration", + "scope": 4804, + "src": "26735:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4789, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26735:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4792, + "mutability": "mutable", + "name": "period", + "nameLocation": "26758:6:24", + "nodeType": "VariableDeclaration", + "scope": 4804, + "src": "26750:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4791, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26750:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26734:31:24" + }, + "returnParameters": { + "id": 4797, + "nodeType": "ParameterList", + "parameters": [], + "src": "26798:0:24" + }, + "scope": 4805, + "src": "26704:148:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4806, + "src": "2613:24241:24", + "usedErrors": [ + 580, + 583, + 844, + 849, + 1076, + 1224, + 1227, + 1406, + 1419, + 1851, + 2267, + 2272, + 2275, + 2633, + 2638, + 2643, + 3750, + 3757, + 3762, + 3767, + 3776, + 3779, + 4913, + 4918, + 4923, + 4930, + 4937, + 4942, + 5528, + 5534, + 6012, + 6016, + 6020, + 6024, + 6028, + 6032, + 6036, + 6040, + 6044 + ], + "usedEvents": [ + 588, + 1236, + 1245, + 1254, + 1385, + 3719, + 3726, + 3733, + 3738, + 3743, + 4908, + 5515, + 5522, + 6048, + 6052, + 6056, + 6060, + 6066, + 6072, + 6076, + 6082, + 6088, + 6092, + 6096, + 6100, + 6104, + 6108 + ] + } + ], + "src": "86:26769:24" + }, + "id": 24 + }, + "contracts/account/ChequeManager.sol": { + "ast": { + "absolutePath": "contracts/account/ChequeManager.sol", + "exportedSymbols": { + "Address": [ + 2512 + ], + "ChequeManager": [ + 5471 + ], + "ECDSA": [ + 2970 + ], + "ICMAccountManager": [ + 5941 + ], + "Initializable": [ + 817 + ], + "ReentrancyGuardUpgradeable": [ + 1174 + ] + }, + "id": 5472, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4807, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "78:23:25" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 4809, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 818, + "src": "103:98:25", + "symbolAliases": [ + { + "foreign": { + "id": 4808, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "112:13:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "id": 4811, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 2971, + "src": "202:77:25", + "symbolAliases": [ + { + "foreign": { + "id": 4810, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2970, + "src": "211:5:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 4813, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 2513, + "src": "280:68:25", + "symbolAliases": [ + { + "foreign": { + "id": 4812, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "289:7:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 4815, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 1175, + "src": "349:118:25", + "symbolAliases": [ + { + "foreign": { + "id": 4814, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1174, + "src": "358:26:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 4817, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 5942, + "src": "490:69:25", + "symbolAliases": [ + { + "foreign": { + "id": 4816, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "499:17:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 4819, + "name": "Initializable", + "nameLocations": [ + "783:13:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "783:13:25" + }, + "id": 4820, + "nodeType": "InheritanceSpecifier", + "src": "783:13:25" + }, + { + "baseName": { + "id": 4821, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "798:26:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1174, + "src": "798:26:25" + }, + "id": 4822, + "nodeType": "InheritanceSpecifier", + "src": "798:26:25" + } + ], + "canonicalName": "ChequeManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 4818, + "nodeType": "StructuredDocumentation", + "src": "561:186:25", + "text": " @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n EIP712 Domain name & version:\n DOMAIN_NAME = \"CaminoMessenger\"\n DOMAIN_VERSION= \"1\"" + }, + "fullyImplemented": false, + "id": 5471, + "linearizedBaseContracts": [ + 5471, + 1174, + 817 + ], + "name": "ChequeManager", + "nameLocation": "766:13:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 4825, + "libraryName": { + "id": 4823, + "name": "ECDSA", + "nameLocations": [ + "837:5:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2970, + "src": "837:5:25" + }, + "nodeType": "UsingForDirective", + "src": "831:24:25", + "typeName": { + "id": 4824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "847:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 4828, + "libraryName": { + "id": 4826, + "name": "Address", + "nameLocations": [ + "866:7:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2512, + "src": "866:7:25" + }, + "nodeType": "UsingForDirective", + "src": "860:34:25", + "typeName": { + "id": 4827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:15:25", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "constant": true, + "documentation": { + "id": 4829, + "nodeType": "StructuredDocumentation", + "src": "1073:282:25", + "text": " @notice Pre-computed hash of the MessengerCheque type\n ```\n keccak256(\n \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n );\n ```" + }, + "functionSelector": "0ede80d6", + "id": 4832, + "mutability": "constant", + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nameLocation": "1384:25:25", + "nodeType": "VariableDeclaration", + "scope": 5471, + "src": "1360:126:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1360:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307838376233386631333133333431363561633262333631663038393636633966636666336139353366613764396439633238363162376630623530343435626362", + "id": 4831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1420:66:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_61379487647325231975175870851730257698711870354100583579540121922932849269707_by_1", + "typeString": "int_const 6137...(69 digits omitted)...9707" + }, + "value": "0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb" + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 4833, + "nodeType": "StructuredDocumentation", + "src": "1493:176:25", + "text": " @notice Pre-computed hash of the EIP712Domain type\n ```\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n ```" + }, + "functionSelector": "20606b70", + "id": 4836, + "mutability": "constant", + "name": "DOMAIN_TYPEHASH", + "nameLocation": "1698:15:25", + "nodeType": "VariableDeclaration", + "scope": 5471, + "src": "1674:108:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4834, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1674:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863326638373837313736623861633662663732313562346164636331653036396266346162383264396162316466303561353761393164343235393335623665", + "id": 4835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1716:66:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_88187701965757127611417972872261012484978315436463057238817294743962586930030_by_1", + "typeString": "int_const 8818...(69 digits omitted)...0030" + }, + "value": "0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e" + }, + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.MessengerCheque", + "documentation": { + "id": 4837, + "nodeType": "StructuredDocumentation", + "src": "1962:66:25", + "text": " @notice Struct representing a Messenger Cheque." + }, + "id": 4852, + "members": [ + { + "constant": false, + "id": 4839, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "2074:13:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2066:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2066:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4841, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "2144:11:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2136:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4840, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2136:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4843, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "2216:5:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2208:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4842, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2208:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4845, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2290:7:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2282:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4844, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2282:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4847, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2361:6:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2353:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4846, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4849, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2417:9:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2409:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4848, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2409:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4851, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2480:9:25", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "2472:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2472:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MessengerCheque", + "nameLocation": "2040:15:25", + "nodeType": "StructDefinition", + "scope": 5471, + "src": "2033:501:25", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.LastCashIn", + "documentation": { + "id": 4853, + "nodeType": "StructuredDocumentation", + "src": "2540:125:25", + "text": " @notice Struct for tracking the counter, amount and timestamps used for the last\n cash-in operation." + }, + "id": 4862, + "members": [ + { + "constant": false, + "id": 4855, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2706:7:25", + "nodeType": "VariableDeclaration", + "scope": 4862, + "src": "2698:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2698:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4857, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2731:6:25", + "nodeType": "VariableDeclaration", + "scope": 4862, + "src": "2723:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2723:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4859, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2755:9:25", + "nodeType": "VariableDeclaration", + "scope": 4862, + "src": "2747:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4858, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2747:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4861, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2782:9:25", + "nodeType": "VariableDeclaration", + "scope": 4862, + "src": "2774:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2774:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "LastCashIn", + "nameLocation": "2677:10:25", + "nodeType": "StructDefinition", + "scope": 5471, + "src": "2670:128:25", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.ChequeManagerStorage", + "documentation": { + "id": 4863, + "nodeType": "StructuredDocumentation", + "src": "2977:75:25", + "text": "@custom:storage-location erc7201:camino.messenger.storage.ChequeManager" + }, + "id": 4878, + "members": [ + { + "constant": false, + "id": 4871, + "mutability": "mutable", + "name": "_lastCashIns", + "nameLocation": "3286:12:25", + "nodeType": "VariableDeclaration", + "scope": 4878, + "src": "3221:77:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "typeName": { + "id": 4870, + "keyName": "fromBot", + "keyNameLocation": "3237:7:25", + "keyType": { + "id": 4865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3229:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3221:64:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 4869, + "keyName": "toBot", + "keyNameLocation": "3264:5:25", + "keyType": { + "id": 4866, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3256:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3248:36:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 4868, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4867, + "name": "LastCashIn", + "nameLocations": [ + "3273:10:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "3273:10:25" + }, + "referencedDeclaration": 4862, + "src": "3273:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4874, + "mutability": "mutable", + "name": "_totalChequePayments", + "nameLocation": "3409:20:25", + "nodeType": "VariableDeclaration", + "scope": 4878, + "src": "3401:28:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3401:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4877, + "mutability": "mutable", + "name": "_domainSeparator", + "nameLocation": "3627:16:25", + "nodeType": "VariableDeclaration", + "scope": 4878, + "src": "3619:24:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4876, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3619:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "ChequeManagerStorage", + "nameLocation": "3064:20:25", + "nodeType": "StructDefinition", + "scope": 5471, + "src": "3057:593:25", + "visibility": "public" + }, + { + "constant": true, + "id": 4881, + "mutability": "constant", + "name": "ChequeManagerStorageLocation", + "nameLocation": "3803:28:25", + "nodeType": "VariableDeclaration", + "scope": 5471, + "src": "3778:130:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4879, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3778:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307831373566376534303064343261663434643965626432346539656665653861326334656437386464663436613833653531613439336165333832633837363030", + "id": 4880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3842:66:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_10571917335441848015806150972609186766746024588459916864546385697503913211392_by_1", + "typeString": "int_const 1057...(69 digits omitted)...1392" + }, + "value": "0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600" + }, + "visibility": "private" + }, + { + "body": { + "id": 4888, + "nodeType": "Block", + "src": "4005:87:25", + "statements": [ + { + "AST": { + "nativeSrc": "4024:62:25", + "nodeType": "YulBlock", + "src": "4024:62:25", + "statements": [ + { + "nativeSrc": "4038:38:25", + "nodeType": "YulAssignment", + "src": "4038:38:25", + "value": { + "name": "ChequeManagerStorageLocation", + "nativeSrc": "4048:28:25", + "nodeType": "YulIdentifier", + "src": "4048:28:25" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "4038:6:25", + "nodeType": "YulIdentifier", + "src": "4038:6:25" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4885, + "isOffset": false, + "isSlot": true, + "src": "4038:6:25", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 4881, + "isOffset": false, + "isSlot": false, + "src": "4048:28:25", + "valueSize": 1 + } + ], + "id": 4887, + "nodeType": "InlineAssembly", + "src": "4015:71:25" + } + ] + }, + "id": 4889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getChequeManagerStorage", + "nameLocation": "3924:24:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4882, + "nodeType": "ParameterList", + "parameters": [], + "src": "3948:2:25" + }, + "returnParameters": { + "id": 4886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4885, + "mutability": "mutable", + "name": "$", + "nameLocation": "4002:1:25", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "3973:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 4884, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4883, + "name": "ChequeManagerStorage", + "nameLocations": [ + "3973:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "3973:20:25" + }, + "referencedDeclaration": 4878, + "src": "3973:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3972:32:25" + }, + "scope": 5471, + "src": "3915:177:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 4890, + "nodeType": "StructuredDocumentation", + "src": "4271:77:25", + "text": " @notice Cash-in event. Emitted when a cheque is cashed in." + }, + "eventSelector": "4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e81", + "id": 4908, + "name": "ChequeCashedIn", + "nameLocation": "4359:14:25", + "nodeType": "EventDefinition", + "parameters": { + "id": 4907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4892, + "indexed": true, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "4399:13:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4383:29:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4383:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4894, + "indexed": true, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "4438:11:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4422:27:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4422:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4896, + "indexed": false, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "4467:7:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4459:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4459:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4898, + "indexed": false, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "4492:5:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4484:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4484:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4900, + "indexed": false, + "mutability": "mutable", + "name": "counter", + "nameLocation": "4515:7:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4507:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4507:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4902, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4540:6:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4532:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4901, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4532:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4904, + "indexed": false, + "mutability": "mutable", + "name": "paidChequeAmount", + "nameLocation": "4564:16:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4556:24:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4556:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4906, + "indexed": false, + "mutability": "mutable", + "name": "paidDeveloperFee", + "nameLocation": "4598:16:25", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "4590:24:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4590:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4373:247:25" + }, + "src": "4353:268:25" + }, + { + "documentation": { + "id": 4909, + "nodeType": "StructuredDocumentation", + "src": "4800:102:25", + "text": " @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`." + }, + "errorSelector": "7b7d696f", + "id": 4913, + "name": "InvalidFromCMAccount", + "nameLocation": "4913:20:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4911, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "4942:13:25", + "nodeType": "VariableDeclaration", + "scope": 4913, + "src": "4934:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4934:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4933:23:25" + }, + "src": "4907:50:25" + }, + { + "documentation": { + "id": 4914, + "nodeType": "StructuredDocumentation", + "src": "4963:94:25", + "text": " @notice `toCMAccount` address is not a registered CMAccount on the manager." + }, + "errorSelector": "3f2c64af", + "id": 4918, + "name": "InvalidToCMAccount", + "nameLocation": "5068:18:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4916, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "5095:11:25", + "nodeType": "VariableDeclaration", + "scope": 4918, + "src": "5087:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5087:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5086:21:25" + }, + "src": "5062:46:25" + }, + { + "documentation": { + "id": 4919, + "nodeType": "StructuredDocumentation", + "src": "5114:68:25", + "text": " @notice The signer is not allowed to sign cheques" + }, + "errorSelector": "491a203a", + "id": 4923, + "name": "NotAllowedToSignCheques", + "nameLocation": "5193:23:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4921, + "mutability": "mutable", + "name": "signer", + "nameLocation": "5225:6:25", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "5217:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5217:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5216:16:25" + }, + "src": "5187:46:25" + }, + { + "documentation": { + "id": 4924, + "nodeType": "StructuredDocumentation", + "src": "5239:138:25", + "text": " @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n recorded counter." + }, + "errorSelector": "44ac9202", + "id": 4930, + "name": "InvalidCounter", + "nameLocation": "5388:14:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4926, + "mutability": "mutable", + "name": "chequeCounter", + "nameLocation": "5411:13:25", + "nodeType": "VariableDeclaration", + "scope": 4930, + "src": "5403:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4925, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5403:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4928, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "5434:11:25", + "nodeType": "VariableDeclaration", + "scope": 4930, + "src": "5426:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5426:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5402:44:25" + }, + "src": "5382:65:25" + }, + { + "documentation": { + "id": 4931, + "nodeType": "StructuredDocumentation", + "src": "5453:82:25", + "text": " @notice Last recorded amount is lower than the cheque's amount." + }, + "errorSelector": "7c83fcf0", + "id": 4937, + "name": "InvalidAmount", + "nameLocation": "5546:13:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4933, + "mutability": "mutable", + "name": "chequeAmount", + "nameLocation": "5568:12:25", + "nodeType": "VariableDeclaration", + "scope": 4937, + "src": "5560:20:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5560:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4935, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "5590:10:25", + "nodeType": "VariableDeclaration", + "scope": 4937, + "src": "5582:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4934, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5582:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5559:42:25" + }, + "src": "5540:62:25" + }, + { + "documentation": { + "id": 4938, + "nodeType": "StructuredDocumentation", + "src": "5608:72:25", + "text": " @notice The cheque is expired at the given timestamp." + }, + "errorSelector": "6453b2e5", + "id": 4942, + "name": "ChequeExpired", + "nameLocation": "5691:13:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4941, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4940, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "5713:9:25", + "nodeType": "VariableDeclaration", + "scope": 4942, + "src": "5705:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5705:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5704:19:25" + }, + "src": "5685:39:25" + }, + { + "body": { + "id": 4973, + "nodeType": "Block", + "src": "6210:229:25", + "statements": [ + { + "assignments": [ + 4950 + ], + "declarations": [ + { + "constant": false, + "id": 4950, + "mutability": "mutable", + "name": "$", + "nameLocation": "6249:1:25", + "nodeType": "VariableDeclaration", + "scope": 4973, + "src": "6220:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 4949, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4948, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6220:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "6220:20:25" + }, + "referencedDeclaration": 4878, + "src": "6220:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 4953, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4951, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "6253:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 4952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6253:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6220:59:25" + }, + { + "expression": { + "id": 4971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4954, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "6290:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 4956, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6292:16:25", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 4877, + "src": "6290:18:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 4960, + "name": "DOMAIN_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4836, + "src": "6345:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "43616d696e6f4d657373656e676572", + "id": 4962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6372:17:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + }, + "value": "CaminoMessenger" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + } + ], + "id": 4961, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6362:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6362:28:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 4965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6402:3:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 4964, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6392:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6392:14:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 4967, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6408:5:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 4968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6414:7:25", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "6408:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4958, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6334:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6338:6:25", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6334:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6334:88:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4957, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6311:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6311:121:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6290:142:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4972, + "nodeType": "ExpressionStatement", + "src": "6290:142:25" + } + ] + }, + "documentation": { + "id": 4943, + "nodeType": "StructuredDocumentation", + "src": "5903:244:25", + "text": " @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n the domain.\n EIP712Domain {\n string name;\n string version;\n uint256 chainid;\n }" + }, + "id": 4974, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 4946, + "kind": "modifierInvocation", + "modifierName": { + "id": 4945, + "name": "onlyInitializing", + "nameLocations": [ + "6193:16:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "6193:16:25" + }, + "nodeType": "ModifierInvocation", + "src": "6193:16:25" + } + ], + "name": "__ChequeManager_init", + "nameLocation": "6161:20:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4944, + "nodeType": "ParameterList", + "parameters": [], + "src": "6181:2:25" + }, + "returnParameters": { + "id": 4947, + "nodeType": "ParameterList", + "parameters": [], + "src": "6210:0:25" + }, + "scope": 5471, + "src": "6152:287:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4989, + "nodeType": "Block", + "src": "6566:111:25", + "statements": [ + { + "assignments": [ + 4982 + ], + "declarations": [ + { + "constant": false, + "id": 4982, + "mutability": "mutable", + "name": "$", + "nameLocation": "6605:1:25", + "nodeType": "VariableDeclaration", + "scope": 4989, + "src": "6576:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 4981, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4980, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6576:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "6576:20:25" + }, + "referencedDeclaration": 4878, + "src": "6576:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 4985, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4983, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "6609:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 4984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6609:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6576:59:25" + }, + { + "expression": { + "expression": { + "id": 4986, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4982, + "src": "6652:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 4987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6654:16:25", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 4877, + "src": "6652:18:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4979, + "id": 4988, + "nodeType": "Return", + "src": "6645:25:25" + } + ] + }, + "documentation": { + "id": 4975, + "nodeType": "StructuredDocumentation", + "src": "6445:56:25", + "text": " @notice Returns the domain separator." + }, + "functionSelector": "ed24911d", + "id": 4990, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDomainSeparator", + "nameLocation": "6515:18:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4976, + "nodeType": "ParameterList", + "parameters": [], + "src": "6533:2:25" + }, + "returnParameters": { + "id": 4979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4978, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "6557:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4977, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6557:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6556:9:25" + }, + "scope": 5471, + "src": "6506:171:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5024, + "nodeType": "Block", + "src": "7056:366:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5013, + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "7144:25:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5014, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4993, + "src": "7191:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5015, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4995, + "src": "7226:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5016, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4997, + "src": "7259:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5017, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4999, + "src": "7286:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5018, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5001, + "src": "7315:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5019, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5003, + "src": "7343:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5020, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5005, + "src": "7374:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5011, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7112:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7116:6:25", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "7112:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7112:289:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5010, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7085:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7085:330:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 5009, + "id": 5023, + "nodeType": "Return", + "src": "7066:349:25" + } + ] + }, + "documentation": { + "id": 4991, + "nodeType": "StructuredDocumentation", + "src": "6683:117:25", + "text": " @notice Returns the hash of the `MessengerCheque` encoded with\n `MESSENGER_CHEQUE_TYPEHASH`." + }, + "functionSelector": "4781ae53", + "id": 5025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashMessengerCheque", + "nameLocation": "6814:19:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4993, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "6851:13:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6843:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6843:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4995, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "6882:11:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6874:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4994, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6874:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4997, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "6911:5:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6903:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6903:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4999, + "mutability": "mutable", + "name": "counter", + "nameLocation": "6934:7:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6926:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6926:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5001, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6959:6:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6951:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5000, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6951:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5003, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "6983:9:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6975:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6975:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5005, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7010:9:25", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "7002:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7002:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6833:192:25" + }, + "returnParameters": { + "id": 5009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5008, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "7047:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7047:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7046:9:25" + }, + "scope": 5471, + "src": "6805:617:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5063, + "nodeType": "Block", + "src": "7791:300:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 5048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7885:10:25", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5049, + "name": "getDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4990, + "src": "7917:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 5050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7917:20:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 5052, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5028, + "src": "7979:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5053, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5030, + "src": "7994:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5054, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5032, + "src": "8007:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5055, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5034, + "src": "8014:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5056, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5036, + "src": "8023:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5057, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5038, + "src": "8031:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5058, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5040, + "src": "8042:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5051, + "name": "hashMessengerCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5025, + "src": "7959:19:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 5059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7959:93:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 5046, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7847:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7851:12:25", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "7847:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7847:223:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5045, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7820:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7820:264:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 5044, + "id": 5062, + "nodeType": "Return", + "src": "7801:283:25" + } + ] + }, + "documentation": { + "id": 5026, + "nodeType": "StructuredDocumentation", + "src": "7428:111:25", + "text": " @notice Returns the hash of the typed data (cheque) with prefix and domain\n separator." + }, + "functionSelector": "c7b5914f", + "id": 5064, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashTypedDataV4", + "nameLocation": "7553:15:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5028, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "7586:13:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7578:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7578:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5030, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "7617:11:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7609:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7609:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5032, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "7646:5:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7638:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7638:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5034, + "mutability": "mutable", + "name": "counter", + "nameLocation": "7669:7:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7661:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5033, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7661:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5036, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7694:6:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7686:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7686:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5038, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "7718:9:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7710:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5037, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7710:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5040, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7745:9:25", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7737:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7737:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7568:192:25" + }, + "returnParameters": { + "id": 5044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5043, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5064, + "src": "7782:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5042, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7782:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7781:9:25" + }, + "scope": 5471, + "src": "7544:547:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5107, + "nodeType": "Block", + "src": "8520:190:25", + "statements": [ + { + "assignments": [ + 5087 + ], + "declarations": [ + { + "constant": false, + "id": 5087, + "mutability": "mutable", + "name": "digest", + "nameLocation": "8538:6:25", + "nodeType": "VariableDeclaration", + "scope": 5107, + "src": "8530:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5086, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8530:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5097, + "initialValue": { + "arguments": [ + { + "id": 5089, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "8563:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5090, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5069, + "src": "8578:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5091, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5071, + "src": "8591:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5092, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5073, + "src": "8598:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5093, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5075, + "src": "8607:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5094, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5077, + "src": "8615:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5095, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5079, + "src": "8626:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5088, + "name": "hashTypedDataV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5064, + "src": "8547:15:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 5096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8547:89:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8530:106:25" + }, + { + "expression": { + "id": 5103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5098, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5084, + "src": "8646:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5101, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5081, + "src": "8670:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5099, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5087, + "src": "8655:6:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8662:7:25", + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 2726, + "src": "8655:14:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 5102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8655:25:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8646:34:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5104, + "nodeType": "ExpressionStatement", + "src": "8646:34:25" + }, + { + "expression": { + "id": 5105, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5084, + "src": "8697:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5085, + "id": 5106, + "nodeType": "Return", + "src": "8690:13:25" + } + ] + }, + "documentation": { + "id": 5065, + "nodeType": "StructuredDocumentation", + "src": "8097:132:25", + "text": " @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n recover the signer." + }, + "id": 5108, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recoverSigner", + "nameLocation": "8243:13:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5067, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "8274:13:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8266:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8266:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5069, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "8305:11:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8297:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8297:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5071, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "8334:5:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8326:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8326:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5073, + "mutability": "mutable", + "name": "counter", + "nameLocation": "8357:7:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8349:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8349:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5075, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8382:6:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8374:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8374:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "8406:9:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8398:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8398:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5079, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "8433:9:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8425:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8425:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5081, + "mutability": "mutable", + "name": "signature", + "nameLocation": "8465:9:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8452:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5080, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8452:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8256:224:25" + }, + "returnParameters": { + "id": 5085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5084, + "mutability": "mutable", + "name": "signer", + "nameLocation": "8512:6:25", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "8504:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5083, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8503:16:25" + }, + "scope": 5471, + "src": "8234:476:25", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5242, + "nodeType": "Block", + "src": "9488:1496:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5132, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5111, + "src": "9555:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 5135, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9580:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ChequeManager_$5471", + "typeString": "contract ChequeManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ChequeManager_$5471", + "typeString": "contract ChequeManager" + } + ], + "id": 5134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9572:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9572:7:25", + "typeDescriptions": {} + } + }, + "id": 5136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9572:13:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9555:30:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5143, + "nodeType": "IfStatement", + "src": "9551:103:25", + "trueBody": { + "id": 5142, + "nodeType": "Block", + "src": "9587:67:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5139, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5111, + "src": "9629:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5138, + "name": "InvalidFromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4913, + "src": "9608:20:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9608:35:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5141, + "nodeType": "RevertStatement", + "src": "9601:42:25" + } + ] + } + }, + { + "condition": { + "id": 5151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9722:64:25", + "subExpression": { + "arguments": [ + { + "id": 5149, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5113, + "src": "9774:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5145, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5470, + "src": "9741:17:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9741:19:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5144, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "9723:17:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 5147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9723:38:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 5148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9762:11:25", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5926, + "src": "9723:50:25", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9723:63:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5157, + "nodeType": "IfStatement", + "src": "9718:133:25", + "trueBody": { + "id": 5156, + "nodeType": "Block", + "src": "9788:63:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5153, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5113, + "src": "9828:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5152, + "name": "InvalidToCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4918, + "src": "9809:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9809:31:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5155, + "nodeType": "RevertStatement", + "src": "9802:38:25" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5158, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "9908:5:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9914:9:25", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "9908:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 5160, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5123, + "src": "9927:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9908:28:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5167, + "nodeType": "IfStatement", + "src": "9904:90:25", + "trueBody": { + "id": 5166, + "nodeType": "Block", + "src": "9938:56:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5163, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5123, + "src": "9973:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5162, + "name": "ChequeExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4942, + "src": "9959:13:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 5164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9959:24:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5165, + "nodeType": "RevertStatement", + "src": "9952:31:25" + } + ] + } + }, + { + "expression": { + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5168, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "10030:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5170, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5111, + "src": "10053:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5171, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5113, + "src": "10068:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5172, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5115, + "src": "10081:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5173, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "10088:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5174, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5119, + "src": "10097:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5175, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5121, + "src": "10105:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5176, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5123, + "src": "10116:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5177, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5125, + "src": "10127:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5169, + "name": "recoverSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5108, + "src": "10039:13:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address)" + } + }, + "id": 5178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10039:98:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10030:107:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5180, + "nodeType": "ExpressionStatement", + "src": "10030:107:25" + }, + { + "condition": { + "id": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10202:21:25", + "subExpression": { + "arguments": [ + { + "id": 5182, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "10216:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5181, + "name": "isBotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5464, + "src": "10203:12:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 5183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10203:20:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5190, + "nodeType": "IfStatement", + "src": "10198:90:25", + "trueBody": { + "id": 5189, + "nodeType": "Block", + "src": "10225:63:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5186, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "10270:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5185, + "name": "NotAllowedToSignCheques", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4923, + "src": "10246:23:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10246:31:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5188, + "nodeType": "RevertStatement", + "src": "10239:38:25" + } + ] + } + }, + { + "assignments": [ + 5193 + ], + "declarations": [ + { + "constant": false, + "id": 5193, + "mutability": "mutable", + "name": "$", + "nameLocation": "10327:1:25", + "nodeType": "VariableDeclaration", + "scope": 5242, + "src": "10298:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 5192, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5191, + "name": "ChequeManagerStorage", + "nameLocations": [ + "10298:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "10298:20:25" + }, + "referencedDeclaration": 4878, + "src": "10298:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5196, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5194, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "10331:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 5195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10331:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10298:59:25" + }, + { + "assignments": [ + 5199 + ], + "declarations": [ + { + "constant": false, + "id": 5199, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "10386:10:25", + "nodeType": "VariableDeclaration", + "scope": 5242, + "src": "10367:29:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 5198, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5197, + "name": "LastCashIn", + "nameLocations": [ + "10367:10:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "10367:10:25" + }, + "referencedDeclaration": 4862, + "src": "10367:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 5206, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 5200, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "10399:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 5201, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10401:12:25", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 4871, + "src": "10399:14:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 5203, + "indexExpression": { + "id": 5202, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "10414:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10399:22:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 5205, + "indexExpression": { + "id": 5204, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5115, + "src": "10422:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10399:29:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10367:61:25" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5207, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5119, + "src": "10521:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 5208, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10530:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5209, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10541:6:25", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4857, + "src": "10530:17:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10521:26:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5218, + "nodeType": "IfStatement", + "src": "10517:104:25", + "trueBody": { + "id": 5217, + "nodeType": "Block", + "src": "10549:72:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5212, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5119, + "src": "10584:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5213, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10592:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5214, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10603:6:25", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4857, + "src": "10592:17:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5211, + "name": "InvalidAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4937, + "src": "10570:13:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10570:40:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5216, + "nodeType": "RevertStatement", + "src": "10563:47:25" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5219, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "10720:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 5220, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10731:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5221, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10742:7:25", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 4855, + "src": "10731:18:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10720:29:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5230, + "nodeType": "IfStatement", + "src": "10716:110:25", + "trueBody": { + "id": 5229, + "nodeType": "Block", + "src": "10751:75:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5224, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "10787:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5225, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10796:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5226, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10807:7:25", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 4855, + "src": "10796:18:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5223, + "name": "InvalidCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4930, + "src": "10772:14:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10772:43:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5228, + "nodeType": "RevertStatement", + "src": "10765:50:25" + } + ] + } + }, + { + "expression": { + "id": 5236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5231, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5130, + "src": "10894:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5232, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5119, + "src": "10910:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 5233, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10919:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5234, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10930:6:25", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4857, + "src": "10919:17:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10910:26:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10894:42:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5237, + "nodeType": "ExpressionStatement", + "src": "10894:42:25" + }, + { + "expression": { + "components": [ + { + "id": 5238, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "10955:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5239, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5130, + "src": "10963:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5240, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10954:23:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 5131, + "id": 5241, + "nodeType": "Return", + "src": "10947:30:25" + } + ] + }, + "documentation": { + "id": 5109, + "nodeType": "StructuredDocumentation", + "src": "8716:461:25", + "text": " @notice Returns signer and payment amount if the signature is valid for the\n given cheque, the signer is an allowed bot, cheque counter and amounts are\n valid according to last cash ins.\n Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n long as the last amount is lower than the cheque amount. Only the difference\n between the cheque amount and the last recorded amount is paid." + }, + "functionSelector": "21b9b929", + "id": 5243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCheque", + "nameLocation": "9191:12:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5111, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "9221:13:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9213:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9213:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5113, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "9252:11:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9244:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9244:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5115, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "9281:5:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9273:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9273:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5117, + "mutability": "mutable", + "name": "counter", + "nameLocation": "9304:7:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9296:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9296:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5119, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9329:6:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9321:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9321:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5121, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "9353:9:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9345:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9345:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5123, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "9380:9:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9372:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9372:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5125, + "mutability": "mutable", + "name": "signature", + "nameLocation": "9412:9:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9399:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9399:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9203:224:25" + }, + "returnParameters": { + "id": 5131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5128, + "mutability": "mutable", + "name": "signer", + "nameLocation": "9457:6:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9449:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9449:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5130, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "9473:13:25", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "9465:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9465:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9448:39:25" + }, + "scope": 5471, + "src": "9182:1802:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5358, + "nodeType": "Block", + "src": "12137:1813:25", + "statements": [ + { + "assignments": [ + 5266, + 5268 + ], + "declarations": [ + { + "constant": false, + "id": 5266, + "mutability": "mutable", + "name": "signer", + "nameLocation": "12223:6:25", + "nodeType": "VariableDeclaration", + "scope": 5358, + "src": "12215:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12215:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5268, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "12239:13:25", + "nodeType": "VariableDeclaration", + "scope": 5358, + "src": "12231:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5267, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12231:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5279, + "initialValue": { + "arguments": [ + { + "id": 5270, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5246, + "src": "12282:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5271, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5248, + "src": "12309:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5272, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5250, + "src": "12334:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5273, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5252, + "src": "12353:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5274, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5254, + "src": "12374:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5275, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5256, + "src": "12394:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5276, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5258, + "src": "12417:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5277, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5260, + "src": "12440:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5269, + "name": "verifyCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5243, + "src": "12256:12:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address,uint256)" + } + }, + "id": 5278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12256:203:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12214:245:25" + }, + { + "expression": { + "arguments": [ + { + "id": 5281, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5266, + "src": "12600:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5282, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5250, + "src": "12608:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5283, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5252, + "src": "12615:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5284, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5254, + "src": "12624:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5285, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5256, + "src": "12632:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5286, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5258, + "src": "12643:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5280, + "name": "setLastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5440, + "src": "12586:13:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 5287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12586:67:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5288, + "nodeType": "ExpressionStatement", + "src": "12586:67:25" + }, + { + "assignments": [ + 5290 + ], + "declarations": [ + { + "constant": false, + "id": 5290, + "mutability": "mutable", + "name": "developerFee", + "nameLocation": "12782:12:25", + "nodeType": "VariableDeclaration", + "scope": 5358, + "src": "12774:20:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12774:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5302, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5291, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5268, + "src": "12798:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5293, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5470, + "src": "12832:17:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12832:19:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5292, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "12814:17:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 5295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12814:38:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 5296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12853:17:25", + "memberName": "getDeveloperFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 5914, + "src": "12814:56:25", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 5297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12814:58:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12798:74:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5299, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12797:76:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130303030", + "id": 5300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12876:5:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "12797:84:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12774:107:25" + }, + { + "assignments": [ + 5304 + ], + "declarations": [ + { + "constant": false, + "id": 5304, + "mutability": "mutable", + "name": "chequePaymentAmount", + "nameLocation": "12954:19:25", + "nodeType": "VariableDeclaration", + "scope": 5358, + "src": "12946:27:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12946:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5308, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5305, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5268, + "src": "12976:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 5306, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5290, + "src": "12992:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12976:28:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12946:58:25" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5309, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5246, + "src": "13097:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 5310, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5248, + "src": "13114:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13097:28:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5325, + "nodeType": "IfStatement", + "src": "13093:171:25", + "trueBody": { + "id": 5324, + "nodeType": "Block", + "src": "13127:137:25", + "statements": [ + { + "assignments": [ + 5314 + ], + "declarations": [ + { + "constant": false, + "id": 5314, + "mutability": "mutable", + "name": "$", + "nameLocation": "13170:1:25", + "nodeType": "VariableDeclaration", + "scope": 5324, + "src": "13141:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 5313, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5312, + "name": "ChequeManagerStorage", + "nameLocations": [ + "13141:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "13141:20:25" + }, + "referencedDeclaration": 4878, + "src": "13141:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5317, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5315, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "13174:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 5316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13174:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13141:59:25" + }, + { + "expression": { + "id": 5322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 5318, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5314, + "src": "13214:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 5320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13216:20:25", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 4874, + "src": "13214:22:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 5321, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5268, + "src": "13240:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13214:39:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5323, + "nodeType": "ExpressionStatement", + "src": "13214:39:25" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 5336, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5290, + "src": "13411:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5329, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5470, + "src": "13358:17:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13358:19:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5328, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "13340:17:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$5941_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 5331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:38:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$5941", + "typeString": "contract ICMAccountManager" + } + }, + "id": 5332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13379:18:25", + "memberName": "getDeveloperWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5919, + "src": "13340:57:25", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 5333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:59:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13332:8:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 5326, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13332:8:25", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 5334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13332:68:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13401:9:25", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2316, + "src": "13332:78:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13332:92:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5338, + "nodeType": "ExpressionStatement", + "src": "13332:92:25" + }, + { + "expression": { + "arguments": [ + { + "id": 5344, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5304, + "src": "13533:19:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 5341, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5248, + "src": "13510:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13502:8:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 5339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13502:8:25", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 5342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13502:20:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13523:9:25", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2316, + "src": "13502:30:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 5345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13502:51:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5346, + "nodeType": "ExpressionStatement", + "src": "13502:51:25" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5348, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5246, + "src": "13627:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5349, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5248, + "src": "13654:11:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5350, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5266, + "src": "13679:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5351, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5250, + "src": "13710:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5352, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5252, + "src": "13729:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5353, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5254, + "src": "13750:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5354, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5304, + "src": "13794:19:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5355, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5290, + "src": "13870:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5347, + "name": "ChequeCashedIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "13599:14:25", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13599:344:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5357, + "nodeType": "EmitStatement", + "src": "13594:349:25" + } + ] + }, + "documentation": { + "id": 5244, + "nodeType": "StructuredDocumentation", + "src": "10990:876:25", + "text": " @notice Cash in a cheque by verifying it and paying the difference between the\n cheque amount and the last recorded amount for the signer and `toBot` pair.\n A percentage of the amount is also paid to the developer wallet.\n @param fromCMAccount The CM Account that will pay the amount. This contract.\n @param toCMAccount The CM Account that will receive the amount.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque. Should be increased with every\n cheque.\n @param amount The amount on the cheque. Should be greater then or equal the\n last recorded amount.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque.\n @param signature The signature of the cheque." + }, + "functionSelector": "647d8f6d", + "id": 5359, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 5263, + "kind": "modifierInvocation", + "modifierName": { + "id": 5262, + "name": "nonReentrant", + "nameLocations": [ + "12124:12:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1114, + "src": "12124:12:25" + }, + "nodeType": "ModifierInvocation", + "src": "12124:12:25" + } + ], + "name": "cashInCheque", + "nameLocation": "11880:12:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5246, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "11910:13:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "11902:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11902:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5248, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "11941:11:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "11933:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11933:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5250, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "11970:5:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "11962:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11962:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5252, + "mutability": "mutable", + "name": "counter", + "nameLocation": "11993:7:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "11985:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11985:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5254, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12018:6:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "12010:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12010:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5256, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "12042:9:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "12034:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12034:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5258, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "12069:9:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "12061:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12061:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5260, + "mutability": "mutable", + "name": "signature", + "nameLocation": "12101:9:25", + "nodeType": "VariableDeclaration", + "scope": 5359, + "src": "12088:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5259, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12088:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11892:224:25" + }, + "returnParameters": { + "id": 5264, + "nodeType": "ParameterList", + "parameters": [], + "src": "12137:0:25" + }, + "scope": 5471, + "src": "11871:2079:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5401, + "nodeType": "Block", + "src": "14727:248:25", + "statements": [ + { + "assignments": [ + 5377 + ], + "declarations": [ + { + "constant": false, + "id": 5377, + "mutability": "mutable", + "name": "$", + "nameLocation": "14766:1:25", + "nodeType": "VariableDeclaration", + "scope": 5401, + "src": "14737:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 5376, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5375, + "name": "ChequeManagerStorage", + "nameLocations": [ + "14737:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "14737:20:25" + }, + "referencedDeclaration": 4878, + "src": "14737:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5380, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5378, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "14770:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 5379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14770:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14737:59:25" + }, + { + "assignments": [ + 5383 + ], + "declarations": [ + { + "constant": false, + "id": 5383, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "14825:10:25", + "nodeType": "VariableDeclaration", + "scope": 5401, + "src": "14806:29:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 5382, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5381, + "name": "LastCashIn", + "nameLocations": [ + "14806:10:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "14806:10:25" + }, + "referencedDeclaration": 4862, + "src": "14806:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 5390, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 5384, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5377, + "src": "14838:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 5385, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14840:12:25", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 4871, + "src": "14838:14:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 5387, + "indexExpression": { + "id": 5386, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5362, + "src": "14853:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14838:23:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 5389, + "indexExpression": { + "id": 5388, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5364, + "src": "14862:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14838:30:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14806:62:25" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 5391, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5383, + "src": "14886:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14897:7:25", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 4855, + "src": "14886:18:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5393, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5383, + "src": "14906:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5394, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14917:6:25", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4857, + "src": "14906:17:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5395, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5383, + "src": "14925:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5396, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14936:9:25", + "memberName": "createdAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 4859, + "src": "14925:20:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5397, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5383, + "src": "14947:10:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 5398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14958:9:25", + "memberName": "expiresAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "14947:20:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5399, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14885:83:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 5374, + "id": 5400, + "nodeType": "Return", + "src": "14878:90:25" + } + ] + }, + "documentation": { + "id": 5360, + "nodeType": "StructuredDocumentation", + "src": "13956:581:25", + "text": " @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n @return lastCounter The last counter of the cheque.\n @return lastAmount The last amount of the cheque.\n @return lastCreatedAt The last creation timestamp of the cheque.\n @return lastExpiresAt The last expiration timestamp of the cheque." + }, + "functionSelector": "930659eb", + "id": 5402, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLastCashIn", + "nameLocation": "14551:13:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5362, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "14582:7:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14574:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14574:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5364, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "14607:5:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14599:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14599:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14564:54:25" + }, + "returnParameters": { + "id": 5374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5367, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "14648:11:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14640:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14640:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5369, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "14669:10:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14661:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5368, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14661:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5371, + "mutability": "mutable", + "name": "lastCreatedAt", + "nameLocation": "14689:13:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14681:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14681:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5373, + "mutability": "mutable", + "name": "lastExpiresAt", + "nameLocation": "14712:13:25", + "nodeType": "VariableDeclaration", + "scope": 5402, + "src": "14704:21:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14704:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14639:87:25" + }, + "scope": 5471, + "src": "14542:433:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5439, + "nodeType": "Block", + "src": "15619:168:25", + "statements": [ + { + "assignments": [ + 5420 + ], + "declarations": [ + { + "constant": false, + "id": 5420, + "mutability": "mutable", + "name": "$", + "nameLocation": "15658:1:25", + "nodeType": "VariableDeclaration", + "scope": 5439, + "src": "15629:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 5419, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5418, + "name": "ChequeManagerStorage", + "nameLocations": [ + "15629:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "15629:20:25" + }, + "referencedDeclaration": 4878, + "src": "15629:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5423, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5421, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "15662:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 5422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15662:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15629:59:25" + }, + { + "expression": { + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 5424, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5420, + "src": "15698:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 5428, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15700:12:25", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 4871, + "src": "15698:14:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 5429, + "indexExpression": { + "id": 5426, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5405, + "src": "15713:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15698:23:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$4862_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 5430, + "indexExpression": { + "id": 5427, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5407, + "src": "15722:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15698:30:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5432, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5409, + "src": "15742:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5433, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "15751:6:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5434, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "15759:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5435, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5415, + "src": "15770:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5431, + "name": "LastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4862, + "src": "15731:10:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_LastCashIn_$4862_storage_ptr_$", + "typeString": "type(struct ChequeManager.LastCashIn storage pointer)" + } + }, + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15731:49:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_memory_ptr", + "typeString": "struct ChequeManager.LastCashIn memory" + } + }, + "src": "15698:82:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$4862_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "15698:82:25" + } + ] + }, + "documentation": { + "id": 5403, + "nodeType": "StructuredDocumentation", + "src": "14981:444:25", + "text": " @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque.\n @param amount The amount of the cheque.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque." + }, + "id": 5440, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setLastCashIn", + "nameLocation": "15439:13:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5405, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "15470:7:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15462:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15462:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5407, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "15495:5:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15487:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15487:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5409, + "mutability": "mutable", + "name": "counter", + "nameLocation": "15518:7:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15510:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15510:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5411, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15543:6:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15535:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15535:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5413, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "15567:9:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15559:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15559:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5415, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "15594:9:25", + "nodeType": "VariableDeclaration", + "scope": 5440, + "src": "15586:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15586:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15452:157:25" + }, + "returnParameters": { + "id": 5417, + "nodeType": "ParameterList", + "parameters": [], + "src": "15619:0:25" + }, + "scope": 5471, + "src": "15430:357:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5455, + "nodeType": "Block", + "src": "16035:115:25", + "statements": [ + { + "assignments": [ + 5448 + ], + "declarations": [ + { + "constant": false, + "id": 5448, + "mutability": "mutable", + "name": "$", + "nameLocation": "16074:1:25", + "nodeType": "VariableDeclaration", + "scope": 5455, + "src": "16045:30:25", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 5447, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5446, + "name": "ChequeManagerStorage", + "nameLocations": [ + "16045:20:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4878, + "src": "16045:20:25" + }, + "referencedDeclaration": 4878, + "src": "16045:20:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5451, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5449, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "16078:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$4878_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 5450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16078:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16045:59:25" + }, + { + "expression": { + "expression": { + "id": 5452, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5448, + "src": "16121:1:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$4878_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 5453, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16123:20:25", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 4874, + "src": "16121:22:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5445, + "id": 5454, + "nodeType": "Return", + "src": "16114:29:25" + } + ] + }, + "documentation": { + "id": 5441, + "nodeType": "StructuredDocumentation", + "src": "15793:173:25", + "text": " @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n @return totalChequePayments The total cheque payments made." + }, + "functionSelector": "e96cf7ad", + "id": 5456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTotalChequePayments", + "nameLocation": "15980:22:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5442, + "nodeType": "ParameterList", + "parameters": [], + "src": "16002:2:25" + }, + "returnParameters": { + "id": 5445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5456, + "src": "16026:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16026:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16025:9:25" + }, + "scope": 5471, + "src": "15971:179:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "documentation": { + "id": 5457, + "nodeType": "StructuredDocumentation", + "src": "16329:150:25", + "text": " @notice Abstract function to check if a bot is allowed to sign cheques. This\n must be implemented by the inheriting contract." + }, + "functionSelector": "e0b78add", + "id": 5464, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "16493:12:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5459, + "mutability": "mutable", + "name": "bot", + "nameLocation": "16514:3:25", + "nodeType": "VariableDeclaration", + "scope": 5464, + "src": "16506:11:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16506:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16505:13:25" + }, + "returnParameters": { + "id": 5463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5462, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5464, + "src": "16548:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5461, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16548:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16547:6:25" + }, + "scope": 5471, + "src": "16484:70:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "documentation": { + "id": 5465, + "nodeType": "StructuredDocumentation", + "src": "16560:132:25", + "text": " @notice Abstract function to get the manager address. This must be implemented\n by the inheriting contract." + }, + "functionSelector": "c162d7da", + "id": 5470, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "16706:17:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5466, + "nodeType": "ParameterList", + "parameters": [], + "src": "16723:2:25" + }, + "returnParameters": { + "id": 5469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5470, + "src": "16755:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16755:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16754:9:25" + }, + "scope": 5471, + "src": "16697:67:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 5472, + "src": "748:16018:25", + "usedErrors": [ + 580, + 583, + 1076, + 2267, + 2275, + 2633, + 2638, + 2643, + 4913, + 4918, + 4923, + 4930, + 4937, + 4942 + ], + "usedEvents": [ + 588, + 4908 + ] + } + ], + "src": "78:16689:25" + }, + "id": 25 + }, + "contracts/account/GasMoneyManager.sol": { + "ast": { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "exportedSymbols": { + "Address": [ + 2512 + ], + "GasMoneyManager": [ + 5745 + ], + "Initializable": [ + 817 + ] + }, + "id": 5746, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5473, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "81:23:26" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 5475, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5746, + "sourceUnit": 818, + "src": "106:98:26", + "symbolAliases": [ + { + "foreign": { + "id": 5474, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "115:13:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 5477, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5746, + "sourceUnit": 2513, + "src": "205:68:26", + "symbolAliases": [ + { + "foreign": { + "id": 5476, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2512, + "src": "214:7:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 5479, + "name": "Initializable", + "nameLocations": [ + "499:13:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "499:13:26" + }, + "id": 5480, + "nodeType": "InheritanceSpecifier", + "src": "499:13:26" + } + ], + "canonicalName": "GasMoneyManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 5478, + "nodeType": "StructuredDocumentation", + "src": "275:186:26", + "text": " @title GasMoneyManager\n @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n Gas money withdrawals are restricted to a withdrawal limit and period." + }, + "fullyImplemented": true, + "id": 5745, + "linearizedBaseContracts": [ + 5745, + 817 + ], + "name": "GasMoneyManager", + "nameLocation": "480:15:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 5483, + "libraryName": { + "id": 5481, + "name": "Address", + "nameLocations": [ + "525:7:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2512, + "src": "525:7:26" + }, + "nodeType": "UsingForDirective", + "src": "519:34:26", + "typeName": { + "id": 5482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "537:15:26", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "canonicalName": "GasMoneyManager.GasMoneyStorage", + "documentation": { + "id": 5484, + "nodeType": "StructuredDocumentation", + "src": "732:77:26", + "text": "@custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager" + }, + "id": 5497, + "members": [ + { + "constant": false, + "id": 5488, + "mutability": "mutable", + "name": "_withdrawalPeriodStart", + "nameLocation": "875:22:26", + "nodeType": "VariableDeclaration", + "scope": 5497, + "src": "847:50:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5487, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "855:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "847:27:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5492, + "mutability": "mutable", + "name": "_withdrawnAmount", + "nameLocation": "935:16:26", + "nodeType": "VariableDeclaration", + "scope": 5497, + "src": "907:44:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5491, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "915:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "907:27:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "_withdrawalLimit", + "nameLocation": "969:16:26", + "nodeType": "VariableDeclaration", + "scope": 5497, + "src": "961:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5493, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "961:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5496, + "mutability": "mutable", + "name": "_withdrawalPeriod", + "nameLocation": "1003:17:26", + "nodeType": "VariableDeclaration", + "scope": 5497, + "src": "995:25:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "995:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "GasMoneyStorage", + "nameLocation": "821:15:26", + "nodeType": "StructDefinition", + "scope": 5745, + "src": "814:213:26", + "visibility": "public" + }, + { + "constant": true, + "id": 5500, + "mutability": "constant", + "name": "GasMoneyStorageLocation", + "nameLocation": "1182:23:26", + "nodeType": "VariableDeclaration", + "scope": 5745, + "src": "1157:125:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5498, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839396136353230363330383862366261646165623063376636383036373662616637323036353462346638366635303136373934343438396166363337643030", + "id": 5499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1216:66:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_69497728556064316839636333848025164220971012307620695743052787837524116733184_by_1", + "typeString": "int_const 6949...(69 digits omitted)...3184" + }, + "value": "0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00" + }, + "visibility": "private" + }, + { + "body": { + "id": 5507, + "nodeType": "Block", + "src": "1369:82:26", + "statements": [ + { + "AST": { + "nativeSrc": "1388:57:26", + "nodeType": "YulBlock", + "src": "1388:57:26", + "statements": [ + { + "nativeSrc": "1402:33:26", + "nodeType": "YulAssignment", + "src": "1402:33:26", + "value": { + "name": "GasMoneyStorageLocation", + "nativeSrc": "1412:23:26", + "nodeType": "YulIdentifier", + "src": "1412:23:26" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1402:6:26", + "nodeType": "YulIdentifier", + "src": "1402:6:26" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5504, + "isOffset": false, + "isSlot": true, + "src": "1402:6:26", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5500, + "isOffset": false, + "isSlot": false, + "src": "1412:23:26", + "valueSize": 1 + } + ], + "id": 5506, + "nodeType": "InlineAssembly", + "src": "1379:66:26" + } + ] + }, + "id": 5508, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getGasMoneyStorage", + "nameLocation": "1298:19:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5501, + "nodeType": "ParameterList", + "parameters": [], + "src": "1317:2:26" + }, + "returnParameters": { + "id": 5505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5504, + "mutability": "mutable", + "name": "$", + "nameLocation": "1366:1:26", + "nodeType": "VariableDeclaration", + "scope": 5508, + "src": "1342:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5503, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5502, + "name": "GasMoneyStorage", + "nameLocations": [ + "1342:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "1342:15:26" + }, + "referencedDeclaration": 5497, + "src": "1342:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1341:27:26" + }, + "scope": 5745, + "src": "1289:162:26", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 5509, + "nodeType": "StructuredDocumentation", + "src": "1630:157:26", + "text": " @notice Gas money withdrawal event\n @param withdrawer the address of the withdrawer\n @param amount the amount withdrawn" + }, + "eventSelector": "b9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c2", + "id": 5515, + "name": "GasMoneyWithdrawal", + "nameLocation": "1798:18:26", + "nodeType": "EventDefinition", + "parameters": { + "id": 5514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5511, + "indexed": true, + "mutability": "mutable", + "name": "withdrawer", + "nameLocation": "1833:10:26", + "nodeType": "VariableDeclaration", + "scope": 5515, + "src": "1817:26:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1817:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5513, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1853:6:26", + "nodeType": "VariableDeclaration", + "scope": 5515, + "src": "1845:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1845:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1816:44:26" + }, + "src": "1792:69:26" + }, + { + "anonymous": false, + "documentation": { + "id": 5516, + "nodeType": "StructuredDocumentation", + "src": "1867:195:26", + "text": " @notice Gas money withdrawal limit and period updated event\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "eventSelector": "8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e", + "id": 5522, + "name": "GasMoneyWithdrawalUpdated", + "nameLocation": "2073:25:26", + "nodeType": "EventDefinition", + "parameters": { + "id": 5521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5518, + "indexed": false, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2107:5:26", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "2099:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2099:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5520, + "indexed": false, + "mutability": "mutable", + "name": "period", + "nameLocation": "2122:6:26", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "2114:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2114:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2098:31:26" + }, + "src": "2067:63:26" + }, + { + "errorSelector": "b945e2d8", + "id": 5528, + "name": "WithdrawalLimitExceeded", + "nameLocation": "2315:23:26", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5524, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2347:5:26", + "nodeType": "VariableDeclaration", + "scope": 5528, + "src": "2339:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2339:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5526, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2362:6:26", + "nodeType": "VariableDeclaration", + "scope": 5528, + "src": "2354:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2354:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2338:31:26" + }, + "src": "2309:61:26" + }, + { + "errorSelector": "d54b1887", + "id": 5534, + "name": "WithdrawalLimitExceededForPeriod", + "nameLocation": "2381:32:26", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5530, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2422:5:26", + "nodeType": "VariableDeclaration", + "scope": 5534, + "src": "2414:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5532, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2437:6:26", + "nodeType": "VariableDeclaration", + "scope": 5534, + "src": "2429:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2429:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2413:31:26" + }, + "src": "2375:70:26" + }, + { + "body": { + "id": 5561, + "nodeType": "Block", + "src": "2733:160:26", + "statements": [ + { + "assignments": [ + 5545 + ], + "declarations": [ + { + "constant": false, + "id": 5545, + "mutability": "mutable", + "name": "$", + "nameLocation": "2767:1:26", + "nodeType": "VariableDeclaration", + "scope": 5561, + "src": "2743:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5544, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5543, + "name": "GasMoneyStorage", + "nameLocations": [ + "2743:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "2743:15:26" + }, + "referencedDeclaration": 5497, + "src": "2743:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5548, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5546, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "2771:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$5497_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 5547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2771:21:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2743:49:26" + }, + { + "expression": { + "id": 5553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 5549, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "2802:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2804:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "2802:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5552, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5536, + "src": "2823:15:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2802:36:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5554, + "nodeType": "ExpressionStatement", + "src": "2802:36:26" + }, + { + "expression": { + "id": 5559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 5555, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "2848:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5557, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2850:17:26", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 5496, + "src": "2848:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5558, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5538, + "src": "2870:16:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2848:38:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5560, + "nodeType": "ExpressionStatement", + "src": "2848:38:26" + } + ] + }, + "id": 5562, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 5541, + "kind": "modifierInvocation", + "modifierName": { + "id": 5540, + "name": "onlyInitializing", + "nameLocations": [ + "2716:16:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "2716:16:26" + }, + "nodeType": "ModifierInvocation", + "src": "2716:16:26" + } + ], + "name": "__GasMoneyManager_init", + "nameLocation": "2633:22:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "2664:15:26", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "2656:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2656:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5538, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "2689:16:26", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "2681:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2681:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2655:51:26" + }, + "returnParameters": { + "id": 5542, + "nodeType": "ParameterList", + "parameters": [], + "src": "2733:0:26" + }, + "scope": 5745, + "src": "2624:269:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5663, + "nodeType": "Block", + "src": "3355:1262:26", + "statements": [ + { + "assignments": [ + 5570 + ], + "declarations": [ + { + "constant": false, + "id": 5570, + "mutability": "mutable", + "name": "$", + "nameLocation": "3389:1:26", + "nodeType": "VariableDeclaration", + "scope": 5663, + "src": "3365:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5569, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5568, + "name": "GasMoneyStorage", + "nameLocations": [ + "3365:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "3365:15:26" + }, + "referencedDeclaration": 5497, + "src": "3365:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5573, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5571, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "3393:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$5497_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 5572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:21:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3365:49:26" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5574, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "3496:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 5575, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "3505:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5576, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3507:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "3505:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3496:27:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5585, + "nodeType": "IfStatement", + "src": "3492:116:26", + "trueBody": { + "id": 5584, + "nodeType": "Block", + "src": "3525:83:26", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 5579, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "3570:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3572:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "3570:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5581, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "3590:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5578, + "name": "WithdrawalLimitExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5528, + "src": "3546:23:26", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3546:51:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5583, + "nodeType": "RevertStatement", + "src": "3539:58:26" + } + ] + } + }, + { + "assignments": [ + 5587 + ], + "declarations": [ + { + "constant": false, + "id": 5587, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "3652:11:26", + "nodeType": "VariableDeclaration", + "scope": 5663, + "src": "3644:19:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3644:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5590, + "initialValue": { + "expression": { + "id": 5588, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3666:5:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3672:9:26", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3666:15:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3644:37:26" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5591, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5587, + "src": "3865:11:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 5592, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "3879:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5593, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3881:22:26", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 5488, + "src": "3879:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5596, + "indexExpression": { + "expression": { + "id": 5594, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3904:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3908:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3904:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3879:36:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 5597, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "3918:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3920:17:26", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 5496, + "src": "3918:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3879:58:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3865:72:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5620, + "nodeType": "IfStatement", + "src": "3861:201:26", + "trueBody": { + "id": 5619, + "nodeType": "Block", + "src": "3939:123:26", + "statements": [ + { + "expression": { + "id": 5608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 5601, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "3953:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5605, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3955:16:26", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5492, + "src": "3953:18:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5606, + "indexExpression": { + "expression": { + "id": 5603, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3972:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3976:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3972:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3953:30:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 5607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3986:1:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3953:34:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5609, + "nodeType": "ExpressionStatement", + "src": "3953:34:26" + }, + { + "expression": { + "id": 5617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 5610, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "4001:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5614, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4003:22:26", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 5488, + "src": "4001:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5615, + "indexExpression": { + "expression": { + "id": 5612, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4026:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4030:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4026:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4001:36:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5616, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5587, + "src": "4040:11:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4001:50:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5618, + "nodeType": "ExpressionStatement", + "src": "4001:50:26" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 5621, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "4158:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5622, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4160:16:26", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5492, + "src": "4158:18:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5625, + "indexExpression": { + "expression": { + "id": 5623, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4177:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4181:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4177:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4158:30:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 5626, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "4191:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:39:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 5628, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "4200:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5629, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4202:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "4200:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:60:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5638, + "nodeType": "IfStatement", + "src": "4154:158:26", + "trueBody": { + "id": 5637, + "nodeType": "Block", + "src": "4220:92:26", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 5632, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "4274:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5633, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4276:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "4274:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5634, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "4294:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5631, + "name": "WithdrawalLimitExceededForPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5534, + "src": "4241:32:26", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4241:60:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5636, + "nodeType": "RevertStatement", + "src": "4234:67:26" + } + ] + } + }, + { + "expression": { + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 5639, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5570, + "src": "4434:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4436:16:26", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5492, + "src": "4434:18:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5644, + "indexExpression": { + "expression": { + "id": 5641, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4453:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4457:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4453:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4434:30:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 5645, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "4468:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4434:40:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5647, + "nodeType": "ExpressionStatement", + "src": "4434:40:26" + }, + { + "expression": { + "arguments": [ + { + "id": 5654, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "4549:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 5650, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4527:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4531:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4527:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4519:8:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 5648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4519:8:26", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 5652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4519:19:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4539:9:26", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 2316, + "src": "4519:29:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 5655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4519:37:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5656, + "nodeType": "ExpressionStatement", + "src": "4519:37:26" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 5658, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4591:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4595:6:26", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4591:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5660, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5565, + "src": "4603:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5657, + "name": "GasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5515, + "src": "4572:18:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4572:38:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5662, + "nodeType": "EmitStatement", + "src": "4567:43:26" + } + ] + }, + "documentation": { + "id": 5563, + "nodeType": "StructuredDocumentation", + "src": "3071:227:26", + "text": " @notice Withdraws gas money.\n This functions is intended to be called by the bot to withdraw gas money.\n Inheriting contract should restrict who can call this with a public\n function." + }, + "id": 5664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_withdrawGasMoney", + "nameLocation": "3312:17:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5565, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3338:6:26", + "nodeType": "VariableDeclaration", + "scope": 5664, + "src": "3330:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3330:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3329:16:26" + }, + "returnParameters": { + "id": 5567, + "nodeType": "ParameterList", + "parameters": [], + "src": "3355:0:26" + }, + "scope": 5745, + "src": "3303:1314:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5695, + "nodeType": "Block", + "src": "4891:196:26", + "statements": [ + { + "assignments": [ + 5674 + ], + "declarations": [ + { + "constant": false, + "id": 5674, + "mutability": "mutable", + "name": "$", + "nameLocation": "4925:1:26", + "nodeType": "VariableDeclaration", + "scope": 5695, + "src": "4901:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5673, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5672, + "name": "GasMoneyStorage", + "nameLocations": [ + "4901:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "4901:15:26" + }, + "referencedDeclaration": 5497, + "src": "4901:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5677, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5675, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "4929:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$5497_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 5676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4929:21:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4901:49:26" + }, + { + "expression": { + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 5678, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "4960:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4962:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "4960:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5681, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5667, + "src": "4981:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4960:26:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5683, + "nodeType": "ExpressionStatement", + "src": "4960:26:26" + }, + { + "expression": { + "id": 5688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 5684, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "4996:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5686, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4998:17:26", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 5496, + "src": "4996:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5687, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5669, + "src": "5018:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4996:28:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5689, + "nodeType": "ExpressionStatement", + "src": "4996:28:26" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5691, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5667, + "src": "5066:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5692, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5669, + "src": "5073:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5690, + "name": "GasMoneyWithdrawalUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5522, + "src": "5040:25:26", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5040:40:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5694, + "nodeType": "EmitStatement", + "src": "5035:45:26" + } + ] + }, + "documentation": { + "id": 5665, + "nodeType": "StructuredDocumentation", + "src": "4623:191:26", + "text": " @notice Sets the gas money withdrawal limit and period.\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "id": 5696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setGasMoneyWithdrawal", + "nameLocation": "4828:22:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5667, + "mutability": "mutable", + "name": "limit", + "nameLocation": "4859:5:26", + "nodeType": "VariableDeclaration", + "scope": 5696, + "src": "4851:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5669, + "mutability": "mutable", + "name": "period", + "nameLocation": "4874:6:26", + "nodeType": "VariableDeclaration", + "scope": 5696, + "src": "4866:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4866:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4850:31:26" + }, + "returnParameters": { + "id": 5671, + "nodeType": "ParameterList", + "parameters": [], + "src": "4891:0:26" + }, + "scope": 5745, + "src": "4819:268:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5716, + "nodeType": "Block", + "src": "5346:124:26", + "statements": [ + { + "assignments": [ + 5706 + ], + "declarations": [ + { + "constant": false, + "id": 5706, + "mutability": "mutable", + "name": "$", + "nameLocation": "5380:1:26", + "nodeType": "VariableDeclaration", + "scope": 5716, + "src": "5356:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5705, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5704, + "name": "GasMoneyStorage", + "nameLocations": [ + "5356:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "5356:15:26" + }, + "referencedDeclaration": 5497, + "src": "5356:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5709, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5707, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "5384:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$5497_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5384:21:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5356:49:26" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 5710, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "5423:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5425:16:26", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5494, + "src": "5423:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 5712, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5706, + "src": "5443:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5713, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5445:17:26", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 5496, + "src": "5443:19:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5714, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5422:41:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 5703, + "id": 5715, + "nodeType": "Return", + "src": "5415:48:26" + } + ] + }, + "documentation": { + "id": 5697, + "nodeType": "StructuredDocumentation", + "src": "5093:143:26", + "text": " @notice Returns the gas money withdrawal restrictions.\n @return withdrawalLimit\n @return withdrawalPeriod" + }, + "functionSelector": "658db0af", + "id": 5717, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawal", + "nameLocation": "5250:21:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5698, + "nodeType": "ParameterList", + "parameters": [], + "src": "5271:2:26" + }, + "returnParameters": { + "id": 5703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5700, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "5303:15:26", + "nodeType": "VariableDeclaration", + "scope": 5717, + "src": "5295:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5295:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5702, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "5328:16:26", + "nodeType": "VariableDeclaration", + "scope": 5717, + "src": "5320:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5320:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5294:51:26" + }, + "scope": 5745, + "src": "5241:229:26", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5743, + "nodeType": "Block", + "src": "5889:147:26", + "statements": [ + { + "assignments": [ + 5729 + ], + "declarations": [ + { + "constant": false, + "id": 5729, + "mutability": "mutable", + "name": "$", + "nameLocation": "5923:1:26", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "5899:25:26", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 5728, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5727, + "name": "GasMoneyStorage", + "nameLocations": [ + "5899:15:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5497, + "src": "5899:15:26" + }, + "referencedDeclaration": 5497, + "src": "5899:15:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 5732, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5730, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "5927:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$5497_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5927:21:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5899:49:26" + }, + { + "expression": { + "components": [ + { + "baseExpression": { + "expression": { + "id": 5733, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5729, + "src": "5966:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5968:22:26", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 5488, + "src": "5966:24:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5736, + "indexExpression": { + "id": 5735, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "5991:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5966:33:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 5737, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5729, + "src": "6001:1:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$5497_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 5738, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6003:16:26", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5492, + "src": "6001:18:26", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5740, + "indexExpression": { + "id": 5739, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "6020:7:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6001:27:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5741, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5965:64:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 5726, + "id": 5742, + "nodeType": "Return", + "src": "5958:71:26" + } + ] + }, + "documentation": { + "id": 5718, + "nodeType": "StructuredDocumentation", + "src": "5476:269:26", + "text": " @notice Returns the gas money withdrawal details for an account.\n @param account address of the account\n @return periodStart timestamp of the withdrawal period start\n @return withdrawnAmount amount withdrawn within the period" + }, + "functionSelector": "ee3b641f", + "id": 5744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawalForAccount", + "nameLocation": "5759:31:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "mutability": "mutable", + "name": "account", + "nameLocation": "5808:7:26", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "5800:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5800:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5790:31:26" + }, + "returnParameters": { + "id": 5726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5723, + "mutability": "mutable", + "name": "periodStart", + "nameLocation": "5851:11:26", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "5843:19:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5843:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "withdrawnAmount", + "nameLocation": "5872:15:26", + "nodeType": "VariableDeclaration", + "scope": 5744, + "src": "5864:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5864:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5842:46:26" + }, + "scope": 5745, + "src": "5750:286:26", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5746, + "src": "462:5576:26", + "usedErrors": [ + 580, + 583, + 5528, + 5534 + ], + "usedEvents": [ + 588, + 5515, + 5522 + ] + } + ], + "src": "81:5958:26" + }, + "id": 26 + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "exportedSymbols": { + "BookingTokenOperator": [ + 5868 + ], + "IBookingToken": [ + 5902 + ], + "IERC20": [ + 1798 + ], + "SafeERC20": [ + 2124 + ] + }, + "id": 5869, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5747, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "32:24:27" + }, + { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "file": "./IBookingToken.sol", + "id": 5748, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5869, + "sourceUnit": 5903, + "src": "58:29:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 5750, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5869, + "sourceUnit": 2125, + "src": "105:84:27", + "symbolAliases": [ + { + "foreign": { + "id": 5749, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "114:9:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BookingTokenOperator", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5751, + "nodeType": "StructuredDocumentation", + "src": "191:279:27", + "text": " @title BookingTokenOperator\n @notice Booking token operator contract is used by the {CMAccount} contract to mint\n and buy booking tokens.\n We made this a library so that we can use it in the {CMAccount} contract without\n increasing the size of the contract." + }, + "fullyImplemented": true, + "id": 5868, + "linearizedBaseContracts": [ + 5868 + ], + "name": "BookingTokenOperator", + "nameLocation": "479:20:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 5755, + "libraryName": { + "id": 5752, + "name": "SafeERC20", + "nameLocations": [ + "512:9:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2124, + "src": "512:9:27" + }, + "nodeType": "UsingForDirective", + "src": "506:27:27", + "typeName": { + "id": 5754, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5753, + "name": "IERC20", + "nameLocations": [ + "526:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "526:6:27" + }, + "referencedDeclaration": 1798, + "src": "526:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + }, + { + "documentation": { + "id": 5756, + "nodeType": "StructuredDocumentation", + "src": "539:239:27", + "text": " @dev Token approval for the BookingToken address failed.\n @param token token address\n @param spender spender address (the BookingToken contract address)\n @param amount amount of tokens to approve" + }, + "errorSelector": "3337e731", + "id": 5764, + "name": "TokenApprovalFailed", + "nameLocation": "789:19:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5758, + "mutability": "mutable", + "name": "token", + "nameLocation": "817:5:27", + "nodeType": "VariableDeclaration", + "scope": 5764, + "src": "809:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "809:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5760, + "mutability": "mutable", + "name": "spender", + "nameLocation": "832:7:27", + "nodeType": "VariableDeclaration", + "scope": 5764, + "src": "824:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "824:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5762, + "mutability": "mutable", + "name": "amount", + "nameLocation": "849:6:27", + "nodeType": "VariableDeclaration", + "scope": 5764, + "src": "841:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "841:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "808:48:27" + }, + "src": "783:74:27" + }, + { + "body": { + "id": 5792, + "nodeType": "Block", + "src": "1505:128:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5785, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5769, + "src": "1567:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5786, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5771, + "src": "1580:3:27", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 5787, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5773, + "src": "1585:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5788, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5775, + "src": "1606:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5789, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5778, + "src": "1613:12:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "expression": { + "arguments": [ + { + "id": 5782, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5767, + "src": "1529:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5781, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "1515:13:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$5902_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 5783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1515:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$5902", + "typeString": "contract IBookingToken" + } + }, + "id": 5784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1543:23:27", + "memberName": "safeMintWithReservation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5886, + "src": "1515:51:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$1798_$returns$__$", + "typeString": "function (address,string memory,uint256,uint256,contract IERC20) external" + } + }, + "id": 5790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1515:111:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5791, + "nodeType": "ExpressionStatement", + "src": "1515:111:27" + } + ] + }, + "documentation": { + "id": 5765, + "nodeType": "StructuredDocumentation", + "src": "863:423:27", + "text": " @dev Mints a booking token.\n @param bookingToken booking token contract address\n @param reservedFor address of the CM Account that can buy the token\n (generally the distributor)\n @param uri URI of the token\n @param expirationTimestamp expiration timestamp of the token in seconds\n @param price price of the token\n @param paymentToken payment token address" + }, + "functionSelector": "53ea54c5", + "id": 5793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintBookingToken", + "nameLocation": "1300:16:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5767, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "1334:12:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1326:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1326:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5769, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "1364:11:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1356:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1356:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5771, + "mutability": "mutable", + "name": "uri", + "nameLocation": "1399:3:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1385:17:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5770, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1385:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5773, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "1420:19:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1412:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1412:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5775, + "mutability": "mutable", + "name": "price", + "nameLocation": "1457:5:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1449:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1449:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5778, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "1479:12:27", + "nodeType": "VariableDeclaration", + "scope": 5793, + "src": "1472:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5777, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5776, + "name": "IERC20", + "nameLocations": [ + "1472:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "1472:6:27" + }, + "referencedDeclaration": 1798, + "src": "1472:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "1316:181:27" + }, + "returnParameters": { + "id": 5780, + "nodeType": "ParameterList", + "parameters": [], + "src": "1505:0:27" + }, + "scope": 5868, + "src": "1291:342:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5866, + "nodeType": "Block", + "src": "1925:1033:27", + "statements": [ + { + "assignments": [ + 5802, + 5805 + ], + "declarations": [ + { + "constant": false, + "id": 5802, + "mutability": "mutable", + "name": "price", + "nameLocation": "2001:5:27", + "nodeType": "VariableDeclaration", + "scope": 5866, + "src": "1993:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1993:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5805, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "2015:12:27", + "nodeType": "VariableDeclaration", + "scope": 5866, + "src": "2008:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5804, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5803, + "name": "IERC20", + "nameLocations": [ + "2008:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "2008:6:27" + }, + "referencedDeclaration": 1798, + "src": "2008:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 5812, + "initialValue": { + "arguments": [ + { + "id": 5810, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5798, + "src": "2079:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 5807, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "2045:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5806, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "2031:13:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$5902_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 5808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2031:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$5902", + "typeString": "contract IBookingToken" + } + }, + "id": 5809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2059:19:27", + "memberName": "getReservationPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 5901, + "src": "2031:47:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$_t_contract$_IERC20_$1798_$", + "typeString": "function (uint256) view external returns (uint256,contract IERC20)" + } + }, + "id": 5811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2031:56:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_contract$_IERC20_$1798_$", + "typeString": "tuple(uint256,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1992:95:27" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5815, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5805, + "src": "2172:12:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 5814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2164:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2164:7:27", + "typeDescriptions": {} + } + }, + "id": 5816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2164:21:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2197:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2189:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2189:7:27", + "typeDescriptions": {} + } + }, + "id": 5820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2189:10:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2164:35:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5822, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5802, + "src": "2203:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2211:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2203:9:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2164:48:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5864, + "nodeType": "Block", + "src": "2711:241:27", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5861, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5798, + "src": "2933:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 5856, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "2886:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5855, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "2872:13:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$5902_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2872:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$5902", + "typeString": "contract IBookingToken" + } + }, + "id": 5858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2900:16:27", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5891, + "src": "2872:44:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 5860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 5859, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5802, + "src": "2925:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2872:60:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$value", + "typeString": "function (uint256) payable external" + } + }, + "id": 5862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2872:69:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5863, + "nodeType": "ExpressionStatement", + "src": "2872:69:27" + } + ] + }, + "id": 5865, + "nodeType": "IfStatement", + "src": "2160:792:27", + "trueBody": { + "id": 5854, + "nodeType": "Block", + "src": "2214:491:27", + "statements": [ + { + "assignments": [ + 5827 + ], + "declarations": [ + { + "constant": false, + "id": 5827, + "mutability": "mutable", + "name": "approval", + "nameLocation": "2413:8:27", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "2408:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5826, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2408:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 5833, + "initialValue": { + "arguments": [ + { + "id": 5830, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "2445:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5831, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5802, + "src": "2459:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5828, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5805, + "src": "2424:12:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "id": 5829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2437:7:27", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1785, + "src": "2424:20:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2424:41:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2408:57:27" + }, + { + "condition": { + "id": 5835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2484:9:27", + "subExpression": { + "id": 5834, + "name": "approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "2485:8:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5846, + "nodeType": "IfStatement", + "src": "2480:118:27", + "trueBody": { + "id": 5845, + "nodeType": "Block", + "src": "2495:103:27", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5837, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "2540:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 5840, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5805, + "src": "2562:12:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + ], + "id": 5839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2554:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2554:7:27", + "typeDescriptions": {} + } + }, + "id": 5841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2554:21:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5842, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5802, + "src": "2577:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5836, + "name": "TokenApprovalFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5764, + "src": "2520:19:27", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) pure" + } + }, + "id": 5843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2520:63:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5844, + "nodeType": "RevertStatement", + "src": "2513:70:27" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 5851, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5798, + "src": "2686:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 5848, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "2655:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5847, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "2641:13:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$5902_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 5849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2641:27:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$5902", + "typeString": "contract IBookingToken" + } + }, + "id": 5850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2669:16:27", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5891, + "src": "2641:44:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 5852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2641:53:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5853, + "nodeType": "ExpressionStatement", + "src": "2641:53:27" + } + ] + } + } + ] + }, + "documentation": { + "id": 5794, + "nodeType": "StructuredDocumentation", + "src": "1639:210:27", + "text": " @dev Buys a booking token with the specified price and payment token in the\n reservation.\n @param bookingToken booking token contract address\n @param tokenId token id" + }, + "functionSelector": "1b29e1ba", + "id": 5867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "buyBookingToken", + "nameLocation": "1863:15:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5796, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "1887:12:27", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "1879:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5798, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1909:7:27", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "1901:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1901:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1878:39:27" + }, + "returnParameters": { + "id": 5800, + "nodeType": "ParameterList", + "parameters": [], + "src": "1925:0:27" + }, + "scope": 5868, + "src": "1854:1104:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5869, + "src": "471:2489:27", + "usedErrors": [ + 5764 + ], + "usedEvents": [] + } + ], + "src": "32:2929:27" + }, + "id": 27 + }, + "contracts/booking-token/IBookingToken.sol": { + "ast": { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "exportedSymbols": { + "IBookingToken": [ + 5902 + ], + "IERC20": [ + 1798 + ] + }, + "id": 5903, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5870, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "32:24:28" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5872, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5903, + "sourceUnit": 1799, + "src": "58:72:28", + "symbolAliases": [ + { + "foreign": { + "id": 5871, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1798, + "src": "67:6:28", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBookingToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 5902, + "linearizedBaseContracts": [ + 5902 + ], + "name": "IBookingToken", + "nameLocation": "142:13:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "5d4badb2", + "id": 5886, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeMintWithReservation", + "nameLocation": "171:23:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5874, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "212:11:28", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "204:19:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "204:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5876, + "mutability": "mutable", + "name": "uri", + "nameLocation": "247:3:28", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "233:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5875, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "233:6:28", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5878, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "268:19:28", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "260:27:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5877, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "260:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5880, + "mutability": "mutable", + "name": "price", + "nameLocation": "305:5:28", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "297:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5883, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "327:12:28", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "320:19:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5882, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5881, + "name": "IERC20", + "nameLocations": [ + "320:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "320:6:28" + }, + "referencedDeclaration": 1798, + "src": "320:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "194:151:28" + }, + "returnParameters": { + "id": 5885, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:28" + }, + "scope": 5902, + "src": "162:193:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "96591edd", + "id": 5891, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "buyReservedToken", + "nameLocation": "370:16:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5889, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5888, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "395:7:28", + "nodeType": "VariableDeclaration", + "scope": 5891, + "src": "387:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5887, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "387:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "386:17:28" + }, + "returnParameters": { + "id": 5890, + "nodeType": "ParameterList", + "parameters": [], + "src": "420:0:28" + }, + "scope": 5902, + "src": "361:60:28", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "004fdd3c", + "id": 5901, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReservationPrice", + "nameLocation": "436:19:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5893, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "464:7:28", + "nodeType": "VariableDeclaration", + "scope": 5901, + "src": "456:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "456:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "455:17:28" + }, + "returnParameters": { + "id": 5900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5896, + "mutability": "mutable", + "name": "price", + "nameLocation": "504:5:28", + "nodeType": "VariableDeclaration", + "scope": 5901, + "src": "496:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "496:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5899, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "518:12:28", + "nodeType": "VariableDeclaration", + "scope": 5901, + "src": "511:19:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5898, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5897, + "name": "IERC20", + "nameLocations": [ + "511:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1798, + "src": "511:6:28" + }, + "referencedDeclaration": 1798, + "src": "511:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1798", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "495:36:28" + }, + "scope": 5902, + "src": "427:105:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5903, + "src": "132:402:28", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:503:28" + }, + "id": 28 + }, + "contracts/manager/ICMAccountManager.sol": { + "ast": { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "exportedSymbols": { + "ICMAccountManager": [ + 5941 + ] + }, + "id": 5942, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5904, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "40:24:29" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICMAccountManager", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 5941, + "linearizedBaseContracts": [ + 5941 + ], + "name": "ICMAccountManager", + "nameLocation": "76:17:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9d825bc5", + "id": 5909, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAccountImplementation", + "nameLocation": "109:24:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5905, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:29" + }, + "returnParameters": { + "id": 5908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5907, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5909, + "src": "159:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "158:9:29" + }, + "scope": 5941, + "src": "100:68:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c555938", + "id": 5914, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperFeeBp", + "nameLocation": "183:17:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5910, + "nodeType": "ParameterList", + "parameters": [], + "src": "200:2:29" + }, + "returnParameters": { + "id": 5913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5912, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5914, + "src": "226:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "226:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "225:9:29" + }, + "scope": 5941, + "src": "174:61:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0470d3ac", + "id": 5919, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperWallet", + "nameLocation": "250:18:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5915, + "nodeType": "ParameterList", + "parameters": [], + "src": "268:2:29" + }, + "returnParameters": { + "id": 5918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5917, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5919, + "src": "294:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "294:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "293:9:29" + }, + "scope": 5941, + "src": "241:62:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "12b357b5", + "id": 5926, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "318:11:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5921, + "mutability": "mutable", + "name": "account", + "nameLocation": "338:7:29", + "nodeType": "VariableDeclaration", + "scope": 5926, + "src": "330:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "330:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "329:17:29" + }, + "returnParameters": { + "id": 5925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5924, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5926, + "src": "370:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5923, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "370:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "369:6:29" + }, + "scope": 5941, + "src": "309:67:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "352af39a", + "id": 5933, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceHashByName", + "nameLocation": "391:30:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5928, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "436:11:29", + "nodeType": "VariableDeclaration", + "scope": 5933, + "src": "422:25:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5927, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "422:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "421:27:29" + }, + "returnParameters": { + "id": 5932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5931, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "480:11:29", + "nodeType": "VariableDeclaration", + "scope": 5933, + "src": "472:19:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5930, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "472:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "471:21:29" + }, + "scope": 5941, + "src": "382:111:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a81a626", + "id": 5940, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceNameByHash", + "nameLocation": "508:30:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5935, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "547:11:29", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "539:19:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5934, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "539:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "538:21:29" + }, + "returnParameters": { + "id": 5939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5938, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "597:11:29", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "583:25:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5937, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "583:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "582:27:29" + }, + "scope": 5941, + "src": "499:111:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5942, + "src": "66:546:29", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "40:573:29" + }, + "id": 29 + }, + "contracts/partner/PartnerConfiguration.sol": { + "ast": { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "exportedSymbols": { + "EnumerableSet": [ + 3595 + ], + "Initializable": [ + 817 + ], + "PartnerConfiguration": [ + 6926 + ] + }, + "id": 6927, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5943, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "85:24:30" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 5945, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6927, + "sourceUnit": 818, + "src": "111:98:30", + "symbolAliases": [ + { + "foreign": { + "id": 5944, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "120:13:30", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 5947, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6927, + "sourceUnit": 3596, + "src": "210:88:30", + "symbolAliases": [ + { + "foreign": { + "id": 5946, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "219:13:30", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 5949, + "name": "Initializable", + "nameLocations": [ + "511:13:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "511:13:30" + }, + "id": 5950, + "nodeType": "InheritanceSpecifier", + "src": "511:13:30" + } + ], + "canonicalName": "PartnerConfiguration", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 5948, + "nodeType": "StructuredDocumentation", + "src": "300:168:30", + "text": " @title PartnerConfiguration\n @notice Partner Configuration is used by the {CMAccount} contract to register\n supported and wanted services by the partner." + }, + "fullyImplemented": true, + "id": 6926, + "linearizedBaseContracts": [ + 6926, + 817 + ], + "name": "PartnerConfiguration", + "nameLocation": "487:20:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 5954, + "libraryName": { + "id": 5951, + "name": "EnumerableSet", + "nameLocations": [ + "537:13:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3595, + "src": "537:13:30" + }, + "nodeType": "UsingForDirective", + "src": "531:49:30", + "typeName": { + "id": 5953, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5952, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "555:13:30", + "569:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "555:24:30" + }, + "referencedDeclaration": 3187, + "src": "555:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "global": false, + "id": 5958, + "libraryName": { + "id": 5955, + "name": "EnumerableSet", + "nameLocations": [ + "591:13:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3595, + "src": "591:13:30" + }, + "nodeType": "UsingForDirective", + "src": "585:49:30", + "typeName": { + "id": 5957, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5956, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "609:13:30", + "623:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "609:24:30" + }, + "referencedDeclaration": 3308, + "src": "609:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "PartnerConfiguration.Service", + "documentation": { + "id": 5959, + "nodeType": "StructuredDocumentation", + "src": "813:85:30", + "text": " @notice Struct for storing supported service details for suppliers" + }, + "id": 5968, + "members": [ + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "_fee", + "nameLocation": "936:4:30", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "928:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "928:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5964, + "mutability": "mutable", + "name": "_restrictedRate", + "nameLocation": "1113:15:30", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "1108:20:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5963, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1108:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5967, + "mutability": "mutable", + "name": "_capabilities", + "nameLocation": "1147:13:30", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "1138:22:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 5965, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1138:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 5966, + "nodeType": "ArrayTypeName", + "src": "1138:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "name": "Service", + "nameLocation": "910:7:30", + "nodeType": "StructDefinition", + "scope": 6926, + "src": "903:264:30", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PaymentInfo", + "id": 5974, + "members": [ + { + "constant": false, + "id": 5970, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "1207:24:30", + "nodeType": "VariableDeclaration", + "scope": 5974, + "src": "1202:29:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5969, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1202:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5973, + "mutability": "mutable", + "name": "_supportedTokens", + "nameLocation": "1305:16:30", + "nodeType": "VariableDeclaration", + "scope": 5974, + "src": "1280:41:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 5972, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5971, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1280:13:30", + "1294:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "1280:24:30" + }, + "referencedDeclaration": 3308, + "src": "1280:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "name": "PaymentInfo", + "nameLocation": "1180:11:30", + "nodeType": "StructDefinition", + "scope": 6926, + "src": "1173:195:30", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PartnerConfigurationStorage", + "documentation": { + "id": 5975, + "nodeType": "StructuredDocumentation", + "src": "1374:82:30", + "text": "@custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration" + }, + "id": 5997, + "members": [ + { + "constant": false, + "id": 5978, + "mutability": "mutable", + "name": "_servicesHashSet", + "nameLocation": "1574:16:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1549:41:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 5977, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5976, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "1549:13:30", + "1563:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "1549:24:30" + }, + "referencedDeclaration": 3187, + "src": "1549:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5983, + "mutability": "mutable", + "name": "_supportedServices", + "nameLocation": "1710:18:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1660:68:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "typeName": { + "id": 5982, + "keyName": "_serviceHash", + "keyNameLocation": "1676:12:30", + "keyType": { + "id": 5979, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1668:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1660:49:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "valueName": "_service", + "valueNameLocation": "1700:8:30", + "valueType": { + "id": 5981, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5980, + "name": "Service", + "nameLocations": [ + "1692:7:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5968, + "src": "1692:7:30" + }, + "referencedDeclaration": 5968, + "src": "1692:7:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5986, + "mutability": "mutable", + "name": "_paymentInfo", + "nameLocation": "1769:12:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1757:24:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + }, + "typeName": { + "id": 5985, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5984, + "name": "PaymentInfo", + "nameLocations": [ + "1757:11:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5974, + "src": "1757:11:30" + }, + "referencedDeclaration": 5974, + "src": "1757:11:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5989, + "mutability": "mutable", + "name": "_publicKeyAddressesSet", + "nameLocation": "1887:22:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1862:47:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 5988, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5987, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1862:13:30", + "1876:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3308, + "src": "1862:24:30" + }, + "referencedDeclaration": 3308, + "src": "1862:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5993, + "mutability": "mutable", + "name": "_publicKeys", + "nameLocation": "2041:11:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "1988:64:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "typeName": { + "id": 5992, + "keyName": "publicKeyAddress", + "keyNameLocation": "2004:16:30", + "keyType": { + "id": 5990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1996:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1988:52:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "valueName": "publicKey", + "valueNameLocation": "2030:9:30", + "valueType": { + "id": 5991, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2024:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5996, + "mutability": "mutable", + "name": "_wantedServicesHashSet", + "nameLocation": "2142:22:30", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "2117:47:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 5995, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5994, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "2117:13:30", + "2131:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3187, + "src": "2117:24:30" + }, + "referencedDeclaration": 3187, + "src": "2117:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "name": "PartnerConfigurationStorage", + "nameLocation": "1468:27:30", + "nodeType": "StructDefinition", + "scope": 6926, + "src": "1461:710:30", + "visibility": "public" + }, + { + "constant": true, + "id": 6000, + "mutability": "constant", + "name": "PartnerConfigurationStorageLocation", + "nameLocation": "2331:35:30", + "nodeType": "VariableDeclaration", + "scope": 6926, + "src": "2306:137:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5998, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2306:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866323835366535653162373638396463646531626235353166643131356333636164386432343365613630396434376134366234643232656535386433303030", + "id": 5999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2377:66:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_109695461745991320572768326828640350552342084100038240268071478376876378763264_by_1", + "typeString": "int_const 1096...(70 digits omitted)...3264" + }, + "value": "0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000" + }, + "visibility": "private" + }, + { + "body": { + "id": 6007, + "nodeType": "Block", + "src": "2554:94:30", + "statements": [ + { + "AST": { + "nativeSrc": "2573:69:30", + "nodeType": "YulBlock", + "src": "2573:69:30", + "statements": [ + { + "nativeSrc": "2587:45:30", + "nodeType": "YulAssignment", + "src": "2587:45:30", + "value": { + "name": "PartnerConfigurationStorageLocation", + "nativeSrc": "2597:35:30", + "nodeType": "YulIdentifier", + "src": "2597:35:30" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2587:6:30", + "nodeType": "YulIdentifier", + "src": "2587:6:30" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6004, + "isOffset": false, + "isSlot": true, + "src": "2587:6:30", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "2597:35:30", + "valueSize": 1 + } + ], + "id": 6006, + "nodeType": "InlineAssembly", + "src": "2564:78:30" + } + ] + }, + "id": 6008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPartnerConfigurationStorage", + "nameLocation": "2459:31:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [], + "src": "2490:2:30" + }, + "returnParameters": { + "id": 6005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6004, + "mutability": "mutable", + "name": "$", + "nameLocation": "2551:1:30", + "nodeType": "VariableDeclaration", + "scope": 6008, + "src": "2515:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6003, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6002, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "2515:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "2515:27:30" + }, + "referencedDeclaration": 5997, + "src": "2515:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2514:39:30" + }, + "scope": 6926, + "src": "2450:198:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "errorSelector": "010f1dd8", + "id": 6012, + "name": "ServiceAlreadyExists", + "nameLocation": "2833:20:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6010, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2862:11:30", + "nodeType": "VariableDeclaration", + "scope": 6012, + "src": "2854:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6009, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2854:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2853:21:30" + }, + "src": "2827:48:30" + }, + { + "errorSelector": "7a5bdbb4", + "id": 6016, + "name": "ServiceDoesNotExist", + "nameLocation": "2886:19:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6015, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6014, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2914:11:30", + "nodeType": "VariableDeclaration", + "scope": 6016, + "src": "2906:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6013, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2906:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2905:21:30" + }, + "src": "2880:47:30" + }, + { + "errorSelector": "1a1e0569", + "id": 6020, + "name": "WantedServiceAlreadyExists", + "nameLocation": "2939:26:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6018, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2974:11:30", + "nodeType": "VariableDeclaration", + "scope": 6020, + "src": "2966:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6017, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2966:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2965:21:30" + }, + "src": "2933:54:30" + }, + { + "errorSelector": "fd5cb3e2", + "id": 6024, + "name": "WantedServiceDoesNotExist", + "nameLocation": "2998:25:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6022, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3032:11:30", + "nodeType": "VariableDeclaration", + "scope": 6024, + "src": "3024:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6021, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3024:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3023:21:30" + }, + "src": "2992:53:30" + }, + { + "errorSelector": "50e5f7f2", + "id": 6028, + "name": "PaymentTokenAlreadyExists", + "nameLocation": "3057:25:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6026, + "mutability": "mutable", + "name": "token", + "nameLocation": "3091:5:30", + "nodeType": "VariableDeclaration", + "scope": 6028, + "src": "3083:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3083:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3082:15:30" + }, + "src": "3051:47:30" + }, + { + "errorSelector": "54cb99c4", + "id": 6032, + "name": "PaymentTokenDoesNotExist", + "nameLocation": "3109:24:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6030, + "mutability": "mutable", + "name": "token", + "nameLocation": "3142:5:30", + "nodeType": "VariableDeclaration", + "scope": 6032, + "src": "3134:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3134:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3133:15:30" + }, + "src": "3103:46:30" + }, + { + "errorSelector": "d3083f18", + "id": 6036, + "name": "PublicKeyAlreadyExists", + "nameLocation": "3161:22:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6034, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3192:13:30", + "nodeType": "VariableDeclaration", + "scope": 6036, + "src": "3184:21:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3184:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3183:23:30" + }, + "src": "3155:52:30" + }, + { + "errorSelector": "ba650b5f", + "id": 6040, + "name": "PublicKeyDoesNotExist", + "nameLocation": "3218:21:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6038, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3248:13:30", + "nodeType": "VariableDeclaration", + "scope": 6040, + "src": "3240:21:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3240:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3239:23:30" + }, + "src": "3212:51:30" + }, + { + "errorSelector": "fe2915cf", + "id": 6044, + "name": "InvalidPublicKeyUseType", + "nameLocation": "3274:23:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6042, + "mutability": "mutable", + "name": "use", + "nameLocation": "3304:3:30", + "nodeType": "VariableDeclaration", + "scope": 6044, + "src": "3298:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6041, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3298:5:30", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3297:11:30" + }, + "src": "3268:41:30" + }, + { + "anonymous": false, + "eventSelector": "8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5", + "id": 6048, + "name": "ServiceAdded", + "nameLocation": "3494:12:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6046, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3515:11:30", + "nodeType": "VariableDeclaration", + "scope": 6048, + "src": "3507:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6045, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3507:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3506:21:30" + }, + "src": "3488:40:30" + }, + { + "anonymous": false, + "eventSelector": "94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c427", + "id": 6052, + "name": "ServiceRemoved", + "nameLocation": "3539:14:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6050, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3562:11:30", + "nodeType": "VariableDeclaration", + "scope": 6052, + "src": "3554:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6049, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3554:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3553:21:30" + }, + "src": "3533:42:30" + }, + { + "anonymous": false, + "eventSelector": "7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac", + "id": 6056, + "name": "WantedServiceAdded", + "nameLocation": "3587:18:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6054, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3614:11:30", + "nodeType": "VariableDeclaration", + "scope": 6056, + "src": "3606:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3606:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3605:21:30" + }, + "src": "3581:46:30" + }, + { + "anonymous": false, + "eventSelector": "f0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be", + "id": 6060, + "name": "WantedServiceRemoved", + "nameLocation": "3638:20:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6058, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3667:11:30", + "nodeType": "VariableDeclaration", + "scope": 6060, + "src": "3659:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6057, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3659:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3658:21:30" + }, + "src": "3632:48:30" + }, + { + "anonymous": false, + "eventSelector": "8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897", + "id": 6066, + "name": "ServiceFeeUpdated", + "nameLocation": "3692:17:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6062, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3718:11:30", + "nodeType": "VariableDeclaration", + "scope": 6066, + "src": "3710:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6061, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3710:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6064, + "indexed": false, + "mutability": "mutable", + "name": "fee", + "nameLocation": "3739:3:30", + "nodeType": "VariableDeclaration", + "scope": 6066, + "src": "3731:11:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6063, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3731:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3709:34:30" + }, + "src": "3686:58:30" + }, + { + "anonymous": false, + "eventSelector": "1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a664", + "id": 6072, + "name": "ServiceRestrictedRateUpdated", + "nameLocation": "3755:28:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6068, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3792:11:30", + "nodeType": "VariableDeclaration", + "scope": 6072, + "src": "3784:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6067, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3784:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6070, + "indexed": false, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "3810:14:30", + "nodeType": "VariableDeclaration", + "scope": 6072, + "src": "3805:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3805:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3783:42:30" + }, + "src": "3749:77:30" + }, + { + "anonymous": false, + "eventSelector": "a616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa0098", + "id": 6076, + "name": "ServiceCapabilitiesUpdated", + "nameLocation": "3838:26:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6074, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3873:11:30", + "nodeType": "VariableDeclaration", + "scope": 6076, + "src": "3865:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6073, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3865:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3864:21:30" + }, + "src": "3832:54:30" + }, + { + "anonymous": false, + "eventSelector": "1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e6", + "id": 6082, + "name": "ServiceCapabilityAdded", + "nameLocation": "3897:22:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6078, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3928:11:30", + "nodeType": "VariableDeclaration", + "scope": 6082, + "src": "3920:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6077, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3920:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6080, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "3948:10:30", + "nodeType": "VariableDeclaration", + "scope": 6082, + "src": "3941:17:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6079, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3941:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3919:40:30" + }, + "src": "3891:69:30" + }, + { + "anonymous": false, + "eventSelector": "fc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b014", + "id": 6088, + "name": "ServiceCapabilityRemoved", + "nameLocation": "3971:24:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6084, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4004:11:30", + "nodeType": "VariableDeclaration", + "scope": 6088, + "src": "3996:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6083, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3996:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6086, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "4024:10:30", + "nodeType": "VariableDeclaration", + "scope": 6088, + "src": "4017:17:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6085, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4017:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3995:40:30" + }, + "src": "3965:71:30" + }, + { + "anonymous": false, + "eventSelector": "a317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f", + "id": 6092, + "name": "PaymentTokenAdded", + "nameLocation": "4048:17:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6090, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nameLocation": "4074:5:30", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "4066:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6089, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4066:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4065:15:30" + }, + "src": "4042:39:30" + }, + { + "anonymous": false, + "eventSelector": "85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af2", + "id": 6096, + "name": "PaymentTokenRemoved", + "nameLocation": "4092:19:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6094, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nameLocation": "4120:5:30", + "nodeType": "VariableDeclaration", + "scope": 6096, + "src": "4112:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4112:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4111:15:30" + }, + "src": "4086:41:30" + }, + { + "anonymous": false, + "eventSelector": "e93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e3", + "id": 6100, + "name": "OffChainPaymentSupportUpdated", + "nameLocation": "4139:29:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6098, + "indexed": false, + "mutability": "mutable", + "name": "supportsOffChainPayment", + "nameLocation": "4174:23:30", + "nodeType": "VariableDeclaration", + "scope": 6100, + "src": "4169:28:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6097, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4169:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4168:30:30" + }, + "src": "4133:66:30" + }, + { + "anonymous": false, + "eventSelector": "928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe82", + "id": 6104, + "name": "PublicKeyAdded", + "nameLocation": "4211:14:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6102, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "4242:13:30", + "nodeType": "VariableDeclaration", + "scope": 6104, + "src": "4226:29:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4226:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4225:31:30" + }, + "src": "4205:52:30" + }, + { + "anonymous": false, + "eventSelector": "c5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf", + "id": 6108, + "name": "PublicKeyRemoved", + "nameLocation": "4268:16:30", + "nodeType": "EventDefinition", + "parameters": { + "id": 6107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6106, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "4301:13:30", + "nodeType": "VariableDeclaration", + "scope": 6108, + "src": "4285:29:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4285:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4284:31:30" + }, + "src": "4262:54:30" + }, + { + "body": { + "id": 6113, + "nodeType": "Block", + "src": "4560:2:30", + "statements": [] + }, + "id": 6114, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6111, + "kind": "modifierInvocation", + "modifierName": { + "id": 6110, + "name": "onlyInitializing", + "nameLocations": [ + "4543:16:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "4543:16:30" + }, + "nodeType": "ModifierInvocation", + "src": "4543:16:30" + } + ], + "name": "__PartnerConfiguration_init", + "nameLocation": "4504:27:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6109, + "nodeType": "ParameterList", + "parameters": [], + "src": "4531:2:30" + }, + "returnParameters": { + "id": 6112, + "nodeType": "ParameterList", + "parameters": [], + "src": "4560:0:30" + }, + "scope": 6926, + "src": "4495:67:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6119, + "nodeType": "Block", + "src": "4643:2:30", + "statements": [] + }, + "id": 6120, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6117, + "kind": "modifierInvocation", + "modifierName": { + "id": 6116, + "name": "onlyInitializing", + "nameLocations": [ + "4626:16:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 726, + "src": "4626:16:30" + }, + "nodeType": "ModifierInvocation", + "src": "4626:16:30" + } + ], + "name": "__PartnerConfiguration_init_unchained", + "nameLocation": "4577:37:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6115, + "nodeType": "ParameterList", + "parameters": [], + "src": "4614:2:30" + }, + "returnParameters": { + "id": 6118, + "nodeType": "ParameterList", + "parameters": [], + "src": "4643:0:30" + }, + "scope": 6926, + "src": "4568:77:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6171, + "nodeType": "Block", + "src": "5288:509:30", + "statements": [ + { + "assignments": [ + 6135 + ], + "declarations": [ + { + "constant": false, + "id": 6135, + "mutability": "mutable", + "name": "$", + "nameLocation": "5334:1:30", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "5298:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6134, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6133, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "5298:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "5298:27:30" + }, + "referencedDeclaration": 5997, + "src": "5298:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6138, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6136, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "5338:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5338:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5298:73:30" + }, + { + "assignments": [ + 6140 + ], + "declarations": [ + { + "constant": false, + "id": 6140, + "mutability": "mutable", + "name": "added", + "nameLocation": "5446:5:30", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "5441:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6139, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5441:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6146, + "initialValue": { + "arguments": [ + { + "id": 6144, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "5477:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 6141, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6135, + "src": "5454:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6142, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5456:16:30", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5978, + "src": "5454:18:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5473:3:30", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3205, + "src": "5454:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$3187_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 6145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5454:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5441:48:30" + }, + { + "condition": { + "id": 6148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5503:6:30", + "subExpression": { + "id": 6147, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6140, + "src": "5504:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6154, + "nodeType": "IfStatement", + "src": "5499:77:30", + "trueBody": { + "id": 6153, + "nodeType": "Block", + "src": "5511:65:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6150, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "5553:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6149, + "name": "ServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6012, + "src": "5532:20:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5532:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6152, + "nodeType": "RevertStatement", + "src": "5525:40:30" + } + ] + } + }, + { + "expression": { + "id": 6165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 6155, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6135, + "src": "5585:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5587:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "5585:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6159, + "indexExpression": { + "id": 6157, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "5606:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5585:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6161, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6125, + "src": "5649:3:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6162, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6128, + "src": "5681:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 6163, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6130, + "src": "5724:14:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6160, + "name": "Service", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5968, + "src": "5621:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Service_$5968_storage_ptr_$", + "typeString": "type(struct PartnerConfiguration.Service storage pointer)" + } + }, + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "5643:4:30", + "5666:13:30", + "5707:15:30" + ], + "names": [ + "_fee", + "_capabilities", + "_restrictedRate" + ], + "nodeType": "FunctionCall", + "src": "5621:128:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "5585:164:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6166, + "nodeType": "ExpressionStatement", + "src": "5585:164:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6168, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "5778:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6167, + "name": "ServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6048, + "src": "5765:12:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 6169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5765:25:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6170, + "nodeType": "EmitStatement", + "src": "5760:30:30" + } + ] + }, + "documentation": { + "id": 6121, + "nodeType": "StructuredDocumentation", + "src": "4824:298:30", + "text": " @notice Adds a supported Service object for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee for the service\n @param capabilities Capabilities for the service\n @param restrictedRate If the service is restricted to pre-agreement" + }, + "id": 6172, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addService", + "nameLocation": "5136:11:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6123, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5165:11:30", + "nodeType": "VariableDeclaration", + "scope": 6172, + "src": "5157:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5157:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6125, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5194:3:30", + "nodeType": "VariableDeclaration", + "scope": 6172, + "src": "5186:11:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5186:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6128, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "5223:12:30", + "nodeType": "VariableDeclaration", + "scope": 6172, + "src": "5207:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 6126, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5207:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 6127, + "nodeType": "ArrayTypeName", + "src": "5207:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6130, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "5250:14:30", + "nodeType": "VariableDeclaration", + "scope": 6172, + "src": "5245:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5245:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5147:123:30" + }, + "returnParameters": { + "id": 6132, + "nodeType": "ParameterList", + "parameters": [], + "src": "5288:0:30" + }, + "scope": 6926, + "src": "5127:670:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6210, + "nodeType": "Block", + "src": "6002:372:30", + "statements": [ + { + "assignments": [ + 6180 + ], + "declarations": [ + { + "constant": false, + "id": 6180, + "mutability": "mutable", + "name": "$", + "nameLocation": "6048:1:30", + "nodeType": "VariableDeclaration", + "scope": 6210, + "src": "6012:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6179, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6178, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "6012:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "6012:27:30" + }, + "referencedDeclaration": 5997, + "src": "6012:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6183, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6181, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "6052:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6052:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6012:73:30" + }, + { + "assignments": [ + 6185 + ], + "declarations": [ + { + "constant": false, + "id": 6185, + "mutability": "mutable", + "name": "removed", + "nameLocation": "6138:7:30", + "nodeType": "VariableDeclaration", + "scope": 6210, + "src": "6133:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6184, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6133:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6191, + "initialValue": { + "arguments": [ + { + "id": 6189, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6175, + "src": "6174:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 6186, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "6148:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6187, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6150:16:30", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5978, + "src": "6148:18:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6167:6:30", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "6148:25:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$3187_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 6190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6148:38:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6133:53:30" + }, + { + "condition": { + "id": 6193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6200:8:30", + "subExpression": { + "id": 6192, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6185, + "src": "6201:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6199, + "nodeType": "IfStatement", + "src": "6196:78:30", + "trueBody": { + "id": 6198, + "nodeType": "Block", + "src": "6210:64:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6195, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6175, + "src": "6251:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6194, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "6231:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6231:32:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6197, + "nodeType": "RevertStatement", + "src": "6224:39:30" + } + ] + } + }, + { + "expression": { + "id": 6204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6284:40:30", + "subExpression": { + "baseExpression": { + "expression": { + "id": 6200, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "6291:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6201, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6293:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "6291:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6203, + "indexExpression": { + "id": 6202, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6175, + "src": "6312:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6291:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6205, + "nodeType": "ExpressionStatement", + "src": "6284:40:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6207, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6175, + "src": "6355:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6206, + "name": "ServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6052, + "src": "6340:14:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 6208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6340:27:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6209, + "nodeType": "EmitStatement", + "src": "6335:32:30" + } + ] + }, + "documentation": { + "id": 6173, + "nodeType": "StructuredDocumentation", + "src": "5803:132:30", + "text": " @notice Removes a supported Service object for a given hash.\n @param serviceHash Hash of the service" + }, + "id": 6211, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeService", + "nameLocation": "5949:14:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6175, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5972:11:30", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "5964:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6174, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5964:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5963:21:30" + }, + "returnParameters": { + "id": 6177, + "nodeType": "ParameterList", + "parameters": [], + "src": "6002:0:30" + }, + "scope": 6926, + "src": "5940:434:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6244, + "nodeType": "Block", + "src": "6600:281:30", + "statements": [ + { + "assignments": [ + 6221 + ], + "declarations": [ + { + "constant": false, + "id": 6221, + "mutability": "mutable", + "name": "$", + "nameLocation": "6646:1:30", + "nodeType": "VariableDeclaration", + "scope": 6244, + "src": "6610:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6220, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6219, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "6610:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "6610:27:30" + }, + "referencedDeclaration": 5997, + "src": "6610:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6224, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6222, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "6650:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6650:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6610:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6226, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6214, + "src": "6753:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6227, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "6766:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6225, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "6733:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6733:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6229, + "nodeType": "ExpressionStatement", + "src": "6733:35:30" + }, + { + "expression": { + "id": 6237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 6230, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "6779:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6233, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6781:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "6779:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6234, + "indexExpression": { + "id": 6232, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6214, + "src": "6800:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6779:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6235, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6813:4:30", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 5961, + "src": "6779:38:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6236, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6216, + "src": "6820:3:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6779:44:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6238, + "nodeType": "ExpressionStatement", + "src": "6779:44:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6240, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6214, + "src": "6857:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6241, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6216, + "src": "6870:3:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6239, + "name": "ServiceFeeUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6066, + "src": "6839:17:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 6242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6839:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6243, + "nodeType": "EmitStatement", + "src": "6834:40:30" + } + ] + }, + "documentation": { + "id": 6212, + "nodeType": "StructuredDocumentation", + "src": "6380:140:30", + "text": " @notice Sets the Service fee for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee" + }, + "id": 6245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceFee", + "nameLocation": "6534:14:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6217, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6214, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "6557:11:30", + "nodeType": "VariableDeclaration", + "scope": 6245, + "src": "6549:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6213, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6549:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6216, + "mutability": "mutable", + "name": "fee", + "nameLocation": "6578:3:30", + "nodeType": "VariableDeclaration", + "scope": 6245, + "src": "6570:11:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6215, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6570:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6548:34:30" + }, + "returnParameters": { + "id": 6218, + "nodeType": "ParameterList", + "parameters": [], + "src": "6600:0:30" + }, + "scope": 6926, + "src": "6525:356:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6278, + "nodeType": "Block", + "src": "7161:325:30", + "statements": [ + { + "assignments": [ + 6255 + ], + "declarations": [ + { + "constant": false, + "id": 6255, + "mutability": "mutable", + "name": "$", + "nameLocation": "7207:1:30", + "nodeType": "VariableDeclaration", + "scope": 6278, + "src": "7171:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6254, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6253, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7171:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "7171:27:30" + }, + "referencedDeclaration": 5997, + "src": "7171:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6258, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6256, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "7211:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7211:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7171:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6260, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6248, + "src": "7314:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6261, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "7327:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6259, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "7294:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7294:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6263, + "nodeType": "ExpressionStatement", + "src": "7294:35:30" + }, + { + "expression": { + "id": 6271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 6264, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "7340:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7342:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "7340:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6268, + "indexExpression": { + "id": 6266, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6248, + "src": "7361:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7340:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6269, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7374:15:30", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 5964, + "src": "7340:49:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6270, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6250, + "src": "7392:14:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7340:66:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6272, + "nodeType": "ExpressionStatement", + "src": "7340:66:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6274, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6248, + "src": "7451:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6275, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6250, + "src": "7464:14:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6273, + "name": "ServiceRestrictedRateUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "7422:28:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$", + "typeString": "function (bytes32,bool)" + } + }, + "id": 6276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7422:57:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6277, + "nodeType": "EmitStatement", + "src": "7417:62:30" + } + ] + }, + "documentation": { + "id": 6246, + "nodeType": "StructuredDocumentation", + "src": "6887:175:30", + "text": " @notice Sets the Service restricted rate for a given hash.\n @param serviceHash Hash of the service\n @param restrictedRate Restricted rate" + }, + "id": 6279, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceRestrictedRate", + "nameLocation": "7076:25:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6248, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7110:11:30", + "nodeType": "VariableDeclaration", + "scope": 6279, + "src": "7102:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6247, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7102:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6250, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "7128:14:30", + "nodeType": "VariableDeclaration", + "scope": 6279, + "src": "7123:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6249, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7123:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7101:42:30" + }, + "returnParameters": { + "id": 6252, + "nodeType": "ParameterList", + "parameters": [], + "src": "7161:0:30" + }, + "scope": 6926, + "src": "7067:419:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6312, + "nodeType": "Block", + "src": "7765:303:30", + "statements": [ + { + "assignments": [ + 6290 + ], + "declarations": [ + { + "constant": false, + "id": 6290, + "mutability": "mutable", + "name": "$", + "nameLocation": "7811:1:30", + "nodeType": "VariableDeclaration", + "scope": 6312, + "src": "7775:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6289, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6288, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7775:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "7775:27:30" + }, + "referencedDeclaration": 5997, + "src": "7775:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6293, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6291, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "7815:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7815:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7775:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6295, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "7918:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6296, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6290, + "src": "7931:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6294, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "7898:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7898:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6298, + "nodeType": "ExpressionStatement", + "src": "7898:35:30" + }, + { + "expression": { + "id": 6306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 6299, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6290, + "src": "7944:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6302, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7946:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "7944:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6303, + "indexExpression": { + "id": 6301, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "7965:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7944:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7978:13:30", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 5967, + "src": "7944:47:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6305, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6285, + "src": "7994:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "src": "7944:62:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 6307, + "nodeType": "ExpressionStatement", + "src": "7944:62:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6309, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "8049:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6308, + "name": "ServiceCapabilitiesUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6076, + "src": "8022:26:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 6310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8022:39:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6311, + "nodeType": "EmitStatement", + "src": "8017:44:30" + } + ] + }, + "documentation": { + "id": 6280, + "nodeType": "StructuredDocumentation", + "src": "7492:167:30", + "text": " @notice Sets the Service capabilities for a given hash.\n @param serviceHash Hash of the service\n @param capabilities Capabilities" + }, + "id": 6313, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceCapabilities", + "nameLocation": "7673:23:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6282, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7705:11:30", + "nodeType": "VariableDeclaration", + "scope": 6313, + "src": "7697:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6281, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7697:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6285, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "7734:12:30", + "nodeType": "VariableDeclaration", + "scope": 6313, + "src": "7718:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 6283, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7718:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 6284, + "nodeType": "ArrayTypeName", + "src": "7718:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "7696:51:30" + }, + "returnParameters": { + "id": 6287, + "nodeType": "ParameterList", + "parameters": [], + "src": "7765:0:30" + }, + "scope": 6926, + "src": "7664:404:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6347, + "nodeType": "Block", + "src": "8323:313:30", + "statements": [ + { + "assignments": [ + 6323 + ], + "declarations": [ + { + "constant": false, + "id": 6323, + "mutability": "mutable", + "name": "$", + "nameLocation": "8369:1:30", + "nodeType": "VariableDeclaration", + "scope": 6347, + "src": "8333:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6322, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6321, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8333:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "8333:27:30" + }, + "referencedDeclaration": 5997, + "src": "8333:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6326, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6324, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "8373:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8373:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8333:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6328, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6316, + "src": "8476:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6329, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6323, + "src": "8489:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6327, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "8456:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8456:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6331, + "nodeType": "ExpressionStatement", + "src": "8456:35:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6339, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6318, + "src": "8555:10:30", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 6332, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6323, + "src": "8502:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6335, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8504:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "8502:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6336, + "indexExpression": { + "id": 6334, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6316, + "src": "8523:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8502:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8536:13:30", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 5967, + "src": "8502:47:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 6338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8550:4:30", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "8502:52:30", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_string_storage_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer,string storage ref)" + } + }, + "id": 6340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8502:64:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6341, + "nodeType": "ExpressionStatement", + "src": "8502:64:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6343, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6316, + "src": "8605:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6344, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6318, + "src": "8618:10:30", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6342, + "name": "ServiceCapabilityAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6082, + "src": "8582:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8582:47:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6346, + "nodeType": "EmitStatement", + "src": "8577:52:30" + } + ] + }, + "documentation": { + "id": 6314, + "nodeType": "StructuredDocumentation", + "src": "8074:149:30", + "text": " @notice Adds a capability to the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 6348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addServiceCapability", + "nameLocation": "8237:21:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6316, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "8267:11:30", + "nodeType": "VariableDeclaration", + "scope": 6348, + "src": "8259:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6315, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8259:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6318, + "mutability": "mutable", + "name": "capability", + "nameLocation": "8294:10:30", + "nodeType": "VariableDeclaration", + "scope": 6348, + "src": "8280:24:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6317, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8280:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8258:47:30" + }, + "returnParameters": { + "id": 6320, + "nodeType": "ParameterList", + "parameters": [], + "src": "8323:0:30" + }, + "scope": 6926, + "src": "8228:408:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6430, + "nodeType": "Block", + "src": "8899:660:30", + "statements": [ + { + "assignments": [ + 6358 + ], + "declarations": [ + { + "constant": false, + "id": 6358, + "mutability": "mutable", + "name": "$", + "nameLocation": "8945:1:30", + "nodeType": "VariableDeclaration", + "scope": 6430, + "src": "8909:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6357, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6356, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8909:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "8909:27:30" + }, + "referencedDeclaration": 5997, + "src": "8909:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6361, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6359, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "8949:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8949:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8909:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6363, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6351, + "src": "9052:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6364, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6358, + "src": "9065:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6362, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "9032:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9032:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6366, + "nodeType": "ExpressionStatement", + "src": "9032:35:30" + }, + { + "assignments": [ + 6371 + ], + "declarations": [ + { + "constant": false, + "id": 6371, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "9095:12:30", + "nodeType": "VariableDeclaration", + "scope": 6430, + "src": "9078:29:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 6369, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9078:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 6370, + "nodeType": "ArrayTypeName", + "src": "9078:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 6377, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 6372, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6358, + "src": "9110:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6373, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9112:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "9110:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6375, + "indexExpression": { + "id": 6374, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6351, + "src": "9131:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9110:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9144:13:30", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 5967, + "src": "9110:47:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9078:79:30" + }, + { + "body": { + "id": 6428, + "nodeType": "Block", + "src": "9217:336:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 6392, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9262:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6394, + "indexExpression": { + "id": 6393, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6379, + "src": "9275:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9262:15:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "expression": { + "id": 6390, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9245:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9249:12:30", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9245:16:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9245:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6389, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9235:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9235:44:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6400, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6353, + "src": "9310:10:30", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 6398, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9293:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9297:12:30", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9293:16:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9293:28:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6397, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9283:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9283:39:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9235:87:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6427, + "nodeType": "IfStatement", + "src": "9231:312:30", + "trueBody": { + "id": 6426, + "nodeType": "Block", + "src": "9324:219:30", + "statements": [ + { + "expression": { + "id": 6413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 6404, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9342:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6406, + "indexExpression": { + "id": 6405, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6379, + "src": "9355:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9342:15:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 6407, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9360:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6412, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6408, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9373:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9386:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9373:19:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 6410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9395:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9373:23:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9360:37:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "src": "9342:55:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6414, + "nodeType": "ExpressionStatement", + "src": "9342:55:30" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 6415, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9415:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9428:3:30", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "9415:16:30", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer)" + } + }, + "id": 6418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9415:18:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6419, + "nodeType": "ExpressionStatement", + "src": "9415:18:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6421, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6351, + "src": "9481:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6422, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6353, + "src": "9494:10:30", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6420, + "name": "ServiceCapabilityRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6088, + "src": "9456:24:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 6423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9456:49:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6424, + "nodeType": "EmitStatement", + "src": "9451:54:30" + }, + { + "id": 6425, + "nodeType": "Break", + "src": "9523:5:30" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6382, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6379, + "src": "9187:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 6383, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6371, + "src": "9191:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 6384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9204:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9191:19:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9187:23:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6429, + "initializationExpression": { + "assignments": [ + 6379 + ], + "declarations": [ + { + "constant": false, + "id": 6379, + "mutability": "mutable", + "name": "i", + "nameLocation": "9180:1:30", + "nodeType": "VariableDeclaration", + "scope": 6429, + "src": "9172:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9172:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6381, + "initialValue": { + "hexValue": "30", + "id": 6380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9184:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9172:13:30" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 6387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9212:3:30", + "subExpression": { + "id": 6386, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6379, + "src": "9212:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6388, + "nodeType": "ExpressionStatement", + "src": "9212:3:30" + }, + "nodeType": "ForStatement", + "src": "9167:386:30" + } + ] + }, + "documentation": { + "id": 6349, + "nodeType": "StructuredDocumentation", + "src": "8642:154:30", + "text": " @notice Removes a capability from the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 6431, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeServiceCapability", + "nameLocation": "8810:24:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6351, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "8843:11:30", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8835:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8835:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6353, + "mutability": "mutable", + "name": "capability", + "nameLocation": "8870:10:30", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "8856:24:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6352, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8856:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8834:47:30" + }, + "returnParameters": { + "id": 6355, + "nodeType": "ParameterList", + "parameters": [], + "src": "8899:0:30" + }, + "scope": 6926, + "src": "8801:758:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6449, + "nodeType": "Block", + "src": "9718:134:30", + "statements": [ + { + "assignments": [ + 6440 + ], + "declarations": [ + { + "constant": false, + "id": 6440, + "mutability": "mutable", + "name": "$", + "nameLocation": "9764:1:30", + "nodeType": "VariableDeclaration", + "scope": 6449, + "src": "9728:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6439, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6438, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "9728:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "9728:27:30" + }, + "referencedDeclaration": 5997, + "src": "9728:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6443, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6441, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "9768:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9768:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9728:73:30" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 6444, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6440, + "src": "9818:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6445, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9820:16:30", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5978, + "src": "9818:18:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9837:6:30", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3304, + "src": "9818:25:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$3187_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9818:27:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 6437, + "id": 6448, + "nodeType": "Return", + "src": "9811:34:30" + } + ] + }, + "documentation": { + "id": 6432, + "nodeType": "StructuredDocumentation", + "src": "9565:64:30", + "text": " @notice Returns all supported service hashes." + }, + "functionSelector": "42072bbd", + "id": 6450, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllServiceHashes", + "nameLocation": "9643:19:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6433, + "nodeType": "ParameterList", + "parameters": [], + "src": "9662:2:30" + }, + "returnParameters": { + "id": 6437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6436, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "9703:13:30", + "nodeType": "VariableDeclaration", + "scope": 6450, + "src": "9686:30:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 6434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9686:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6435, + "nodeType": "ArrayTypeName", + "src": "9686:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "9685:32:30" + }, + "scope": 6926, + "src": "9634:218:30", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6475, + "nodeType": "Block", + "src": "10584:226:30", + "statements": [ + { + "assignments": [ + 6461 + ], + "declarations": [ + { + "constant": false, + "id": 6461, + "mutability": "mutable", + "name": "$", + "nameLocation": "10630:1:30", + "nodeType": "VariableDeclaration", + "scope": 6475, + "src": "10594:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6460, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6459, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "10594:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "10594:27:30" + }, + "referencedDeclaration": 5997, + "src": "10594:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6464, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6462, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "10634:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10634:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10594:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6466, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6453, + "src": "10737:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6467, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6461, + "src": "10750:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6465, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "10717:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10717:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6469, + "nodeType": "ExpressionStatement", + "src": "10717:35:30" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 6470, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6461, + "src": "10770:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6471, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10772:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "10770:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6473, + "indexExpression": { + "id": 6472, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6453, + "src": "10791:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10770:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "functionReturnParameters": 6458, + "id": 6474, + "nodeType": "Return", + "src": "10763:40:30" + } + ] + }, + "documentation": { + "id": 6451, + "nodeType": "StructuredDocumentation", + "src": "9858:627:30", + "text": " @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n `serviceHash` is keccak256 hash of the pkg + service name as:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceHash Hash of the service" + }, + "functionSelector": "da47d856", + "id": 6476, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getService", + "nameLocation": "10499:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6453, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10518:11:30", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "10510:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6452, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10510:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10509:21:30" + }, + "returnParameters": { + "id": 6458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6457, + "mutability": "mutable", + "name": "service", + "nameLocation": "10575:7:30", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "10560:22:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_memory_ptr", + "typeString": "struct PartnerConfiguration.Service" + }, + "typeName": { + "id": 6456, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6455, + "name": "Service", + "nameLocations": [ + "10560:7:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5968, + "src": "10560:7:30" + }, + "referencedDeclaration": 5968, + "src": "10560:7:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "visibility": "internal" + } + ], + "src": "10559:24:30" + }, + "scope": 6926, + "src": "10490:320:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6501, + "nodeType": "Block", + "src": "11028:231:30", + "statements": [ + { + "assignments": [ + 6486 + ], + "declarations": [ + { + "constant": false, + "id": 6486, + "mutability": "mutable", + "name": "$", + "nameLocation": "11074:1:30", + "nodeType": "VariableDeclaration", + "scope": 6501, + "src": "11038:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6485, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6484, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11038:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "11038:27:30" + }, + "referencedDeclaration": 5997, + "src": "11038:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6489, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6487, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "11078:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11078:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11038:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6491, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6479, + "src": "11181:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6492, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6486, + "src": "11194:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6490, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "11161:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11161:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6494, + "nodeType": "ExpressionStatement", + "src": "11161:35:30" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 6495, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6486, + "src": "11214:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11216:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "11214:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6498, + "indexExpression": { + "id": 6497, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6479, + "src": "11235:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11214:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6499, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11248:4:30", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 5961, + "src": "11214:38:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6483, + "id": 6500, + "nodeType": "Return", + "src": "11207:45:30" + } + ] + }, + "documentation": { + "id": 6477, + "nodeType": "StructuredDocumentation", + "src": "10816:121:30", + "text": " @notice Returns the fee for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "eb5ea273", + "id": 6502, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "10951:13:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6479, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10973:11:30", + "nodeType": "VariableDeclaration", + "scope": 6502, + "src": "10965:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6478, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10965:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10964:21:30" + }, + "returnParameters": { + "id": 6483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6482, + "mutability": "mutable", + "name": "fee", + "nameLocation": "11023:3:30", + "nodeType": "VariableDeclaration", + "scope": 6502, + "src": "11015:11:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11015:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11014:13:30" + }, + "scope": 6926, + "src": "10942:317:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6527, + "nodeType": "Block", + "src": "11508:242:30", + "statements": [ + { + "assignments": [ + 6512 + ], + "declarations": [ + { + "constant": false, + "id": 6512, + "mutability": "mutable", + "name": "$", + "nameLocation": "11554:1:30", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "11518:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6511, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6510, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11518:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "11518:27:30" + }, + "referencedDeclaration": 5997, + "src": "11518:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6515, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6513, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "11558:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11558:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11518:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6517, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6505, + "src": "11661:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6518, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6512, + "src": "11674:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6516, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "11641:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11641:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6520, + "nodeType": "ExpressionStatement", + "src": "11641:35:30" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 6521, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6512, + "src": "11694:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6522, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11696:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "11694:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6524, + "indexExpression": { + "id": 6523, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6505, + "src": "11715:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11694:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11728:15:30", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 5964, + "src": "11694:49:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6509, + "id": 6526, + "nodeType": "Return", + "src": "11687:56:30" + } + ] + }, + "documentation": { + "id": 6503, + "nodeType": "StructuredDocumentation", + "src": "11265:133:30", + "text": " @notice Returns the restricted rate for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "8f69347d", + "id": 6528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "11412:24:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6505, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "11445:11:30", + "nodeType": "VariableDeclaration", + "scope": 6528, + "src": "11437:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6504, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11437:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11436:21:30" + }, + "returnParameters": { + "id": 6509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6508, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "11492:14:30", + "nodeType": "VariableDeclaration", + "scope": 6528, + "src": "11487:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6507, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11487:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11486:21:30" + }, + "scope": 6926, + "src": "11403:347:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6554, + "nodeType": "Block", + "src": "12003:240:30", + "statements": [ + { + "assignments": [ + 6539 + ], + "declarations": [ + { + "constant": false, + "id": 6539, + "mutability": "mutable", + "name": "$", + "nameLocation": "12049:1:30", + "nodeType": "VariableDeclaration", + "scope": 6554, + "src": "12013:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6538, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6537, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12013:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "12013:27:30" + }, + "referencedDeclaration": 5997, + "src": "12013:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6542, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6540, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "12053:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12053:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12013:73:30" + }, + { + "expression": { + "arguments": [ + { + "id": 6544, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6531, + "src": "12156:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6545, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6539, + "src": "12169:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 6543, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6577, + "src": "12136:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 6546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12136:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6547, + "nodeType": "ExpressionStatement", + "src": "12136:35:30" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 6548, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6539, + "src": "12189:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12191:18:30", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 5983, + "src": "12189:20:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$5968_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 6551, + "indexExpression": { + "id": 6550, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6531, + "src": "12210:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12189:33:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$5968_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 6552, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12223:13:30", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 5967, + "src": "12189:47:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "functionReturnParameters": 6536, + "id": 6553, + "nodeType": "Return", + "src": "12182:54:30" + } + ] + }, + "documentation": { + "id": 6529, + "nodeType": "StructuredDocumentation", + "src": "11756:130:30", + "text": " @notice Returns the capabilities for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "5e07f869", + "id": 6555, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "11900:22:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6531, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "11931:11:30", + "nodeType": "VariableDeclaration", + "scope": 6555, + "src": "11923:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6530, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11923:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11922:21:30" + }, + "returnParameters": { + "id": 6536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6535, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "11989:12:30", + "nodeType": "VariableDeclaration", + "scope": 6555, + "src": "11973:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 6533, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11973:6:30", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 6534, + "nodeType": "ArrayTypeName", + "src": "11973:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "11972:30:30" + }, + "scope": 6926, + "src": "11891:352:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6576, + "nodeType": "Block", + "src": "12465:166:30", + "statements": [ + { + "condition": { + "id": 6569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12518:41:30", + "subExpression": { + "arguments": [ + { + "id": 6567, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "12547:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 6564, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6561, + "src": "12519:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6565, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12521:16:30", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5978, + "src": "12519:18:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12538:8:30", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 3241, + "src": "12519:27:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$3187_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 6568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12519:40:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6575, + "nodeType": "IfStatement", + "src": "12514:111:30", + "trueBody": { + "id": 6574, + "nodeType": "Block", + "src": "12561:64:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6571, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "12602:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6570, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6016, + "src": "12582:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12582:32:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6573, + "nodeType": "RevertStatement", + "src": "12575:39:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 6556, + "nodeType": "StructuredDocumentation", + "src": "12249:109:30", + "text": " @notice Checks if the service exists.\n @param serviceHash Hash of the service" + }, + "id": 6577, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkServiceExists", + "nameLocation": "12372:19:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6558, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "12400:11:30", + "nodeType": "VariableDeclaration", + "scope": 6577, + "src": "12392:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6557, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12392:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6561, + "mutability": "mutable", + "name": "$", + "nameLocation": "12449:1:30", + "nodeType": "VariableDeclaration", + "scope": 6577, + "src": "12413:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6560, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6559, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12413:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "12413:27:30" + }, + "referencedDeclaration": 5997, + "src": "12413:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "12391:60:30" + }, + "returnParameters": { + "id": 6563, + "nodeType": "ParameterList", + "parameters": [], + "src": "12465:0:30" + }, + "scope": 6926, + "src": "12363:268:30", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6609, + "nodeType": "Block", + "src": "13067:295:30", + "statements": [ + { + "assignments": [ + 6585 + ], + "declarations": [ + { + "constant": false, + "id": 6585, + "mutability": "mutable", + "name": "$", + "nameLocation": "13113:1:30", + "nodeType": "VariableDeclaration", + "scope": 6609, + "src": "13077:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6584, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6583, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13077:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "13077:27:30" + }, + "referencedDeclaration": 5997, + "src": "13077:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6588, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6586, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "13117:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13117:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13077:73:30" + }, + { + "assignments": [ + 6590 + ], + "declarations": [ + { + "constant": false, + "id": 6590, + "mutability": "mutable", + "name": "added", + "nameLocation": "13166:5:30", + "nodeType": "VariableDeclaration", + "scope": 6609, + "src": "13161:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6589, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13161:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6596, + "initialValue": { + "arguments": [ + { + "id": 6594, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6580, + "src": "13203:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 6591, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6585, + "src": "13174:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6592, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13176:22:30", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5996, + "src": "13174:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6593, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13199:3:30", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3205, + "src": "13174:28:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$3187_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 6595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13174:41:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13161:54:30" + }, + { + "condition": { + "id": 6598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13230:6:30", + "subExpression": { + "id": 6597, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6590, + "src": "13231:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6604, + "nodeType": "IfStatement", + "src": "13226:83:30", + "trueBody": { + "id": 6603, + "nodeType": "Block", + "src": "13238:71:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6600, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6580, + "src": "13286:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6599, + "name": "WantedServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6020, + "src": "13259:26:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13259:39:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6602, + "nodeType": "RevertStatement", + "src": "13252:46:30" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6606, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6580, + "src": "13343:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6605, + "name": "WantedServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6056, + "src": "13324:18:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 6607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13324:31:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6608, + "nodeType": "EmitStatement", + "src": "13319:36:30" + } + ] + }, + "documentation": { + "id": 6578, + "nodeType": "StructuredDocumentation", + "src": "12810:187:30", + "text": " @notice Adds a wanted service hash to the wanted services set.\n Reverts if the service already exists.\n @param serviceHash Hash of the service" + }, + "id": 6610, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWantedService", + "nameLocation": "13011:17:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6580, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "13037:11:30", + "nodeType": "VariableDeclaration", + "scope": 6610, + "src": "13029:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6579, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13029:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13028:21:30" + }, + "returnParameters": { + "id": 6582, + "nodeType": "ParameterList", + "parameters": [], + "src": "13067:0:30" + }, + "scope": 6926, + "src": "13002:360:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6642, + "nodeType": "Block", + "src": "13633:303:30", + "statements": [ + { + "assignments": [ + 6618 + ], + "declarations": [ + { + "constant": false, + "id": 6618, + "mutability": "mutable", + "name": "$", + "nameLocation": "13679:1:30", + "nodeType": "VariableDeclaration", + "scope": 6642, + "src": "13643:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6617, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6616, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13643:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "13643:27:30" + }, + "referencedDeclaration": 5997, + "src": "13643:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6621, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6619, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "13683:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13683:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13643:73:30" + }, + { + "assignments": [ + 6623 + ], + "declarations": [ + { + "constant": false, + "id": 6623, + "mutability": "mutable", + "name": "removed", + "nameLocation": "13732:7:30", + "nodeType": "VariableDeclaration", + "scope": 6642, + "src": "13727:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6622, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13727:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6629, + "initialValue": { + "arguments": [ + { + "id": 6627, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6613, + "src": "13774:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 6624, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6618, + "src": "13742:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13744:22:30", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5996, + "src": "13742:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6626, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13767:6:30", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "13742:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$3187_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 6628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13742:44:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13727:59:30" + }, + { + "condition": { + "id": 6631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13801:8:30", + "subExpression": { + "id": 6630, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6623, + "src": "13802:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6637, + "nodeType": "IfStatement", + "src": "13797:84:30", + "trueBody": { + "id": 6636, + "nodeType": "Block", + "src": "13811:70:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6633, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6613, + "src": "13858:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6632, + "name": "WantedServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "13832:25:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13832:38:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6635, + "nodeType": "RevertStatement", + "src": "13825:45:30" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6639, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6613, + "src": "13917:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6638, + "name": "WantedServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6060, + "src": "13896:20:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 6640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13896:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6641, + "nodeType": "EmitStatement", + "src": "13891:38:30" + } + ] + }, + "documentation": { + "id": 6611, + "nodeType": "StructuredDocumentation", + "src": "13368:192:30", + "text": " @notice Removes a wanted service hash from the wanted services set.\n Reverts if the service does not exist.\n @param serviceHash Hash of the service" + }, + "id": 6643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWantedService", + "nameLocation": "13574:20:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6613, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "13603:11:30", + "nodeType": "VariableDeclaration", + "scope": 6643, + "src": "13595:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6612, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13595:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13594:21:30" + }, + "returnParameters": { + "id": 6615, + "nodeType": "ParameterList", + "parameters": [], + "src": "13633:0:30" + }, + "scope": 6926, + "src": "13565:371:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6661, + "nodeType": "Block", + "src": "14161:140:30", + "statements": [ + { + "assignments": [ + 6652 + ], + "declarations": [ + { + "constant": false, + "id": 6652, + "mutability": "mutable", + "name": "$", + "nameLocation": "14207:1:30", + "nodeType": "VariableDeclaration", + "scope": 6661, + "src": "14171:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6651, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6650, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14171:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "14171:27:30" + }, + "referencedDeclaration": 5997, + "src": "14171:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6655, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6653, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "14211:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14211:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14171:73:30" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 6656, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6652, + "src": "14261:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14263:22:30", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5996, + "src": "14261:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$3187_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 6658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14286:6:30", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3304, + "src": "14261:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$3187_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$3187_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 6659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14261:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 6649, + "id": 6660, + "nodeType": "Return", + "src": "14254:40:30" + } + ] + }, + "documentation": { + "id": 6644, + "nodeType": "StructuredDocumentation", + "src": "13942:119:30", + "text": " @notice Returns all wanted service hashes.\n @return serviceHashes Wanted service hashes" + }, + "functionSelector": "136f50ca", + "id": 6662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServiceHashes", + "nameLocation": "14075:22:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6645, + "nodeType": "ParameterList", + "parameters": [], + "src": "14097:2:30" + }, + "returnParameters": { + "id": 6649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6648, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "14146:13:30", + "nodeType": "VariableDeclaration", + "scope": 6662, + "src": "14129:30:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 6646, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14129:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6647, + "nodeType": "ArrayTypeName", + "src": "14129:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "14128:32:30" + }, + "scope": 6926, + "src": "14066:235:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6695, + "nodeType": "Block", + "src": "14705:284:30", + "statements": [ + { + "assignments": [ + 6670 + ], + "declarations": [ + { + "constant": false, + "id": 6670, + "mutability": "mutable", + "name": "$", + "nameLocation": "14751:1:30", + "nodeType": "VariableDeclaration", + "scope": 6695, + "src": "14715:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6669, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6668, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14715:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "14715:27:30" + }, + "referencedDeclaration": 5997, + "src": "14715:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6673, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6671, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "14755:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14755:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14715:73:30" + }, + { + "assignments": [ + 6675 + ], + "declarations": [ + { + "constant": false, + "id": 6675, + "mutability": "mutable", + "name": "added", + "nameLocation": "14803:5:30", + "nodeType": "VariableDeclaration", + "scope": 6695, + "src": "14798:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6674, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14798:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6682, + "initialValue": { + "arguments": [ + { + "id": 6680, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6665, + "src": "14847:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 6676, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6670, + "src": "14811:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6677, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14813:12:30", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 5986, + "src": "14811:14:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 6678, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14826:16:30", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 5973, + "src": "14811:31:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14843:3:30", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3335, + "src": "14811:35:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14811:43:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14798:56:30" + }, + { + "condition": { + "id": 6684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14869:6:30", + "subExpression": { + "id": 6683, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6675, + "src": "14870:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6690, + "nodeType": "IfStatement", + "src": "14865:77:30", + "trueBody": { + "id": 6689, + "nodeType": "Block", + "src": "14877:65:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6686, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6665, + "src": "14924:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6685, + "name": "PaymentTokenAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6028, + "src": "14898:25:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14898:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6688, + "nodeType": "RevertStatement", + "src": "14891:40:30" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6692, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6665, + "src": "14975:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6691, + "name": "PaymentTokenAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6092, + "src": "14957:17:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14957:25:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6694, + "nodeType": "EmitStatement", + "src": "14952:30:30" + } + ] + }, + "documentation": { + "id": 6663, + "nodeType": "StructuredDocumentation", + "src": "14519:120:30", + "text": " @notice Adds a supported payment token.\n @param _token Payment token address to be added" + }, + "id": 6696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSupportedToken", + "nameLocation": "14653:18:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6665, + "mutability": "mutable", + "name": "_token", + "nameLocation": "14680:6:30", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "14672:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14672:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14671:16:30" + }, + "returnParameters": { + "id": 6667, + "nodeType": "ParameterList", + "parameters": [], + "src": "14705:0:30" + }, + "scope": 6926, + "src": "14644:345:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6729, + "nodeType": "Block", + "src": "15189:292:30", + "statements": [ + { + "assignments": [ + 6704 + ], + "declarations": [ + { + "constant": false, + "id": 6704, + "mutability": "mutable", + "name": "$", + "nameLocation": "15235:1:30", + "nodeType": "VariableDeclaration", + "scope": 6729, + "src": "15199:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6703, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6702, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15199:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "15199:27:30" + }, + "referencedDeclaration": 5997, + "src": "15199:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6707, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6705, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "15239:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15239:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15199:73:30" + }, + { + "assignments": [ + 6709 + ], + "declarations": [ + { + "constant": false, + "id": 6709, + "mutability": "mutable", + "name": "removed", + "nameLocation": "15287:7:30", + "nodeType": "VariableDeclaration", + "scope": 6729, + "src": "15282:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6708, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15282:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6716, + "initialValue": { + "arguments": [ + { + "id": 6714, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6699, + "src": "15336:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 6710, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6704, + "src": "15297:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15299:12:30", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 5986, + "src": "15297:14:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 6712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15312:16:30", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 5973, + "src": "15297:31:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6713, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15329:6:30", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "15297:38:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15297:46:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15282:61:30" + }, + { + "condition": { + "id": 6718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15358:8:30", + "subExpression": { + "id": 6717, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6709, + "src": "15359:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6724, + "nodeType": "IfStatement", + "src": "15354:78:30", + "trueBody": { + "id": 6723, + "nodeType": "Block", + "src": "15368:64:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6720, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6699, + "src": "15414:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6719, + "name": "PaymentTokenDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6032, + "src": "15389:24:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15389:32:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6722, + "nodeType": "RevertStatement", + "src": "15382:39:30" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6726, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6699, + "src": "15467:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6725, + "name": "PaymentTokenRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6096, + "src": "15447:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15447:27:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6728, + "nodeType": "EmitStatement", + "src": "15442:32:30" + } + ] + }, + "documentation": { + "id": 6697, + "nodeType": "StructuredDocumentation", + "src": "14995:125:30", + "text": " @notice Removes a supported payment token.\n @param _token Payment token address to be removed" + }, + "id": 6730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSupportedToken", + "nameLocation": "15134:21:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6699, + "mutability": "mutable", + "name": "_token", + "nameLocation": "15164:6:30", + "nodeType": "VariableDeclaration", + "scope": 6730, + "src": "15156:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15156:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15155:16:30" + }, + "returnParameters": { + "id": 6701, + "nodeType": "ParameterList", + "parameters": [], + "src": "15189:0:30" + }, + "scope": 6926, + "src": "15125:356:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6749, + "nodeType": "Block", + "src": "15692:147:30", + "statements": [ + { + "assignments": [ + 6739 + ], + "declarations": [ + { + "constant": false, + "id": 6739, + "mutability": "mutable", + "name": "$", + "nameLocation": "15738:1:30", + "nodeType": "VariableDeclaration", + "scope": 6749, + "src": "15702:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6738, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6737, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15702:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "15702:27:30" + }, + "referencedDeclaration": 5997, + "src": "15702:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6742, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6740, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "15742:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15742:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15702:73:30" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "expression": { + "id": 6743, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6739, + "src": "15792:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15794:12:30", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 5986, + "src": "15792:14:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 6745, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15807:16:30", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 5973, + "src": "15792:31:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15824:6:30", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "15792:38:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3308_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 6747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15792:40:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 6736, + "id": 6748, + "nodeType": "Return", + "src": "15785:47:30" + } + ] + }, + "documentation": { + "id": 6731, + "nodeType": "StructuredDocumentation", + "src": "15487:116:30", + "text": " @notice Returns supported token addresses.\n @return tokens Supported token addresses" + }, + "functionSelector": "d3c7c2c7", + "id": 6750, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedTokens", + "nameLocation": "15617:18:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6732, + "nodeType": "ParameterList", + "parameters": [], + "src": "15635:2:30" + }, + "returnParameters": { + "id": 6736, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6735, + "mutability": "mutable", + "name": "tokens", + "nameLocation": "15684:6:30", + "nodeType": "VariableDeclaration", + "scope": 6750, + "src": "15667:23:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 6733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15667:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6734, + "nodeType": "ArrayTypeName", + "src": "15667:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "15666:25:30" + }, + "scope": 6926, + "src": "15608:231:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6774, + "nodeType": "Block", + "src": "16059:236:30", + "statements": [ + { + "assignments": [ + 6758 + ], + "declarations": [ + { + "constant": false, + "id": 6758, + "mutability": "mutable", + "name": "$", + "nameLocation": "16105:1:30", + "nodeType": "VariableDeclaration", + "scope": 6774, + "src": "16069:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6757, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6756, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16069:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "16069:27:30" + }, + "referencedDeclaration": 5997, + "src": "16069:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6761, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6759, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "16109:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16109:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16069:73:30" + }, + { + "expression": { + "id": 6768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "expression": { + "id": 6762, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6758, + "src": "16152:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6765, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16154:12:30", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 5986, + "src": "16152:14:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 6766, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16167:24:30", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 5970, + "src": "16152:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6767, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6753, + "src": "16194:24:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16152:66:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6769, + "nodeType": "ExpressionStatement", + "src": "16152:66:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6771, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6753, + "src": "16263:24:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6770, + "name": "OffChainPaymentSupportUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6100, + "src": "16233:29:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 6772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16233:55:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6773, + "nodeType": "EmitStatement", + "src": "16228:60:30" + } + ] + }, + "documentation": { + "id": 6751, + "nodeType": "StructuredDocumentation", + "src": "15893:75:30", + "text": " @notice Sets the off-chain payment support is supported." + }, + "id": 6775, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setOffChainPaymentSupported", + "nameLocation": "15982:28:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6753, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "16016:24:30", + "nodeType": "VariableDeclaration", + "scope": 6775, + "src": "16011:29:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6752, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16011:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16010:31:30" + }, + "returnParameters": { + "id": 6755, + "nodeType": "ParameterList", + "parameters": [], + "src": "16059:0:30" + }, + "scope": 6926, + "src": "15973:322:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6791, + "nodeType": "Block", + "src": "16473:146:30", + "statements": [ + { + "assignments": [ + 6783 + ], + "declarations": [ + { + "constant": false, + "id": 6783, + "mutability": "mutable", + "name": "$", + "nameLocation": "16519:1:30", + "nodeType": "VariableDeclaration", + "scope": 6791, + "src": "16483:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6782, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6781, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16483:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "16483:27:30" + }, + "referencedDeclaration": 5997, + "src": "16483:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6786, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6784, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "16523:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16523:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16483:73:30" + }, + { + "expression": { + "expression": { + "expression": { + "id": 6787, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6783, + "src": "16573:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16575:12:30", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 5986, + "src": "16573:14:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$5974_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 6789, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16588:24:30", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 5970, + "src": "16573:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6780, + "id": 6790, + "nodeType": "Return", + "src": "16566:46:30" + } + ] + }, + "documentation": { + "id": 6776, + "nodeType": "StructuredDocumentation", + "src": "16301:96:30", + "text": " @notice Returns true if off-chain payment is supported for the given service." + }, + "functionSelector": "241bbbfc", + "id": 6792, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "offChainPaymentSupported", + "nameLocation": "16411:24:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6777, + "nodeType": "ParameterList", + "parameters": [], + "src": "16435:2:30" + }, + "returnParameters": { + "id": 6780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6779, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6792, + "src": "16467:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6778, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16467:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16466:6:30" + }, + "scope": 6926, + "src": "16402:217:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6834, + "nodeType": "Block", + "src": "17114:348:30", + "statements": [ + { + "assignments": [ + 6802 + ], + "declarations": [ + { + "constant": false, + "id": 6802, + "mutability": "mutable", + "name": "$", + "nameLocation": "17160:1:30", + "nodeType": "VariableDeclaration", + "scope": 6834, + "src": "17124:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6801, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6800, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17124:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "17124:27:30" + }, + "referencedDeclaration": 5997, + "src": "17124:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6805, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6803, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "17164:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17164:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17124:73:30" + }, + { + "assignments": [ + 6807 + ], + "declarations": [ + { + "constant": false, + "id": 6807, + "mutability": "mutable", + "name": "added", + "nameLocation": "17213:5:30", + "nodeType": "VariableDeclaration", + "scope": 6834, + "src": "17208:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6806, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17208:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6813, + "initialValue": { + "arguments": [ + { + "id": 6811, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6795, + "src": "17250:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 6808, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6802, + "src": "17221:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6809, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17223:22:30", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5989, + "src": "17221:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6810, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17246:3:30", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3335, + "src": "17221:28:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17221:43:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17208:56:30" + }, + { + "condition": { + "id": 6815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17279:6:30", + "subExpression": { + "id": 6814, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6807, + "src": "17280:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6821, + "nodeType": "IfStatement", + "src": "17275:81:30", + "trueBody": { + "id": 6820, + "nodeType": "Block", + "src": "17287:69:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6817, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6795, + "src": "17331:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6816, + "name": "PublicKeyAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "17308:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17308:37:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6819, + "nodeType": "RevertStatement", + "src": "17301:44:30" + } + ] + } + }, + { + "expression": { + "id": 6828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 6822, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6802, + "src": "17366:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6825, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17368:11:30", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 5993, + "src": "17366:13:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 6826, + "indexExpression": { + "id": 6824, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6795, + "src": "17380:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17366:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6827, + "name": "publicKeyData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6797, + "src": "17397:13:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "17366:44:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 6829, + "nodeType": "ExpressionStatement", + "src": "17366:44:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6831, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6795, + "src": "17441:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6830, + "name": "PublicKeyAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6104, + "src": "17426:14:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17426:29:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6833, + "nodeType": "EmitStatement", + "src": "17421:34:30" + } + ] + }, + "documentation": { + "id": 6793, + "nodeType": "StructuredDocumentation", + "src": "16798:220:30", + "text": " @notice Adds public key with an address. Reverts if the public key already\n exists.\n Beware: This functions does not check if the public key is actually for the\n given address." + }, + "id": 6835, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPublicKey", + "nameLocation": "17032:13:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6795, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "17054:13:30", + "nodeType": "VariableDeclaration", + "scope": 6835, + "src": "17046:21:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17046:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6797, + "mutability": "mutable", + "name": "publicKeyData", + "nameLocation": "17082:13:30", + "nodeType": "VariableDeclaration", + "scope": 6835, + "src": "17069:26:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17069:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "17045:51:30" + }, + "returnParameters": { + "id": 6799, + "nodeType": "ParameterList", + "parameters": [], + "src": "17114:0:30" + }, + "scope": 6926, + "src": "17023:439:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6873, + "nodeType": "Block", + "src": "17663:346:30", + "statements": [ + { + "assignments": [ + 6843 + ], + "declarations": [ + { + "constant": false, + "id": 6843, + "mutability": "mutable", + "name": "$", + "nameLocation": "17709:1:30", + "nodeType": "VariableDeclaration", + "scope": 6873, + "src": "17673:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6842, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6841, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17673:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "17673:27:30" + }, + "referencedDeclaration": 5997, + "src": "17673:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6846, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6844, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "17713:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17713:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17673:73:30" + }, + { + "assignments": [ + 6848 + ], + "declarations": [ + { + "constant": false, + "id": 6848, + "mutability": "mutable", + "name": "removed", + "nameLocation": "17762:7:30", + "nodeType": "VariableDeclaration", + "scope": 6873, + "src": "17757:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6847, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17757:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 6854, + "initialValue": { + "arguments": [ + { + "id": 6852, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6838, + "src": "17804:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 6849, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6843, + "src": "17772:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6850, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17774:22:30", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5989, + "src": "17772:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17797:6:30", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "17772:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17772:46:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17757:61:30" + }, + { + "condition": { + "id": 6856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17833:8:30", + "subExpression": { + "id": 6855, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6848, + "src": "17834:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6862, + "nodeType": "IfStatement", + "src": "17829:82:30", + "trueBody": { + "id": 6861, + "nodeType": "Block", + "src": "17843:68:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6858, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6838, + "src": "17886:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6857, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6040, + "src": "17864:21:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17864:36:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6860, + "nodeType": "RevertStatement", + "src": "17857:43:30" + } + ] + } + }, + { + "expression": { + "id": 6867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "17921:35:30", + "subExpression": { + "baseExpression": { + "expression": { + "id": 6863, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6843, + "src": "17928:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17930:11:30", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 5993, + "src": "17928:13:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 6866, + "indexExpression": { + "id": 6865, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6838, + "src": "17942:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17928:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6868, + "nodeType": "ExpressionStatement", + "src": "17921:35:30" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6870, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6838, + "src": "17988:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6869, + "name": "PublicKeyRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "17971:16:30", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17971:31:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6872, + "nodeType": "EmitStatement", + "src": "17966:36:30" + } + ] + }, + "documentation": { + "id": 6836, + "nodeType": "StructuredDocumentation", + "src": "17468:124:30", + "text": " @notice Removes the public key for a given address\n Reverts if the public key does not exist" + }, + "id": 6874, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePublicKey", + "nameLocation": "17606:16:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6838, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "17631:13:30", + "nodeType": "VariableDeclaration", + "scope": 6874, + "src": "17623:21:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17623:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17622:23:30" + }, + "returnParameters": { + "id": 6840, + "nodeType": "ParameterList", + "parameters": [], + "src": "17663:0:30" + }, + "scope": 6926, + "src": "17597:412:30", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6892, + "nodeType": "Block", + "src": "18281:140:30", + "statements": [ + { + "assignments": [ + 6883 + ], + "declarations": [ + { + "constant": false, + "id": 6883, + "mutability": "mutable", + "name": "$", + "nameLocation": "18327:1:30", + "nodeType": "VariableDeclaration", + "scope": 6892, + "src": "18291:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6882, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6881, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "18291:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "18291:27:30" + }, + "referencedDeclaration": 5997, + "src": "18291:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6886, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6884, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "18331:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18331:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18291:73:30" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 6887, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6883, + "src": "18381:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18383:22:30", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5989, + "src": "18381:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6889, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18406:6:30", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "18381:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3308_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 6890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18381:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 6880, + "id": 6891, + "nodeType": "Return", + "src": "18374:40:30" + } + ] + }, + "documentation": { + "id": 6875, + "nodeType": "StructuredDocumentation", + "src": "18015:164:30", + "text": " @notice Returns the addresses of all public keys. These can then be used to\n retrieve the public keys the `getPublicKey(address)` function." + }, + "functionSelector": "ea79d07a", + "id": 6893, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKeysAddresses", + "nameLocation": "18193:22:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6876, + "nodeType": "ParameterList", + "parameters": [], + "src": "18215:2:30" + }, + "returnParameters": { + "id": 6880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6879, + "mutability": "mutable", + "name": "pubKeyAddresses", + "nameLocation": "18264:15:30", + "nodeType": "VariableDeclaration", + "scope": 6893, + "src": "18247:32:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 6877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18247:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6878, + "nodeType": "ArrayTypeName", + "src": "18247:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "18246:34:30" + }, + "scope": 6926, + "src": "18184:237:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6924, + "nodeType": "Block", + "src": "18711:269:30", + "statements": [ + { + "assignments": [ + 6903 + ], + "declarations": [ + { + "constant": false, + "id": 6903, + "mutability": "mutable", + "name": "$", + "nameLocation": "18757:1:30", + "nodeType": "VariableDeclaration", + "scope": 6924, + "src": "18721:37:30", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 6902, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6901, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "18721:27:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5997, + "src": "18721:27:30" + }, + "referencedDeclaration": 5997, + "src": "18721:27:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 6906, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6904, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6008, + "src": "18761:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$5997_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 6905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18761:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18721:73:30" + }, + { + "condition": { + "id": 6912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18809:49:30", + "subExpression": { + "arguments": [ + { + "id": 6910, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "18844:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 6907, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6903, + "src": "18810:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6908, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18812:22:30", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 5989, + "src": "18810:24:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$3308_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6909, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18835:8:30", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "18810:33:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$3308_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$3308_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 6911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18810:48:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6918, + "nodeType": "IfStatement", + "src": "18805:123:30", + "trueBody": { + "id": 6917, + "nodeType": "Block", + "src": "18860:68:30", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6914, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "18903:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6913, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6040, + "src": "18881:21:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18881:36:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6916, + "nodeType": "RevertStatement", + "src": "18874:43:30" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 6919, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6903, + "src": "18945:1:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$5997_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 6920, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18947:11:30", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 5993, + "src": "18945:13:30", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 6922, + "indexExpression": { + "id": 6921, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "18959:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18945:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 6900, + "id": 6923, + "nodeType": "Return", + "src": "18938:35:30" + } + ] + }, + "documentation": { + "id": 6894, + "nodeType": "StructuredDocumentation", + "src": "18427:186:30", + "text": " @notice Returns the public key for a given address.\n Reverts if the public key does not exist\n @param pubKeyAddress Address of the public key" + }, + "functionSelector": "857cdbb8", + "id": 6925, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKey", + "nameLocation": "18627:12:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6896, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "18648:13:30", + "nodeType": "VariableDeclaration", + "scope": 6925, + "src": "18640:21:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18640:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18639:23:30" + }, + "returnParameters": { + "id": 6900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6899, + "mutability": "mutable", + "name": "data", + "nameLocation": "18705:4:30", + "nodeType": "VariableDeclaration", + "scope": 6925, + "src": "18692:17:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6898, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18692:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18691:19:30" + }, + "scope": 6926, + "src": "18618:362:30", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 6927, + "src": "469:18513:30", + "usedErrors": [ + 580, + 583, + 6012, + 6016, + 6020, + 6024, + 6028, + 6032, + 6036, + 6040, + 6044 + ], + "usedEvents": [ + 588, + 6048, + 6052, + 6056, + 6060, + 6066, + 6072, + 6076, + 6082, + 6088, + 6092, + 6096, + 6100, + 6104, + 6108 + ] + } + ], + "src": "85:18898:30" + }, + "id": 30 + } + }, + "contracts": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "AccessControlUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "AccessControlEnumerableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "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" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows enumerating the members of each role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":\"AccessControlEnumerableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "Initializable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "UUPSUpgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "proxiableUUID()": "52d1902d", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ContextUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ReentrancyGuardUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ERC165Upgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "IAccessControl": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "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" + }, + { + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "IAccessControlEnumerable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "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" + }, + { + "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": "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\"}],\"devdoc\":{\"details\":\"External interface of AccessControlEnumerable declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":\"IAccessControlEnumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "IERC1822Proxiable": { + "abi": [ + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "proxiableUUID()": "52d1902d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ERC1967Proxy": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_1358": { + "entryPoint": null, + "id": 1358, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkNonPayable_1673": { + "entryPoint": 384, + "id": 1673, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_2511": { + "entryPoint": 503, + "id": 2511, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_1459": { + "entryPoint": 146, + "id": 1459, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionDelegateCall_2431": { + "entryPoint": 265, + "id": 2431, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_2544": { + "entryPoint": null, + "id": 2544, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@upgradeToAndCall_1493": { + "entryPoint": 51, + "id": 1493, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_2471": { + "entryPoint": 417, + "id": 2471, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": { + "entryPoint": 602, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 828, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 808, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 566, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 544, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:1966:31", + "nodeType": "YulBlock", + "src": "0:1966:31", + "statements": [ + { + "nativeSrc": "6:3:31", + "nodeType": "YulBlock", + "src": "6:3:31", + "statements": [] + }, + { + "body": { + "nativeSrc": "46:95:31", + "nodeType": "YulBlock", + "src": "46:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63:1:31", + "nodeType": "YulLiteral", + "src": "63:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "70:3:31", + "nodeType": "YulLiteral", + "src": "70:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "75:10:31", + "nodeType": "YulLiteral", + "src": "75:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "66:3:31", + "nodeType": "YulIdentifier", + "src": "66:3:31" + }, + "nativeSrc": "66:20:31", + "nodeType": "YulFunctionCall", + "src": "66:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56:6:31", + "nodeType": "YulIdentifier", + "src": "56:6:31" + }, + "nativeSrc": "56:31:31", + "nodeType": "YulFunctionCall", + "src": "56:31:31" + }, + "nativeSrc": "56:31:31", + "nodeType": "YulExpressionStatement", + "src": "56:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "103:1:31", + "nodeType": "YulLiteral", + "src": "103:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "106:4:31", + "nodeType": "YulLiteral", + "src": "106:4:31", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96:6:31", + "nodeType": "YulIdentifier", + "src": "96:6:31" + }, + "nativeSrc": "96:15:31", + "nodeType": "YulFunctionCall", + "src": "96:15:31" + }, + "nativeSrc": "96:15:31", + "nodeType": "YulExpressionStatement", + "src": "96:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "127:1:31", + "nodeType": "YulLiteral", + "src": "127:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "130:4:31", + "nodeType": "YulLiteral", + "src": "130:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "120:6:31", + "nodeType": "YulIdentifier", + "src": "120:6:31" + }, + "nativeSrc": "120:15:31", + "nodeType": "YulFunctionCall", + "src": "120:15:31" + }, + "nativeSrc": "120:15:31", + "nodeType": "YulExpressionStatement", + "src": "120:15:31" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "14:127:31", + "nodeType": "YulFunctionDefinition", + "src": "14:127:31" + }, + { + "body": { + "nativeSrc": "212:184:31", + "nodeType": "YulBlock", + "src": "212:184:31", + "statements": [ + { + "nativeSrc": "222:10:31", + "nodeType": "YulVariableDeclaration", + "src": "222:10:31", + "value": { + "kind": "number", + "nativeSrc": "231:1:31", + "nodeType": "YulLiteral", + "src": "231:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "226:1:31", + "nodeType": "YulTypedName", + "src": "226:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "291:63:31", + "nodeType": "YulBlock", + "src": "291:63:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "316:3:31", + "nodeType": "YulIdentifier", + "src": "316:3:31" + }, + { + "name": "i", + "nativeSrc": "321:1:31", + "nodeType": "YulIdentifier", + "src": "321:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "312:3:31", + "nodeType": "YulIdentifier", + "src": "312:3:31" + }, + "nativeSrc": "312:11:31", + "nodeType": "YulFunctionCall", + "src": "312:11:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "335:3:31", + "nodeType": "YulIdentifier", + "src": "335:3:31" + }, + { + "name": "i", + "nativeSrc": "340:1:31", + "nodeType": "YulIdentifier", + "src": "340:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "331:3:31", + "nodeType": "YulIdentifier", + "src": "331:3:31" + }, + "nativeSrc": "331:11:31", + "nodeType": "YulFunctionCall", + "src": "331:11:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "325:5:31", + "nodeType": "YulIdentifier", + "src": "325:5:31" + }, + "nativeSrc": "325:18:31", + "nodeType": "YulFunctionCall", + "src": "325:18:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "305:6:31", + "nodeType": "YulIdentifier", + "src": "305:6:31" + }, + "nativeSrc": "305:39:31", + "nodeType": "YulFunctionCall", + "src": "305:39:31" + }, + "nativeSrc": "305:39:31", + "nodeType": "YulExpressionStatement", + "src": "305:39:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "252:1:31", + "nodeType": "YulIdentifier", + "src": "252:1:31" + }, + { + "name": "length", + "nativeSrc": "255:6:31", + "nodeType": "YulIdentifier", + "src": "255:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "249:2:31", + "nodeType": "YulIdentifier", + "src": "249:2:31" + }, + "nativeSrc": "249:13:31", + "nodeType": "YulFunctionCall", + "src": "249:13:31" + }, + "nativeSrc": "241:113:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "263:19:31", + "nodeType": "YulBlock", + "src": "263:19:31", + "statements": [ + { + "nativeSrc": "265:15:31", + "nodeType": "YulAssignment", + "src": "265:15:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "274:1:31", + "nodeType": "YulIdentifier", + "src": "274:1:31" + }, + { + "kind": "number", + "nativeSrc": "277:2:31", + "nodeType": "YulLiteral", + "src": "277:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "270:3:31", + "nodeType": "YulIdentifier", + "src": "270:3:31" + }, + "nativeSrc": "270:10:31", + "nodeType": "YulFunctionCall", + "src": "270:10:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "265:1:31", + "nodeType": "YulIdentifier", + "src": "265:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "245:3:31", + "nodeType": "YulBlock", + "src": "245:3:31", + "statements": [] + }, + "src": "241:113:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "374:3:31", + "nodeType": "YulIdentifier", + "src": "374:3:31" + }, + { + "name": "length", + "nativeSrc": "379:6:31", + "nodeType": "YulIdentifier", + "src": "379:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "370:3:31", + "nodeType": "YulIdentifier", + "src": "370:3:31" + }, + "nativeSrc": "370:16:31", + "nodeType": "YulFunctionCall", + "src": "370:16:31" + }, + { + "kind": "number", + "nativeSrc": "388:1:31", + "nodeType": "YulLiteral", + "src": "388:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "363:6:31", + "nodeType": "YulIdentifier", + "src": "363:6:31" + }, + "nativeSrc": "363:27:31", + "nodeType": "YulFunctionCall", + "src": "363:27:31" + }, + "nativeSrc": "363:27:31", + "nodeType": "YulExpressionStatement", + "src": "363:27:31" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "146:250:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "190:3:31", + "nodeType": "YulTypedName", + "src": "190:3:31", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "195:3:31", + "nodeType": "YulTypedName", + "src": "195:3:31", + "type": "" + }, + { + "name": "length", + "nativeSrc": "200:6:31", + "nodeType": "YulTypedName", + "src": "200:6:31", + "type": "" + } + ], + "src": "146:250:31" + }, + { + "body": { + "nativeSrc": "508:956:31", + "nodeType": "YulBlock", + "src": "508:956:31", + "statements": [ + { + "body": { + "nativeSrc": "554:16:31", + "nodeType": "YulBlock", + "src": "554:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "563:1:31", + "nodeType": "YulLiteral", + "src": "563:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "566:1:31", + "nodeType": "YulLiteral", + "src": "566:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "556:6:31", + "nodeType": "YulIdentifier", + "src": "556:6:31" + }, + "nativeSrc": "556:12:31", + "nodeType": "YulFunctionCall", + "src": "556:12:31" + }, + "nativeSrc": "556:12:31", + "nodeType": "YulExpressionStatement", + "src": "556:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "529:7:31", + "nodeType": "YulIdentifier", + "src": "529:7:31" + }, + { + "name": "headStart", + "nativeSrc": "538:9:31", + "nodeType": "YulIdentifier", + "src": "538:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "525:3:31", + "nodeType": "YulIdentifier", + "src": "525:3:31" + }, + "nativeSrc": "525:23:31", + "nodeType": "YulFunctionCall", + "src": "525:23:31" + }, + { + "kind": "number", + "nativeSrc": "550:2:31", + "nodeType": "YulLiteral", + "src": "550:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "521:3:31", + "nodeType": "YulIdentifier", + "src": "521:3:31" + }, + "nativeSrc": "521:32:31", + "nodeType": "YulFunctionCall", + "src": "521:32:31" + }, + "nativeSrc": "518:52:31", + "nodeType": "YulIf", + "src": "518:52:31" + }, + { + "nativeSrc": "579:29:31", + "nodeType": "YulVariableDeclaration", + "src": "579:29:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "598:9:31", + "nodeType": "YulIdentifier", + "src": "598:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "592:5:31", + "nodeType": "YulIdentifier", + "src": "592:5:31" + }, + "nativeSrc": "592:16:31", + "nodeType": "YulFunctionCall", + "src": "592:16:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "583:5:31", + "nodeType": "YulTypedName", + "src": "583:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "671:16:31", + "nodeType": "YulBlock", + "src": "671:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "680:1:31", + "nodeType": "YulLiteral", + "src": "680:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "683:1:31", + "nodeType": "YulLiteral", + "src": "683:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "673:6:31", + "nodeType": "YulIdentifier", + "src": "673:6:31" + }, + "nativeSrc": "673:12:31", + "nodeType": "YulFunctionCall", + "src": "673:12:31" + }, + "nativeSrc": "673:12:31", + "nodeType": "YulExpressionStatement", + "src": "673:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "630:5:31", + "nodeType": "YulIdentifier", + "src": "630:5:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "641:5:31", + "nodeType": "YulIdentifier", + "src": "641:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "656:3:31", + "nodeType": "YulLiteral", + "src": "656:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "661:1:31", + "nodeType": "YulLiteral", + "src": "661:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "652:3:31", + "nodeType": "YulIdentifier", + "src": "652:3:31" + }, + "nativeSrc": "652:11:31", + "nodeType": "YulFunctionCall", + "src": "652:11:31" + }, + { + "kind": "number", + "nativeSrc": "665:1:31", + "nodeType": "YulLiteral", + "src": "665:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "648:3:31", + "nodeType": "YulIdentifier", + "src": "648:3:31" + }, + "nativeSrc": "648:19:31", + "nodeType": "YulFunctionCall", + "src": "648:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "637:3:31", + "nodeType": "YulIdentifier", + "src": "637:3:31" + }, + "nativeSrc": "637:31:31", + "nodeType": "YulFunctionCall", + "src": "637:31:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "627:2:31", + "nodeType": "YulIdentifier", + "src": "627:2:31" + }, + "nativeSrc": "627:42:31", + "nodeType": "YulFunctionCall", + "src": "627:42:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "620:6:31", + "nodeType": "YulIdentifier", + "src": "620:6:31" + }, + "nativeSrc": "620:50:31", + "nodeType": "YulFunctionCall", + "src": "620:50:31" + }, + "nativeSrc": "617:70:31", + "nodeType": "YulIf", + "src": "617:70:31" + }, + { + "nativeSrc": "696:15:31", + "nodeType": "YulAssignment", + "src": "696:15:31", + "value": { + "name": "value", + "nativeSrc": "706:5:31", + "nodeType": "YulIdentifier", + "src": "706:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "696:6:31", + "nodeType": "YulIdentifier", + "src": "696:6:31" + } + ] + }, + { + "nativeSrc": "720:39:31", + "nodeType": "YulVariableDeclaration", + "src": "720:39:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "744:9:31", + "nodeType": "YulIdentifier", + "src": "744:9:31" + }, + { + "kind": "number", + "nativeSrc": "755:2:31", + "nodeType": "YulLiteral", + "src": "755:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "740:3:31", + "nodeType": "YulIdentifier", + "src": "740:3:31" + }, + "nativeSrc": "740:18:31", + "nodeType": "YulFunctionCall", + "src": "740:18:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "734:5:31", + "nodeType": "YulIdentifier", + "src": "734:5:31" + }, + "nativeSrc": "734:25:31", + "nodeType": "YulFunctionCall", + "src": "734:25:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "724:6:31", + "nodeType": "YulTypedName", + "src": "724:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "768:28:31", + "nodeType": "YulVariableDeclaration", + "src": "768:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "786:2:31", + "nodeType": "YulLiteral", + "src": "786:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "790:1:31", + "nodeType": "YulLiteral", + "src": "790:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "782:3:31", + "nodeType": "YulIdentifier", + "src": "782:3:31" + }, + "nativeSrc": "782:10:31", + "nodeType": "YulFunctionCall", + "src": "782:10:31" + }, + { + "kind": "number", + "nativeSrc": "794:1:31", + "nodeType": "YulLiteral", + "src": "794:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "778:3:31", + "nodeType": "YulIdentifier", + "src": "778:3:31" + }, + "nativeSrc": "778:18:31", + "nodeType": "YulFunctionCall", + "src": "778:18:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "772:2:31", + "nodeType": "YulTypedName", + "src": "772:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "823:16:31", + "nodeType": "YulBlock", + "src": "823:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "832:1:31", + "nodeType": "YulLiteral", + "src": "832:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "835:1:31", + "nodeType": "YulLiteral", + "src": "835:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "825:6:31", + "nodeType": "YulIdentifier", + "src": "825:6:31" + }, + "nativeSrc": "825:12:31", + "nodeType": "YulFunctionCall", + "src": "825:12:31" + }, + "nativeSrc": "825:12:31", + "nodeType": "YulExpressionStatement", + "src": "825:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "811:6:31", + "nodeType": "YulIdentifier", + "src": "811:6:31" + }, + { + "name": "_1", + "nativeSrc": "819:2:31", + "nodeType": "YulIdentifier", + "src": "819:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "808:2:31", + "nodeType": "YulIdentifier", + "src": "808:2:31" + }, + "nativeSrc": "808:14:31", + "nodeType": "YulFunctionCall", + "src": "808:14:31" + }, + "nativeSrc": "805:34:31", + "nodeType": "YulIf", + "src": "805:34:31" + }, + { + "nativeSrc": "848:32:31", + "nodeType": "YulVariableDeclaration", + "src": "848:32:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "862:9:31", + "nodeType": "YulIdentifier", + "src": "862:9:31" + }, + { + "name": "offset", + "nativeSrc": "873:6:31", + "nodeType": "YulIdentifier", + "src": "873:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "858:3:31", + "nodeType": "YulIdentifier", + "src": "858:3:31" + }, + "nativeSrc": "858:22:31", + "nodeType": "YulFunctionCall", + "src": "858:22:31" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "852:2:31", + "nodeType": "YulTypedName", + "src": "852:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "928:16:31", + "nodeType": "YulBlock", + "src": "928:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "937:1:31", + "nodeType": "YulLiteral", + "src": "937:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "940:1:31", + "nodeType": "YulLiteral", + "src": "940:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "930:6:31", + "nodeType": "YulIdentifier", + "src": "930:6:31" + }, + "nativeSrc": "930:12:31", + "nodeType": "YulFunctionCall", + "src": "930:12:31" + }, + "nativeSrc": "930:12:31", + "nodeType": "YulExpressionStatement", + "src": "930:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "907:2:31", + "nodeType": "YulIdentifier", + "src": "907:2:31" + }, + { + "kind": "number", + "nativeSrc": "911:4:31", + "nodeType": "YulLiteral", + "src": "911:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "903:3:31", + "nodeType": "YulIdentifier", + "src": "903:3:31" + }, + "nativeSrc": "903:13:31", + "nodeType": "YulFunctionCall", + "src": "903:13:31" + }, + { + "name": "dataEnd", + "nativeSrc": "918:7:31", + "nodeType": "YulIdentifier", + "src": "918:7:31" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "899:3:31", + "nodeType": "YulIdentifier", + "src": "899:3:31" + }, + "nativeSrc": "899:27:31", + "nodeType": "YulFunctionCall", + "src": "899:27:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "892:6:31", + "nodeType": "YulIdentifier", + "src": "892:6:31" + }, + "nativeSrc": "892:35:31", + "nodeType": "YulFunctionCall", + "src": "892:35:31" + }, + "nativeSrc": "889:55:31", + "nodeType": "YulIf", + "src": "889:55:31" + }, + { + "nativeSrc": "953:19:31", + "nodeType": "YulVariableDeclaration", + "src": "953:19:31", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "969:2:31", + "nodeType": "YulIdentifier", + "src": "969:2:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "963:5:31", + "nodeType": "YulIdentifier", + "src": "963:5:31" + }, + "nativeSrc": "963:9:31", + "nodeType": "YulFunctionCall", + "src": "963:9:31" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "957:2:31", + "nodeType": "YulTypedName", + "src": "957:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "995:22:31", + "nodeType": "YulBlock", + "src": "995:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "997:16:31", + "nodeType": "YulIdentifier", + "src": "997:16:31" + }, + "nativeSrc": "997:18:31", + "nodeType": "YulFunctionCall", + "src": "997:18:31" + }, + "nativeSrc": "997:18:31", + "nodeType": "YulExpressionStatement", + "src": "997:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "987:2:31", + "nodeType": "YulIdentifier", + "src": "987:2:31" + }, + { + "name": "_1", + "nativeSrc": "991:2:31", + "nodeType": "YulIdentifier", + "src": "991:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "984:2:31", + "nodeType": "YulIdentifier", + "src": "984:2:31" + }, + "nativeSrc": "984:10:31", + "nodeType": "YulFunctionCall", + "src": "984:10:31" + }, + "nativeSrc": "981:36:31", + "nodeType": "YulIf", + "src": "981:36:31" + }, + { + "nativeSrc": "1026:17:31", + "nodeType": "YulVariableDeclaration", + "src": "1026:17:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1040:2:31", + "nodeType": "YulLiteral", + "src": "1040:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1036:3:31", + "nodeType": "YulIdentifier", + "src": "1036:3:31" + }, + "nativeSrc": "1036:7:31", + "nodeType": "YulFunctionCall", + "src": "1036:7:31" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "1030:2:31", + "nodeType": "YulTypedName", + "src": "1030:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1052:23:31", + "nodeType": "YulVariableDeclaration", + "src": "1052:23:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1072:2:31", + "nodeType": "YulLiteral", + "src": "1072:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1066:5:31", + "nodeType": "YulIdentifier", + "src": "1066:5:31" + }, + "nativeSrc": "1066:9:31", + "nodeType": "YulFunctionCall", + "src": "1066:9:31" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1056:6:31", + "nodeType": "YulTypedName", + "src": "1056:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1084:71:31", + "nodeType": "YulVariableDeclaration", + "src": "1084:71:31", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1106:6:31", + "nodeType": "YulIdentifier", + "src": "1106:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1130:2:31", + "nodeType": "YulIdentifier", + "src": "1130:2:31" + }, + { + "kind": "number", + "nativeSrc": "1134:4:31", + "nodeType": "YulLiteral", + "src": "1134:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1126:3:31", + "nodeType": "YulIdentifier", + "src": "1126:3:31" + }, + "nativeSrc": "1126:13:31", + "nodeType": "YulFunctionCall", + "src": "1126:13:31" + }, + { + "name": "_4", + "nativeSrc": "1141:2:31", + "nodeType": "YulIdentifier", + "src": "1141:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1122:3:31", + "nodeType": "YulIdentifier", + "src": "1122:3:31" + }, + "nativeSrc": "1122:22:31", + "nodeType": "YulFunctionCall", + "src": "1122:22:31" + }, + { + "kind": "number", + "nativeSrc": "1146:2:31", + "nodeType": "YulLiteral", + "src": "1146:2:31", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1118:3:31", + "nodeType": "YulIdentifier", + "src": "1118:3:31" + }, + "nativeSrc": "1118:31:31", + "nodeType": "YulFunctionCall", + "src": "1118:31:31" + }, + { + "name": "_4", + "nativeSrc": "1151:2:31", + "nodeType": "YulIdentifier", + "src": "1151:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1114:3:31", + "nodeType": "YulIdentifier", + "src": "1114:3:31" + }, + "nativeSrc": "1114:40:31", + "nodeType": "YulFunctionCall", + "src": "1114:40:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1102:3:31", + "nodeType": "YulIdentifier", + "src": "1102:3:31" + }, + "nativeSrc": "1102:53:31", + "nodeType": "YulFunctionCall", + "src": "1102:53:31" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1088:10:31", + "nodeType": "YulTypedName", + "src": "1088:10:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1214:22:31", + "nodeType": "YulBlock", + "src": "1214:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1216:16:31", + "nodeType": "YulIdentifier", + "src": "1216:16:31" + }, + "nativeSrc": "1216:18:31", + "nodeType": "YulFunctionCall", + "src": "1216:18:31" + }, + "nativeSrc": "1216:18:31", + "nodeType": "YulExpressionStatement", + "src": "1216:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1173:10:31", + "nodeType": "YulIdentifier", + "src": "1173:10:31" + }, + { + "name": "_1", + "nativeSrc": "1185:2:31", + "nodeType": "YulIdentifier", + "src": "1185:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1170:2:31", + "nodeType": "YulIdentifier", + "src": "1170:2:31" + }, + "nativeSrc": "1170:18:31", + "nodeType": "YulFunctionCall", + "src": "1170:18:31" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1193:10:31", + "nodeType": "YulIdentifier", + "src": "1193:10:31" + }, + { + "name": "memPtr", + "nativeSrc": "1205:6:31", + "nodeType": "YulIdentifier", + "src": "1205:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1190:2:31", + "nodeType": "YulIdentifier", + "src": "1190:2:31" + }, + "nativeSrc": "1190:22:31", + "nodeType": "YulFunctionCall", + "src": "1190:22:31" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1167:2:31", + "nodeType": "YulIdentifier", + "src": "1167:2:31" + }, + "nativeSrc": "1167:46:31", + "nodeType": "YulFunctionCall", + "src": "1167:46:31" + }, + "nativeSrc": "1164:72:31", + "nodeType": "YulIf", + "src": "1164:72:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1252:2:31", + "nodeType": "YulLiteral", + "src": "1252:2:31", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1256:10:31", + "nodeType": "YulIdentifier", + "src": "1256:10:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1245:6:31", + "nodeType": "YulIdentifier", + "src": "1245:6:31" + }, + "nativeSrc": "1245:22:31", + "nodeType": "YulFunctionCall", + "src": "1245:22:31" + }, + "nativeSrc": "1245:22:31", + "nodeType": "YulExpressionStatement", + "src": "1245:22:31" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1283:6:31", + "nodeType": "YulIdentifier", + "src": "1283:6:31" + }, + { + "name": "_3", + "nativeSrc": "1291:2:31", + "nodeType": "YulIdentifier", + "src": "1291:2:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1276:6:31", + "nodeType": "YulIdentifier", + "src": "1276:6:31" + }, + "nativeSrc": "1276:18:31", + "nodeType": "YulFunctionCall", + "src": "1276:18:31" + }, + "nativeSrc": "1276:18:31", + "nodeType": "YulExpressionStatement", + "src": "1276:18:31" + }, + { + "body": { + "nativeSrc": "1340:16:31", + "nodeType": "YulBlock", + "src": "1340:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1349:1:31", + "nodeType": "YulLiteral", + "src": "1349:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1352:1:31", + "nodeType": "YulLiteral", + "src": "1352:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1342:6:31", + "nodeType": "YulIdentifier", + "src": "1342:6:31" + }, + "nativeSrc": "1342:12:31", + "nodeType": "YulFunctionCall", + "src": "1342:12:31" + }, + "nativeSrc": "1342:12:31", + "nodeType": "YulExpressionStatement", + "src": "1342:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1317:2:31", + "nodeType": "YulIdentifier", + "src": "1317:2:31" + }, + { + "name": "_3", + "nativeSrc": "1321:2:31", + "nodeType": "YulIdentifier", + "src": "1321:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1313:3:31", + "nodeType": "YulIdentifier", + "src": "1313:3:31" + }, + "nativeSrc": "1313:11:31", + "nodeType": "YulFunctionCall", + "src": "1313:11:31" + }, + { + "kind": "number", + "nativeSrc": "1326:2:31", + "nodeType": "YulLiteral", + "src": "1326:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1309:3:31", + "nodeType": "YulIdentifier", + "src": "1309:3:31" + }, + "nativeSrc": "1309:20:31", + "nodeType": "YulFunctionCall", + "src": "1309:20:31" + }, + { + "name": "dataEnd", + "nativeSrc": "1331:7:31", + "nodeType": "YulIdentifier", + "src": "1331:7:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1306:2:31", + "nodeType": "YulIdentifier", + "src": "1306:2:31" + }, + "nativeSrc": "1306:33:31", + "nodeType": "YulFunctionCall", + "src": "1306:33:31" + }, + "nativeSrc": "1303:53:31", + "nodeType": "YulIf", + "src": "1303:53:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1404:2:31", + "nodeType": "YulIdentifier", + "src": "1404:2:31" + }, + { + "kind": "number", + "nativeSrc": "1408:2:31", + "nodeType": "YulLiteral", + "src": "1408:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1400:3:31", + "nodeType": "YulIdentifier", + "src": "1400:3:31" + }, + "nativeSrc": "1400:11:31", + "nodeType": "YulFunctionCall", + "src": "1400:11:31" + }, + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1417:6:31", + "nodeType": "YulIdentifier", + "src": "1417:6:31" + }, + { + "kind": "number", + "nativeSrc": "1425:2:31", + "nodeType": "YulLiteral", + "src": "1425:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1413:3:31", + "nodeType": "YulIdentifier", + "src": "1413:3:31" + }, + "nativeSrc": "1413:15:31", + "nodeType": "YulFunctionCall", + "src": "1413:15:31" + }, + { + "name": "_3", + "nativeSrc": "1430:2:31", + "nodeType": "YulIdentifier", + "src": "1430:2:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1365:34:31", + "nodeType": "YulIdentifier", + "src": "1365:34:31" + }, + "nativeSrc": "1365:68:31", + "nodeType": "YulFunctionCall", + "src": "1365:68:31" + }, + "nativeSrc": "1365:68:31", + "nodeType": "YulExpressionStatement", + "src": "1365:68:31" + }, + { + "nativeSrc": "1442:16:31", + "nodeType": "YulAssignment", + "src": "1442:16:31", + "value": { + "name": "memPtr", + "nativeSrc": "1452:6:31", + "nodeType": "YulIdentifier", + "src": "1452:6:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1442:6:31", + "nodeType": "YulIdentifier", + "src": "1442:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory", + "nativeSrc": "401:1063:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "466:9:31", + "nodeType": "YulTypedName", + "src": "466:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "477:7:31", + "nodeType": "YulTypedName", + "src": "477:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "489:6:31", + "nodeType": "YulTypedName", + "src": "489:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "497:6:31", + "nodeType": "YulTypedName", + "src": "497:6:31", + "type": "" + } + ], + "src": "401:1063:31" + }, + { + "body": { + "nativeSrc": "1570:102:31", + "nodeType": "YulBlock", + "src": "1570:102:31", + "statements": [ + { + "nativeSrc": "1580:26:31", + "nodeType": "YulAssignment", + "src": "1580:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1592:9:31", + "nodeType": "YulIdentifier", + "src": "1592:9:31" + }, + { + "kind": "number", + "nativeSrc": "1603:2:31", + "nodeType": "YulLiteral", + "src": "1603:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1588:3:31", + "nodeType": "YulIdentifier", + "src": "1588:3:31" + }, + "nativeSrc": "1588:18:31", + "nodeType": "YulFunctionCall", + "src": "1588:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1580:4:31", + "nodeType": "YulIdentifier", + "src": "1580:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1622:9:31", + "nodeType": "YulIdentifier", + "src": "1622:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1637:6:31", + "nodeType": "YulIdentifier", + "src": "1637:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1653:3:31", + "nodeType": "YulLiteral", + "src": "1653:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1658:1:31", + "nodeType": "YulLiteral", + "src": "1658:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1649:3:31", + "nodeType": "YulIdentifier", + "src": "1649:3:31" + }, + "nativeSrc": "1649:11:31", + "nodeType": "YulFunctionCall", + "src": "1649:11:31" + }, + { + "kind": "number", + "nativeSrc": "1662:1:31", + "nodeType": "YulLiteral", + "src": "1662:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1645:3:31", + "nodeType": "YulIdentifier", + "src": "1645:3:31" + }, + "nativeSrc": "1645:19:31", + "nodeType": "YulFunctionCall", + "src": "1645:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1633:3:31", + "nodeType": "YulIdentifier", + "src": "1633:3:31" + }, + "nativeSrc": "1633:32:31", + "nodeType": "YulFunctionCall", + "src": "1633:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1615:6:31", + "nodeType": "YulIdentifier", + "src": "1615:6:31" + }, + "nativeSrc": "1615:51:31", + "nodeType": "YulFunctionCall", + "src": "1615:51:31" + }, + "nativeSrc": "1615:51:31", + "nodeType": "YulExpressionStatement", + "src": "1615:51:31" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "1469:203:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1539:9:31", + "nodeType": "YulTypedName", + "src": "1539:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1550:6:31", + "nodeType": "YulTypedName", + "src": "1550:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1561:4:31", + "nodeType": "YulTypedName", + "src": "1561:4:31", + "type": "" + } + ], + "src": "1469:203:31" + }, + { + "body": { + "nativeSrc": "1814:150:31", + "nodeType": "YulBlock", + "src": "1814:150:31", + "statements": [ + { + "nativeSrc": "1824:27:31", + "nodeType": "YulVariableDeclaration", + "src": "1824:27:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1844:6:31", + "nodeType": "YulIdentifier", + "src": "1844:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1838:5:31", + "nodeType": "YulIdentifier", + "src": "1838:5:31" + }, + "nativeSrc": "1838:13:31", + "nodeType": "YulFunctionCall", + "src": "1838:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1828:6:31", + "nodeType": "YulTypedName", + "src": "1828:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1899:6:31", + "nodeType": "YulIdentifier", + "src": "1899:6:31" + }, + { + "kind": "number", + "nativeSrc": "1907:4:31", + "nodeType": "YulLiteral", + "src": "1907:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1895:3:31", + "nodeType": "YulIdentifier", + "src": "1895:3:31" + }, + "nativeSrc": "1895:17:31", + "nodeType": "YulFunctionCall", + "src": "1895:17:31" + }, + { + "name": "pos", + "nativeSrc": "1914:3:31", + "nodeType": "YulIdentifier", + "src": "1914:3:31" + }, + { + "name": "length", + "nativeSrc": "1919:6:31", + "nodeType": "YulIdentifier", + "src": "1919:6:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1860:34:31", + "nodeType": "YulIdentifier", + "src": "1860:34:31" + }, + "nativeSrc": "1860:66:31", + "nodeType": "YulFunctionCall", + "src": "1860:66:31" + }, + "nativeSrc": "1860:66:31", + "nodeType": "YulExpressionStatement", + "src": "1860:66:31" + }, + { + "nativeSrc": "1935:23:31", + "nodeType": "YulAssignment", + "src": "1935:23:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1946:3:31", + "nodeType": "YulIdentifier", + "src": "1946:3:31" + }, + { + "name": "length", + "nativeSrc": "1951:6:31", + "nodeType": "YulIdentifier", + "src": "1951:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1942:3:31", + "nodeType": "YulIdentifier", + "src": "1942:3:31" + }, + "nativeSrc": "1942:16:31", + "nodeType": "YulFunctionCall", + "src": "1942:16:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1935:3:31", + "nodeType": "YulIdentifier", + "src": "1935:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "1677:287:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1790:3:31", + "nodeType": "YulTypedName", + "src": "1790:3:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1795:6:31", + "nodeType": "YulTypedName", + "src": "1795:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1806:3:31", + "nodeType": "YulTypedName", + "src": "1806:3:31", + "type": "" + } + ], + "src": "1677:287:31" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 31, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "599:1116:10:-:0;;;1080:133;;;;;;;;;;;;;;;;;;:::i;:::-;1154:52;1184:14;1200:5;1154:29;:52::i;:::-;1080:133;;599:1116;;2779:335:11;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:11;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;:::-;;2779:335;;:::o;2960:148::-;3079:18;:16;:18::i;:::-;2779:335;;:::o;2186:281::-;2263:17;-1:-1:-1;;;;;2263:29:11;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:11;;;;;;;;:::i;:::-;;;;;;;;2259:119;1327:66;2387:73;;-1:-1:-1;;;;;;2387:73:11;-1:-1:-1;;;;;2387:73:11;;;;;;;;;;2186:281::o;4106:253:19:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:19;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4213:67:19;;-1:-1:-1;4213:67:19;-1:-1:-1;4297:55:19;4324:6;4213:67;;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:19:o;6598:122:11:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:11;;;;;;;;;;;6644:70;6598:122::o;4625:582:19:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:19;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:19;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:19;4793:408;4625:582;;;;;:::o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:19;;;;;;;;;;;14:127:31;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:31;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:31;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:31;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:31;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1469:203::-;-1:-1:-1;;;;;1633:32:31;;;;1615:51;;1603:2;1588:18;;1469:203::o;1677:287::-;1806:3;1844:6;1838:13;1860:66;1919:6;1914:3;1907:4;1899:6;1895:17;1860:66;:::i;:::-;1942:16;;;;;1677:287;-1:-1:-1;;1677:287:31:o;:::-;599:1116:10;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_1709": { + "entryPoint": null, + "id": 1709, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_delegate_1685": { + "entryPoint": 81, + "id": 1685, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_fallback_1701": { + "entryPoint": 12, + "id": 1701, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_implementation_1370": { + "entryPoint": 26, + "id": 1370, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_2544": { + "entryPoint": null, + "id": 2544, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getImplementation_1432": { + "entryPoint": null, + "id": 1432, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220e704d381a2ce0387b276e1f01c87ad61ca30b2c8b219afb40e2ddf5bcf16086164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DIV 0xD3 DUP2 LOG2 0xCE SUB DUP8 0xB2 PUSH23 0xE1F01C87AD61CA30B2C8B219AFB40E2DDF5BCF16086164 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "599:1116:10:-:0;;;2649:11:12;:9;:11::i;:::-;599:1116:10;2323:83:12;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1581:132:10:-;1648:7;1674:32;1327:66:11;2035:53;-1:-1:-1;;;;;2035:53:11;;1957:138;1674:32:10;1667:39;;1581:132;:::o;949:895:12:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ERC1967Utils": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "ERC1967InvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e4394a4ffe01967b9fd43a0b90dc6dfc06827b5923fc94ee2cb98884ecc76af64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E NUMBER SWAP5 LOG4 SELFDESTRUCT 0xE0 NOT PUSH8 0xB9FD43A0B90DC6DF 0xC0 PUSH9 0x27B5923FC94EE2CB98 DUP9 0x4E 0xCC PUSH23 0xAF64736F6C634300081800330000000000000000000000 ", + "sourceMap": "449:6273:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:6273:11;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e4394a4ffe01967b9fd43a0b90dc6dfc06827b5923fc94ee2cb98884ecc76af64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E NUMBER SWAP5 LOG4 SELFDESTRUCT 0xE0 NOT PUSH8 0xB9FD43A0B90DC6DF 0xC0 PUSH9 0x27B5923FC94EE2CB98 DUP9 0x4E 0xCC PUSH23 0xAF64736F6C634300081800330000000000000000000000 ", + "sourceMap": "449:6273:11:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "Proxy": { + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "IBeacon": { + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "implementation()": "5c60da1b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "IERC20Permit": { + "abi": [ + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} doThing(..., value); } function doThing(..., uint256 value) public { token.safeTransferFrom(msg.sender, address(this), value); ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "SafeERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentAllowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestedDecrease", + "type": "uint256" + } + ], + "name": "SafeERC20FailedDecreaseAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c8f1a324f5ae3ae809027795c9a863ce70cc8a169e42709ba8d7588657961e64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC8 CALL LOG3 0x24 CREATE2 0xAE GASPRICE 0xE8 MULMOD MUL PUSH24 0x95C9A863CE70CC8A169E42709BA8D7588657961E64736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "751:5018:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;751:5018:16;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c8f1a324f5ae3ae809027795c9a863ce70cc8a169e42709ba8d7588657961e64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC8 CALL LOG3 0x24 CREATE2 0xAE GASPRICE 0xE8 MULMOD MUL PUSH24 0x95C9A863CE70CC8A169E42709BA8D7588657961E64736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "751:5018:16:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "IERC721": { + "abi": [ + { + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "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": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "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": [ + { + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"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\":[{\"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\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "IERC721Receiver": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Address.sol": { + "Address": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aab979471ae8e57e964a5ed1801c32d802d65814926295e14359abfe53ec3a2564736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xB9 PUSH26 0x471AE8E57E964A5ED1801C32D802D65814926295E14359ABFE53 0xEC GASPRICE 0x25 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "195:6066:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:19;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aab979471ae8e57e964a5ed1801c32d802d65814926295e14359abfe53ec3a2564736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xB9 PUSH26 0x471AE8E57E964A5ED1801C32D802D65814926295E14359ABFE53 0xEC GASPRICE 0x25 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "195:6066:19:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "StorageSlot": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122009d9b9688c5c2eb86f551c2713b2714a11b42983be2dad6c62df1214103f813364736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xD9 0xB9 PUSH9 0x8C5C2EB86F551C2713 0xB2 PUSH18 0x4A11B42983BE2DAD6C62DF1214103F813364 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "1245:2685:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1245:2685:20;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122009d9b9688c5c2eb86f551c2713b2714a11b42983be2dad6c62df1214103f813364736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xD9 0xB9 PUSH9 0x8C5C2EB86F551C2713 0xB2 PUSH18 0x4A11B42983BE2DAD6C62DF1214103F813364 PUSH20 0x6F6C634300081800330000000000000000000000 ", + "sourceMap": "1245:2685:20:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ECDSA": { + "abi": [ + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7605399db2407f313155b8ebcbce21173f51352843dad8c3e140c306b809f464736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH23 0x5399DB2407F313155B8EBCBCE21173F51352843DAD8C3 0xE1 BLOCKHASH 0xC3 MOD 0xB8 MULMOD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "344:7386:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7386:21;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b7605399db2407f313155b8ebcbce21173f51352843dad8c3e140c306b809f464736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 PUSH23 0x5399DB2407F313155B8EBCBCE21173F51352843DAD8C3 0xE1 BLOCKHASH 0xC3 MOD 0xB8 MULMOD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "344:7386:21:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "EnumerableSet": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b3165c3b30e891ceb60ee8f73d486489d33005a0ce16f83322685cd33d19b22764736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 AND TLOAD EXTCODESIZE ADDRESS 0xE8 SWAP2 0xCE 0xB6 0xE 0xE8 0xF7 RETURNDATASIZE BASEFEE PUSH5 0x89D33005A0 0xCE AND 0xF8 CALLER 0x22 PUSH9 0x5CD33D19B22764736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1330:11640:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1330:11640:23;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b3165c3b30e891ceb60ee8f73d486489d33005a0ce16f83322685cd33d19b22764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 AND TLOAD EXTCODESIZE ADDRESS 0xE8 SWAP2 0xCE 0xB6 0xE 0xE8 0xF7 RETURNDATASIZE BASEFEE PUSH5 0x89D33005A0 0xCE AND 0xF8 CALLER 0x22 PUSH9 0x5CD33D19B22764736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1330:11640:23:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/CMAccount.sol": { + "CMAccount": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "latestImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountNoUpgradeNeeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "DepositorNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawableAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "prefundLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PrefundNotSpentYet", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ZeroValueDeposit", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "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": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BOOKING_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BOT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CHEQUE_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GAS_WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "gasMoney", + "type": "uint256" + } + ], + "name": "addMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "addPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "addService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "addServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "addSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "addWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "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": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service[]", + "name": "services", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "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": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "mintBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "removeMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "removeService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "removeServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "removeSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "removeWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "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": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "setGasMoneyWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isSupported", + "type": "bool" + } + ], + "name": "setOffChainPaymentSupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "setServiceCapabilities", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setServiceFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "setServiceRestrictedRate", + "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": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawGasMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_3787": { + "entryPoint": null, + "id": 3787, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_785": { + "entryPoint": 38, + "id": 785, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_816": { + "entryPoint": null, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:31", + "nodeType": "YulBlock", + "src": "0:216:31", + "statements": [ + { + "nativeSrc": "6:3:31", + "nodeType": "YulBlock", + "src": "6:3:31", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:31", + "nodeType": "YulBlock", + "src": "113:101:31", + "statements": [ + { + "nativeSrc": "123:26:31", + "nodeType": "YulAssignment", + "src": "123:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:31", + "nodeType": "YulIdentifier", + "src": "135:9:31" + }, + { + "kind": "number", + "nativeSrc": "146:2:31", + "nodeType": "YulLiteral", + "src": "146:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:31", + "nodeType": "YulIdentifier", + "src": "131:3:31" + }, + "nativeSrc": "131:18:31", + "nodeType": "YulFunctionCall", + "src": "131:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:31", + "nodeType": "YulIdentifier", + "src": "123:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:31", + "nodeType": "YulIdentifier", + "src": "165:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:31", + "nodeType": "YulIdentifier", + "src": "180:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:31", + "nodeType": "YulLiteral", + "src": "196:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:31", + "nodeType": "YulLiteral", + "src": "200:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:31", + "nodeType": "YulIdentifier", + "src": "192:3:31" + }, + "nativeSrc": "192:10:31", + "nodeType": "YulFunctionCall", + "src": "192:10:31" + }, + { + "kind": "number", + "nativeSrc": "204:1:31", + "nodeType": "YulLiteral", + "src": "204:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:31", + "nodeType": "YulIdentifier", + "src": "188:3:31" + }, + "nativeSrc": "188:18:31", + "nodeType": "YulFunctionCall", + "src": "188:18:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:31", + "nodeType": "YulIdentifier", + "src": "176:3:31" + }, + "nativeSrc": "176:31:31", + "nodeType": "YulFunctionCall", + "src": "176:31:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:31", + "nodeType": "YulIdentifier", + "src": "158:6:31" + }, + "nativeSrc": "158:50:31", + "nodeType": "YulFunctionCall", + "src": "158:50:31" + }, + "nativeSrc": "158:50:31", + "nodeType": "YulExpressionStatement", + "src": "158:50:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:31", + "nodeType": "YulTypedName", + "src": "82:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:31", + "nodeType": "YulTypedName", + "src": "93:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:31", + "nodeType": "YulTypedName", + "src": "104:4:31", + "type": "" + } + ], + "src": "14:200:31" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 31, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4747 + }, + { + "length": 20, + "start": 6032 + } + ] + } + }, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614f7462000104600039600081816129150152818161293e0152612c9f0152614f746000f3fe6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613f0b565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fdf565b3480156103b457600080fd5b506103ca600080516020614edf83398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613ff2565b34801561040657600080fd5b5061042561041536600461410e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614179565b610e48565b34801561046a57600080fd5b5061047e6104793660046141ad565b610e56565b005b34801561048c57600080fd5b5061047e61049b36600461428c565b610f03565b3480156104ac57600080fd5b506103ca600080516020614eff83398151915281565b3480156104ce57600080fd5b506104e26104dd3660046142c0565b610f64565b60405161037d92919061435b565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614374565b611145565b34801561053157600080fd5b5061047e610540366004614374565b611165565b34801561055157600080fd5b5061047e61056036600461438d565b611201565b34801561057157600080fd5b5061039b610580366004614179565b611223565b34801561059157600080fd5b506103ca600080516020614e9f83398151915281565b3480156105b357600080fd5b5061047e6105c23660046143bd565b611231565b3480156105d357600080fd5b5061047e6105e236600461438d565b6113ed565b3480156105f357600080fd5b506103ca600080516020614dff83398151915281565b34801561061557600080fd5b5061047e61062436600461428c565b611420565b34801561063557600080fd5b5061047e610644366004614425565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614477565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144ec565b6114e3565b61047e6106ac36600461455a565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d91906145a9565b3480156106df57600080fd5b5061047e6106ee3660046145bd565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145e9565b611672565b34801561073457600080fd5b5061047e610743366004614374565b6116fe565b34801561075457600080fd5b5061039b610763366004614374565b611739565b34801561077457600080fd5b506103ca600080516020614e1f83398151915281565b34801561079657600080fd5b5061047e6107a53660046142c0565b611841565b3480156107b657600080fd5b506107bf611a43565b60405161037d929190614652565b3480156107d957600080fd5b5061047e6107e8366004614660565b611a65565b3480156107f957600080fd5b5061047e61080836600461467d565b611a86565b34801561081957600080fd5b5061047e61082836600461469f565b611aa8565b34801561083957600080fd5b5061047e610848366004614660565b611ad2565b34801561085957600080fd5b50610862611af3565b60405161037d929190614776565b34801561087c57600080fd5b506103ca600080516020614f1f83398151915281565b34801561089e57600080fd5b506108b26108ad366004614660565b611cb8565b60405161037d91906147e8565b3480156108cb57600080fd5b506103ca600080516020614ebf83398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461469f565b611d9d565b34801561090d57600080fd5b5061037161091c366004614374565b611dc7565b34801561092d57600080fd5b506106c661093c36600461467d565b611df8565b34801561094d57600080fd5b5061037161095c36600461438d565b611e26565b34801561096d57600080fd5b5061098161097c3660046147fb565b611e5c565b60405161037d9493929190614829565b34801561099d57600080fd5b5061047e6109ac3660046141ad565b611eb3565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614844565b611f06565b3480156109f257600080fd5b5061047e610a01366004614861565b611f27565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614179565b611f51565b348015610a6357600080fd5b506106c6611f5f565b348015610a7857600080fd5b506103ca611f7a565b348015610a8d57600080fd5b5061047e610a9c366004614660565b611f8f565b348015610aad57600080fd5b506103ca610abc3660046144ec565b61202a565b348015610acd57600080fd5b506103ca610adc366004614374565b612066565b348015610aed57600080fd5b5061047e610afc36600461455a565b612092565b348015610b0d57600080fd5b506103ca600080516020614e7f83398151915281565b348015610b2f57600080fd5b50610b386120b4565b60405161037d91906148a7565b348015610b5157600080fd5b5061047e610b6036600461438d565b6120ce565b348015610b7157600080fd5b50610b85610b80366004614374565b6120ea565b60405161037d91906148e8565b348015610b9e57600080fd5b50610371610bad366004614660565b612213565b348015610bbe57600080fd5b5061047e610bcd366004614660565b61222d565b348015610bde57600080fd5b506103ca61224e565b348015610bf357600080fd5b50610b38612263565b348015610c0857600080fd5b506103ca610c17366004614374565b61227d565b348015610c2857600080fd5b5061047e610c373660046148fb565b6122a8565b348015610c4857600080fd5b506103ca6122d2565b348015610c5d57600080fd5b506107bf610c6c366004614660565b6122dd565b348015610c7d57600080fd5b5061047e610c8c3660046145bd565b612318565b348015610c9d57600080fd5b5061047e610cac366004614179565b6123a0565b348015610cbd57600080fd5b506103ca600080516020614e3f83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123c9565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d2761404b565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f5f565b6001600160a01b0316635a81a626848381518110610d9157610d91614954565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc919081019061496a565b828281518110610e0e57610e0e614954565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123fe565b9050610e4281600901612422565b91505090565b6000610cf8610c178361242f565b600080516020614ebf833981519152610e6e816124a5565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e7f833981519152610f1b816124a5565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614954565b602002602001015161242f565b9050610f56816124af565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f9291906145a9565b60405180910390fd5b610fa3611f5f565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce91906145a9565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149d7565b61102e5788604051633f2c64af60e01b8152600401610f9291906145a9565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a612526565b915061106c82612213565b61108b578160405163248d101d60e11b8152600401610f9291906145a9565b6000611095612552565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a91600401614652565b8054891161110d578054604051632256490160e11b8152610f92918b91600401614652565b600181015461111c9089614a0a565b925050509850989650505050505050565b6000806111386123fe565b6003015460ff1692915050565b600080611150612576565b60009384526020525050604090206001015490565b61116d61259a565b600080516020614f1f833981519152611185816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c592919061435b565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125d0565b50565b61120a82611145565b611213816124a5565b61121d83836125e1565b50505050565b6060610cf86107638361242f565b600061123b612623565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db612647565b6112e3612647565b6112eb612651565b6112f66000886125e1565b5061130f600080516020614e7f833981519152886125e1565b50611328600080516020614e9f833981519152886125e1565b50611341600080516020614e3f833981519152876125e1565b50600061134c6126eb565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e8000062015180611398828261270f565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612732565b600080516020614e7f833981519152611438816124a5565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614954565b90506114668161276b565b5060010161143b565b600080516020614e7f833981519152611487816124a5565b610f5f6114938461242f565b836127d9565b606060006114a56123fe565b9050610e4281612422565b600080516020614e7f8339815191526114c8816124a5565b6114dc6114d48661242f565b858486612834565b5050505050565b60408051600080516020614edf83398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d61290a565b61157682612998565b6115808282612adb565b5050565b60008061158f6126eb565b600101546001600160a01b031692915050565b600080516020614e9f8339815191526115ba816124a5565b6115c382612b8f565b6115db600080516020614e1f833981519152846125e1565b506115f4600080516020614f1f833981519152846125e1565b5061160d600080516020614dff833981519152846125e1565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bfd565b600061165f612c94565b50600080516020614e5f83398151915290565b600080516020614f1f83398151915261168a816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d296959493929190614a1d565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b61170661259a565b600080516020614dff83398151915261171e816124a5565b61172782612b8f565b61173082612cdd565b506111fe6125d0565b606060006117456123fe565b90506117518382612e12565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a67565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b61184961259a565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e3c565b600061271061187b611f5f565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614aa1565b6118e69084614aba565b6118f09190614ad1565b905060006118fe8284614a0a565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612552565b9050838160010160008282546119399190614af3565b9091555050505b6119bc8261194c611f5f565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614b06565b6001600160a01b031690612bfd565b6119cf6001600160a01b038c1682612bfd565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a350505050610ef96125d0565b6000806000611a50612ea7565b90508060020154816003015492509250509091565b600080516020614e7f833981519152611a7d816124a5565b61158082612ecb565b600080516020614e9f833981519152611a9e816124a5565b610f5f8383612f37565b600080516020614e7f833981519152611ac0816124a5565b610f5f611acc8461242f565b83612f84565b600080516020614e7f833981519152611aea816124a5565b61158082612ffa565b6060806000611b00611499565b9050600081516001600160401b03811115611b1d57611b1d61404b565b604051908082528060200260200182016040528015611b5057816020015b6060815260200190600190039081611b3b5790505b509050600082516001600160401b03811115611b6e57611b6e61404b565b604051908082528060200260200182016040528015611ba757816020015b611b94613e0c565b815260200190600190039081611b8c5790505b50905060005b8351811015611cad57611bbe611f5f565b6001600160a01b0316635a81a626858381518110611bde57611bde614954565b60200260200101516040518263ffffffff1660e01b8152600401611c0491815260200190565b600060405180830381865afa158015611c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c49919081019061496a565b838281518110611c5b57611c5b614954565b6020026020010181905250611c88848281518110611c7b57611c7b614954565b60200260200101516120ea565b828281518110611c9a57611c9a614954565b6020908102919091010152600101611bad565b509094909350915050565b60606000611cc46123fe565b9050611cd36006820184613066565b611cf2578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b038316600090815260088201602052604090208054611d1790614a67565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4390614a67565b8015611d905780601f10611d6557610100808354040283529160200191611d90565b820191906000526020600020905b815481529060010190602001808311611d7357829003601f168201915b5050505050915050919050565b600080516020614e7f833981519152611db5816124a5565b610f5f611dc18461242f565b8361307b565b600080611dd26123fe565b9050611dde8382612e12565b600092835260020160205250604090206001015460ff1690565b600080611e036131e3565b6000858152602082905260409020909150611e1e9084613207565b949350505050565b600080611e31612576565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e6c612552565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614ebf833981519152611ecb816124a5565b6001600160a01b038316611ef257604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b0385168484613213565b600080516020614e7f833981519152611f1e816124a5565b6115808261326b565b600080516020614e7f833981519152611f3f816124a5565b610f5f611f4b8461242f565b836132c2565b6000610cf861091c8361242f565b600080611f6a6126eb565b546001600160a01b031692915050565b600080611f856126eb565b6002015492915050565b600080516020614e9f833981519152611fa7816124a5565b611fbf600080516020614e1f83398151915283612732565b50611fd8600080516020614f1f83398151915283612732565b50611ff1600080516020614dff83398151915283612732565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006120346122d2565b612043898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120716131e3565b600084815260208290526040902090915061208b9061332f565b9392505050565b600080516020614e7f8339815191526120aa816124a5565b610f5f8383613339565b606060006120c06123fe565b9050610e4260048201612422565b6120d782611145565b6120e0816124a5565b61121d8383612732565b6120f2613e0c565b60006120fc6123fe565b90506121088382612e12565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b8282101561220457838290600052602060002001805461217790614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546121a390614a67565b80156121f05780601f106121c5576101008083540402835291602001916121f0565b820191906000526020600020905b8154815290600101906020018083116121d357829003601f168201915b505050505081526020019060010190612158565b50505091525090949350505050565b6000610cf8600080516020614e1f83398151915283611e26565b600080516020614e7f833981519152612245816124a5565b611580826133d5565b600080612259612552565b6001015492915050565b6060600061226f6123fe565b9050610e4281600601612422565b6000806122886123fe565b90506122948382612e12565b600092835260020160205250604090205490565b600080516020614e7f8339815191526122c0816124a5565b610f5f6122cc8461242f565b8361346e565b600080611f85612552565b60008060006122ea612ea7565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b61232061259a565b600080516020614ebf833981519152612338816124a5565b61234182612b8f565b6123546001600160a01b03841683612bfd565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161238f91815260200190565b60405180910390a2506115806125d0565b600080516020614e7f8339815191526123b8816124a5565b6115806123c48361242f565b6134dd565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061208b83613578565b6000612439611f5f565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161246491906147e8565b602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614aa1565b6111fe81336135d4565b60006124b96123fe565b905060006124ca60098301846135ff565b9050806124ed57604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b6000806125388a8a8a8a8a8a8a61202a565b9050612544818461360b565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006125a4613635565b8054909150600119016125ca57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125da613635565b6001905550565b6000806125ec6131e3565b905060006125fa8585613659565b90508015611e1e57600085815260208390526040902061261a90856136fa565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61264f61370f565b565b61265961370f565b6000612663612552565b6040519091506126cb90600080516020614eff833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614829565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b61271761370f565b6000612721612ea7565b600281019390935550600390910155565b60008061273d6131e3565b9050600061274b8585613734565b90508015611e1e57600085815260208390526040902061261a90856137ac565b60006127756123fe565b9050600061278660098301846137c1565b9050806127a957604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612519565b60006127e36123fe565b90506127ef8382612e12565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897906125199085908590614652565b600061283e6123fe565b9050600061284c82876135ff565b90508061286e576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128cc938501929190910190613e2f565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061297a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661296e6137cd565b6001600160a01b031614155b1561264f5760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e3f8339815191526129b0816124a5565b60006129ba611f5f565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b06565b90506000612a276137cd565b9050836001600160a01b0316816001600160a01b031603612a5f5780846040516382afabc160e01b8152600401610f92929190614b23565b816001600160a01b0316846001600160a01b031614612a9557818460405163699a021f60e11b8152600401610f92929190614b23565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b35575060408051601f3d908101601f19168201909252612b3291810190614aa1565b60015b612b545781604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f8339815191528114612b8557604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137e9565b6000612b99611f7a565b90506000612ba561224e565b905081811015610f5f576000612bbb8284614a0a565b90506000612bc98247614a0a565b9050808511156114dc576040516344c8760560e11b8152600481018290526024810183905260448101869052606401610f92565b80471015612c20573060405163cd78605960e01b8152600401610f9291906145a9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c6d576040519150601f19603f3d011682016040523d82523d6000602084013e612c72565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461264f5760405163703e46dd60e11b815260040160405180910390fd5b6000612ce7612ea7565b90508060020154821115612d1657806002015482604051631728bc5b60e31b8152600401610f92929190614652565b6003810154336000908152602083905260409020544291612d3691614af3565b811115612d5e5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d80908590614af3565b1115612da75781600201548360405163d54b188760e01b8152600401610f92929190614652565b33600090815260018301602052604081208054859290612dc8908490614af3565b90915550612dd890503384612bfd565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612e1c818361383f565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e46612552565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612ed56123fe565b90506000612ee660048301846136fa565b905080612f085782604051632872fbf960e11b8152600401610f9291906145a9565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f8360405161251991906145a9565b6000612f41612ea7565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906125199085908590614652565b6000612f8e6123fe565b9050612f9a8382612e12565b600083815260028083016020908152604083209091018054600181018255908352912001612fc88382614ba2565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612519929190614c5b565b60006130046123fe565b9050600061301560048301846137ac565b9050806130375782604051631532e67160e21b8152600401610f9291906145a9565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af28360405161251991906145a9565b600061208b836001600160a01b038416613847565b60006130856123fe565b90506130918382612e12565b600083815260028083016020526040822001905b81548110156114dc57836040516020016130bf9190614c74565b604051602081830303815290604052805190602001208282815481106130e7576130e7614954565b906000526020600020016040516020016131019190614c90565b60405160208183030381529060405280519060200120036131db578154829061312c90600190614a0a565b8154811061313c5761313c614954565b9060005260206000200182828154811061315857613158614954565b90600052602060002001908161316e9190614d06565b508180548061317f5761317f614dd2565b60019003818190600052602060002001600061319b9190613e85565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131ce929190614c5b565b60405180910390a16114dc565b6001016130a5565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600061208b838361385f565b610f5f83846001600160a01b031663a9059cbb858560405160240161323992919061435b565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613889565b60006132756123fe565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132cc6123fe565b90506132d88382612e12565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612519565b6000610cf8825490565b60006133436123fe565b9050600061335460068301856136fa565b9050806133765783604051631a6107e360e31b8152600401610f9291906145a9565b6001600160a01b0384166000908152600883016020526040902061339a8482614ba2565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133df6123fe565b905060006133f060068301846137ac565b905080613412578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b0383166000908152600883016020526040812061343591613e85565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134786123fe565b90506134848382612e12565b600083815260028083016020908152604090922084516134ac93919092019190850190613e2f565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612519565b60006134e76123fe565b905060006134f582846137c1565b90508061351857604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061354690830182613ebf565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612519565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135c857602002820191906000526020600020905b8154815260200190600101908083116135b4575b50505050509050919050565b6135de8282611e26565b61158057808260405163e2517d3f60e01b8152600401610f9292919061435b565b600061208b83836138e3565b60008060008061361b868661392d565b92509250925061362b828261397a565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080613664612576565b90506136708484611e26565b6136f0576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136a63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b600061208b836001600160a01b0384166138e3565b613717613a33565b61264f57604051631afcd79f60e31b815260040160405180910390fd5b60008061373f612576565b905061374b8484611e26565b156136f0576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b600061208b836001600160a01b038416613a4d565b600061208b8383613a4d565b600080516020614e5f833981519152546001600160a01b031690565b6137f282613b36565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561383757610f5f8282613b92565b611580613c08565b600061208b83835b60009081526001919091016020526040902054151590565b600082600001828154811061387657613876614954565b9060005260206000200154905092915050565b600061389e6001600160a01b03841683613c27565b905080516000141580156138c35750808060200190518101906138c191906149d7565b155b15610f5f5782604051635274afe760e01b8152600401610f9291906145a9565b60006138ef8383613847565b61392557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139675760208401516040850151606086015160001a61395988828585613c35565b955095509550505050613973565b50508151600091506002905b9250925092565b600082600381111561398e5761398e614de8565b03613997575050565b60018260038111156139ab576139ab614de8565b036139c95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139dd576139dd614de8565b036139fe5760405163fce698f760e01b815260048101829052602401610f92565b6003826003811115613a1257613a12614de8565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a3d612623565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136f0576000613a71600183614a0a565b8554909150600090613a8590600190614a0a565b9050808214613aea576000866000018281548110613aa557613aa5614954565b9060005260206000200154905080876000018481548110613ac857613ac8614954565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613afb57613afb614dd2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b635780604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613baf9190614c74565b600060405180830381855af49150503d8060008114613bea576040519150601f19603f3d011682016040523d82523d6000602084013e613bef565b606091505b5091509150613bff858383613cfa565b95945050505050565b341561264f5760405163b398979f60e01b815260040160405180910390fd5b606061208b83836000613d46565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c665750600091506003905082613cf0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613cba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce657506000925060019150829050613cf0565b9250600091508190505b9450945094915050565b606082613d0f57613d0a82613de3565b61208b565b8151158015613d2657506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f9291906145a9565b606081471015613d6b573060405163cd78605960e01b8152600401610f9291906145a9565b600080856001600160a01b03168486604051613d879190614c74565b60006040518083038185875af1925050503d8060008114613dc4576040519150601f19603f3d011682016040523d82523d6000602084013e613dc9565b606091505b5091509150613dd9868383613cfa565b9695505050505050565b805115613df35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e75579160200282015b82811115613e755782518290613e659082614ba2565b5091602001919060010190613e4f565b50613e81929150613ed9565b5090565b508054613e9190614a67565b6000825580601f10613ea1575050565b601f0160209004906000526020600020908101906111fe9190613ef6565b50805460008255906000526020600020908101906111fe91905b80821115613e81576000613eed8282613e85565b50600101613ed9565b5b80821115613e815760008155600101613ef7565b600060208284031215613f1d57600080fd5b81356001600160e01b03198116811461208b57600080fd5b60005b83811015613f50578181015183820152602001613f38565b50506000910152565b60008151808452613f71816020860160208601613f35565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fd257601f19868403018952613fc0838351613f59565b98840198925090830190600101613fa4565b5090979650505050505050565b60208152600061208b6020830184613f85565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783518352928401929184019160010161400e565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140895761408961404b565b604052919050565b60006001600160401b038211156140aa576140aa61404b565b50601f01601f191660200190565b600082601f8301126140c957600080fd5b81356140dc6140d782614091565b614061565b8181528460208386010111156140f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561412457600080fd5b843561412f81614036565b9350602085013561413f81614036565b92506040850135915060608501356001600160401b0381111561416157600080fd5b61416d878288016140b8565b91505092959194509250565b60006020828403121561418b57600080fd5b81356001600160401b038111156141a157600080fd5b611e1e848285016140b8565b6000806000606084860312156141c257600080fd5b83356141cd81614036565b925060208401356141dd81614036565b929592945050506040919091013590565b600082601f8301126141ff57600080fd5b813560206001600160401b038083111561421b5761421b61404b565b8260051b61422a838201614061565b938452858101830193838101908886111561424457600080fd5b84880192505b85831015614280578235848111156142625760008081fd5b6142708a87838c01016140b8565b835250918401919084019061424a565b98975050505050505050565b60006020828403121561429e57600080fd5b81356001600160401b038111156142b457600080fd5b611e1e848285016141ee565b600080600080600080600080610100898b0312156142dd57600080fd5b88356142e881614036565b975060208901356142f881614036565b9650604089013561430881614036565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561433f57600080fd5b61434b8b828c016140b8565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561438657600080fd5b5035919050565b600080604083850312156143a057600080fd5b8235915060208301356143b281614036565b809150509250929050565b600080600080600060a086880312156143d557600080fd5b85356143e081614036565b945060208601356143f081614036565b935060408601359250606086013561440781614036565b9150608086013561441781614036565b809150509295509295909350565b6000806040838503121561443857600080fd5b82356001600160401b0381111561444e57600080fd5b61445a858286016140b8565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561448d57600080fd5b84356001600160401b03808211156144a457600080fd5b6144b0888389016140b8565b955060208701359450604087013591506144c982614469565b909250606086013590808211156144df57600080fd5b5061416d878288016141ee565b600080600080600080600060e0888a03121561450757600080fd5b873561451281614036565b9650602088013561452281614036565b9550604088013561453281614036565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561456d57600080fd5b823561457881614036565b915060208301356001600160401b0381111561459357600080fd5b61459f858286016140b8565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145d057600080fd5b82356145db81614036565b946020939093013593505050565b600080600080600060a0868803121561460157600080fd5b853561460c81614036565b945060208601356001600160401b0381111561462757600080fd5b614633888289016140b8565b9450506040860135925060608601359150608086013561441781614036565b918252602082015260400190565b60006020828403121561467257600080fd5b813561208b81614036565b6000806040838503121561469057600080fd5b50508035926020909101359150565b600080604083850312156146b257600080fd5b82356001600160401b03808211156146c957600080fd5b6146d5868387016140b8565b935060208501359150808211156146eb57600080fd5b5061459f858286016140b8565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561476957607f19898703018352614757868551613f59565b9550928401929184019160010161473b565b5093979650505050505050565b6040815260006147896040830185613f85565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147d957601f198784030185526147c78383516146f8565b948601949250908501906001016147ab565b50909998505050505050505050565b60208152600061208b6020830184613f59565b6000806040838503121561480e57600080fd5b823561481981614036565b915060208301356143b281614036565b93845260208401929092526040830152606082015260800190565b60006020828403121561485657600080fd5b813561208b81614469565b6000806040838503121561487457600080fd5b82356001600160401b0381111561488a57600080fd5b614896858286016140b8565b92505060208301356143b281614469565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783516001600160a01b0316835292840192918401916001016148c3565b60208152600061208b60208301846146f8565b6000806040838503121561490e57600080fd5b82356001600160401b038082111561492557600080fd5b614931868387016140b8565b9350602085013591508082111561494757600080fd5b5061459f858286016141ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561497c57600080fd5b81516001600160401b0381111561499257600080fd5b8201601f810184136149a357600080fd5b80516149b16140d782614091565b8181528560208385010111156149c657600080fd5b613bff826020830160208601613f35565b6000602082840312156149e957600080fd5b815161208b81614469565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149f4565b600060018060a01b038089168352808816602084015260c06040840152614a4760c0840188613f59565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a7b57607f821691505b602082108103614a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ab357600080fd5b5051919050565b8082028115828204841417610cf857610cf86149f4565b600082614aee57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149f4565b600060208284031215614b1857600080fd5b815161208b81614036565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b665750805b601f850160051c820191505b81811015614b8557828155600101614b72565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bbb57614bbb61404b565b614bcf81614bc98454614a67565b84614b3d565b602080601f831160018114614bfe5760008415614bec5750858301515b614bf68582614b8d565b865550614b85565b600085815260208120601f198616915b82811015614c2d57888601518255948401946001909101908401614c0e565b5085821015614c4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e1e6040830184613f59565b60008251614c86818460208701613f35565b9190910192915050565b6000808354614c9e81614a67565b60018281168015614cb65760018114614ccb57614cfa565b60ff1984168752821515830287019450614cfa565b8760005260208060002060005b85811015614cf15781548a820152908401908201614cd8565b50505082870194505b50929695505050505050565b818103614d11575050565b614d1b8254614a67565b6001600160401b03811115614d3257614d3261404b565b614d4081614bc98454614a67565b6000601f821160018114614d6e5760008315614d5c5750848201545b614d668482614b8d565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614da85782860154825560019586019590910190602001614d88565b5085831015614c4b5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa2646970667358221220d4fe695f798b2cdbd93ac75abfc29f73ff41617d251ff28aea4f45601429b4c364736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x4F74 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2915 ADD MSTORE DUP2 DUP2 PUSH2 0x293E ADD MSTORE PUSH2 0x2C9F ADD MSTORE PUSH2 0x4F74 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x345 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x4C2 JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x26687C9F EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x6D3 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x58E5CAE0 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x7ED JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x892 JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x8E1 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x901 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x921 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x941 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x961 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0x991 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x9B1 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0x9C6 JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0x9E6 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xA6C JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xAC1 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xAE1 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xB23 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xB65 JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xB92 JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xBB2 JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xBD2 JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xBFC JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xC3C JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x34C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x3F0B JUMP JUMPDEST PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0xCFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FF2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x410E JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0xE48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x41AD JUMP JUMPDEST PUSH2 0xE56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x49B CALLDATASIZE PUSH1 0x4 PUSH2 0x428C JUMP JUMPDEST PUSH2 0xF03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E2 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x42C0 JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x1201 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x428C JUMP JUMPDEST PUSH2 0x1420 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x4425 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x4477 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x44EC JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x6AC CALLDATASIZE PUSH1 0x4 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x45BD JUMP JUMPDEST PUSH2 0x15A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E9 JUMP JUMPDEST PUSH2 0x1672 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x16FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x42C0 JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0x1A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1A65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x808 CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x828 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1AA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x848 CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1AD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x862 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH2 0x8AD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1CB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x47E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x8FC CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1D9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x91C CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1DC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x93C CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x1DF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x95C CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x1E26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x97C CALLDATASIZE PUSH1 0x4 PUSH2 0x47FB JUMP JUMPDEST PUSH2 0x1E5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4829 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9AC CALLDATASIZE PUSH1 0x4 PUSH2 0x41AD JUMP JUMPDEST PUSH2 0x1EB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x1F06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA01 CALLDATASIZE PUSH1 0x4 PUSH2 0x4861 JUMP JUMPDEST PUSH2 0x1F27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xA52 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x1F51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1F5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1F7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA9C CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1F8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xABC CALLDATASIZE PUSH1 0x4 PUSH2 0x44EC JUMP JUMPDEST PUSH2 0x202A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xADC CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x2066 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xAFC CALLDATASIZE PUSH1 0x4 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x2092 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x20B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xB60 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x20CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB85 PUSH2 0xB80 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xBAD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x2213 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x222D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x224E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x2263 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xC17 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x227D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x48FB JUMP JUMPDEST PUSH2 0x22A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x22D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0xC6C CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x22DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC8C CALLDATASIZE PUSH1 0x4 PUSH2 0x45BD JUMP JUMPDEST PUSH2 0x2318 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xCAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH2 0xCF8 DUP3 PUSH2 0x23C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD0A PUSH2 0xE28 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xD27 JUMPI PUSH2 0xD27 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD5A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD45 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE21 JUMPI PUSH2 0xD71 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD91 JUMPI PUSH2 0xD91 PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xDFC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x496A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE0E JUMPI PUSH2 0xE0E PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD60 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE34 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x9 ADD PUSH2 0x2422 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0xC17 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE6E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xF1B DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0xF4B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x242F JUMP JUMPDEST SWAP1 POP PUSH2 0xF56 DUP2 PUSH2 0x24AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0xF9B JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA3 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100F SWAP2 SWAP1 PUSH2 0x49D7 JUMP JUMPDEST PUSH2 0x102E JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x1061 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2526 JUMP JUMPDEST SWAP2 POP PUSH2 0x106C DUP3 PUSH2 0x2213 JUMP JUMPDEST PUSH2 0x108B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1095 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4652 JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x110D JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x111C SWAP1 DUP10 PUSH2 0x4A0A JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1138 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1150 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x116D PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1185 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x1B29E1BA PUSH2 0x11A7 PUSH2 0x1584 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11C5 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11FE PUSH2 0x25D0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x120A DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1213 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x25E1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCF8 PUSH2 0x763 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B PUSH2 0x2623 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1262 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x127E JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x128C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x12D3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x12DB PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x12E3 PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x12EB PUSH2 0x2651 JUMP JUMPDEST PUSH2 0x12F6 PUSH1 0x0 DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x130F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x1341 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x134C PUSH2 0x26EB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x1398 DUP3 DUP3 PUSH2 0x270F JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x13E1 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1416 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF5F DUP3 DUP3 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1438 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x145B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4954 JUMP JUMPDEST SWAP1 POP PUSH2 0x1466 DUP2 PUSH2 0x276B JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x143B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1493 DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x27D9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x14A5 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x14C8 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14D4 DUP7 PUSH2 0x242F JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x2834 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x156D PUSH2 0x290A JUMP JUMPDEST PUSH2 0x1576 DUP3 PUSH2 0x2998 JUMP JUMPDEST PUSH2 0x1580 DUP3 DUP3 PUSH2 0x2ADB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x158F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x15BA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x15C3 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x15F4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x160D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0xF5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165F PUSH2 0x2C94 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x168A DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x53EA54C5 PUSH2 0x16AC PUSH2 0x1584 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1706 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x171E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1727 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x1730 DUP3 PUSH2 0x2CDD JUMP JUMPDEST POP PUSH2 0x11FE PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1745 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1751 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1835 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x17A8 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x17D4 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1821 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x17F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1821 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1804 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1849 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x185C DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xF64 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x186E DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x187B PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18DC SWAP2 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH2 0x18E6 SWAP1 DUP5 PUSH2 0x4ABA JUMP JUMPDEST PUSH2 0x18F0 SWAP2 SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FE DUP3 DUP5 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1940 JUMPI PUSH1 0x0 PUSH2 0x1923 PUSH2 0x2552 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1939 SWAP2 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x19BC DUP3 PUSH2 0x194C PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x4B06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2BFD JUMP JUMPDEST PUSH2 0x19CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 DUP14 AND SWAP2 DUP15 AND SWAP1 PUSH32 0x4EBD6343A4AE90EA9A2ADD4327D0439DE765F4B8BBB691CAAF0875EF36C54E81 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xEF9 PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A50 PUSH2 0x2EA7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A7D DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2ECB JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A9E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x2F37 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AC0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1ACC DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AEA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2FFA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1B00 PUSH2 0x1499 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B1D JUMPI PUSH2 0x1B1D PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B50 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B3B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B6E JUMPI PUSH2 0x1B6E PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1BA7 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B94 PUSH2 0x3E0C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B8C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1CAD JUMPI PUSH2 0x1BBE PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BDE JUMPI PUSH2 0x1BDE PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C04 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C49 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x496A JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C5B JUMPI PUSH2 0x1C5B PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x1C88 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C7B JUMPI PUSH2 0x1C7B PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x20EA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C9A JUMPI PUSH2 0x1C9A PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1BAD JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1CC4 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1CD3 PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x3066 JUMP JUMPDEST PUSH2 0x1CF2 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1D17 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1D43 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D90 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D65 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D90 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D73 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1DB5 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1DC1 DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x307B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD2 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1DDE DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E03 PUSH2 0x31E3 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1E1E SWAP1 DUP5 PUSH2 0x3207 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E31 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E6C PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1ECB DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3213 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F1E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x326B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F3F DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1F4B DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x32C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0x91C DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6A PUSH2 0x26EB JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F85 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1FA7 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1FBF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH2 0x1FD8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH2 0x1FF1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2034 PUSH2 0x22D2 JUMP JUMPDEST PUSH2 0x2043 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x14E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2071 PUSH2 0x31E3 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x208B SWAP1 PUSH2 0x332F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x20AA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x3339 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20C0 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH1 0x4 DUP3 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x20D7 DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x20E0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x2732 JUMP JUMPDEST PUSH2 0x20F2 PUSH2 0x3E0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20FC PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2108 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2204 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x2177 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x21A3 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x21F0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x21C5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x21F0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x21D3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2158 JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x1E26 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2245 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x33D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2259 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x226F PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x6 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2288 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2294 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22C0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x22CC DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x346E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F85 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22EA PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2320 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2338 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x2341 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x2354 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BFD JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x238F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1580 PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x23B8 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x23C4 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH2 0x34DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xCF8 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x208B DUP4 PUSH2 0x3578 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2439 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2464 SWAP2 SWAP1 PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCF8 SWAP2 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH2 0x11FE DUP2 CALLER PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B9 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24CA PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x24ED JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x7ACACFD576383587962277516962C289D19F807BE443F4E303AB45ACE24931AC SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2538 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x202A JUMP JUMPDEST SWAP1 POP PUSH2 0x2544 DUP2 DUP5 PUSH2 0x360B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A4 PUSH2 0x3635 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x25CA JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25DA PUSH2 0x3635 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25EC PUSH2 0x31E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25FA DUP6 DUP6 PUSH2 0x3659 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x261A SWAP1 DUP6 PUSH2 0x36FA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x264F PUSH2 0x370F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2659 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x26CB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4829 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x2717 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2721 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x273D PUSH2 0x31E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x274B DUP6 DUP6 PUSH2 0x3734 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x261A SWAP1 DUP6 PUSH2 0x37AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2775 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2786 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x37C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF0DD3DE472DDCD75AE2C17728A45801355FB6DD8615A7C53C15504B4279C09BE SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E3 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x27EF DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE MLOAD PUSH32 0x8DB4DCEEAE8D620782D356DEC6A0148E893FF28620319F10F53DD2232B197897 SWAP1 PUSH2 0x2519 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x283E PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x284C DUP3 DUP8 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x286E JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x28CC SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3E2F JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE PUSH32 0x8F531E5EDE07D5741FD086BB787ED399A64704EB757B87CC80CF6635B274E5B5 SWAP2 POP PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x297A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x296E PUSH2 0x37CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x29B0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BA PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A1B SWAP2 SWAP1 PUSH2 0x4B06 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A27 PUSH2 0x37CD JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A5F JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A95 JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2B35 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2B32 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2B54 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2B85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B99 PUSH2 0x1F7A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BA5 PUSH2 0x224E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x2BBB DUP3 DUP5 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BC9 DUP3 SELFBALANCE PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xF92 JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2C20 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C6D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CE7 PUSH2 0x2EA7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x2D16 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x2D36 SWAP2 PUSH2 0x4AF3 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x2D5E JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D80 SWAP1 DUP6 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST GT ISZERO PUSH2 0x2DA7 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x2DC8 SWAP1 DUP5 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2DD8 SWAP1 POP CALLER DUP5 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x2E1C DUP2 DUP4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E46 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ED5 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EE6 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x36FA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F08 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F41 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x2519 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F8E PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2F9A DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x2FC8 DUP4 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP PUSH32 0x1CD139430ED537AB9E8086952076CCE01EDD5BA6E30907AF0FFE3709FD3139E6 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP3 SWAP2 SWAP1 PUSH2 0x4C5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3004 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3015 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x37AC JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3037 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3847 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3085 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x3091 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x14DC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x30BF SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x30E7 JUMPI PUSH2 0x30E7 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3101 SWAP2 SWAP1 PUSH2 0x4C90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x31DB JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x312C SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x4A0A JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x313C JUMPI PUSH2 0x313C PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3158 JUMPI PUSH2 0x3158 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x316E SWAP2 SWAP1 PUSH2 0x4D06 JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x317F JUMPI PUSH2 0x317F PUSH2 0x4DD2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x319B SWAP2 SWAP1 PUSH2 0x3E85 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xFC8D82C9E7E7938446DA05458183EFA5916C443A2BAB87F97F94A8D47742B014 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31CE SWAP3 SWAP2 SWAP1 PUSH2 0x4C5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x30A5 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x385F JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3239 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3889 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3275 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32CC PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x32D8 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1B76230B39D2D0C1A2A77A90C170190D2280796ED56B280177256CE39DF1A664 SWAP2 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3343 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3354 PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x36FA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3376 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x339A DUP5 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33DF PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33F0 PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x37AC JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3412 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3435 SWAP2 PUSH2 0x3E85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3478 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x3484 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x34AC SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3E2F JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xA616BFC5BB0E46C6CAD727E1B55E3685067E1296D962A7F37017874A27AA0098 SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E7 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34F5 DUP3 DUP5 PUSH2 0x37C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3518 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3546 SWAP1 DUP4 ADD DUP3 PUSH2 0x3EBF JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x94DA5EECA10D4D6EE8455F99240C10B0C74B0CF5BF754AFB81C81E2704B9C427 SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x35C8 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x35B4 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35DE DUP3 DUP3 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x1580 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x38E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x361B DUP7 DUP7 PUSH2 0x392D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x362B DUP3 DUP3 PUSH2 0x397A JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3664 PUSH2 0x2576 JUMP JUMPDEST SWAP1 POP PUSH2 0x3670 DUP5 DUP5 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x36F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x36A6 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x38E3 JUMP JUMPDEST PUSH2 0x3717 PUSH2 0x3A33 JUMP JUMPDEST PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x373F PUSH2 0x2576 JUMP JUMPDEST SWAP1 POP PUSH2 0x374B DUP5 DUP5 PUSH2 0x1E26 JUMP JUMPDEST ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x37F2 DUP3 PUSH2 0x3B36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3837 JUMPI PUSH2 0xF5F DUP3 DUP3 PUSH2 0x3B92 JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3876 JUMPI PUSH2 0x3876 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x389E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3C27 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x38C3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x38C1 SWAP2 SWAP1 PUSH2 0x49D7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF5F JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38EF DUP4 DUP4 PUSH2 0x3847 JUMP JUMPDEST PUSH2 0x3925 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xCF8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3967 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3959 DUP9 DUP3 DUP6 DUP6 PUSH2 0x3C35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3973 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x398E JUMPI PUSH2 0x398E PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x3997 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39AB JUMPI PUSH2 0x39AB PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x39C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39DD JUMPI PUSH2 0x39DD PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x39FE JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A12 JUMPI PUSH2 0x3A12 PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3D PUSH2 0x2623 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x0 PUSH2 0x3A71 PUSH1 0x1 DUP4 PUSH2 0x4A0A JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3A85 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3AEA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3AA5 JUMPI PUSH2 0x3AA5 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3AC8 JUMPI PUSH2 0x3AC8 PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x3AFB JUMPI PUSH2 0x3AFB PUSH2 0x4DD2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xCF8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x3B63 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BAF SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BFF DUP6 DUP4 DUP4 PUSH2 0x3CFA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x208B DUP4 DUP4 PUSH1 0x0 PUSH2 0x3D46 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x3C66 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x3CF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CBA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3CE6 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x3CF0 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3D0F JUMPI PUSH2 0x3D0A DUP3 PUSH2 0x3DE3 JUMP JUMPDEST PUSH2 0x208B JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D26 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xE21 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x3D6B JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3D87 SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DC4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DC9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3DD9 DUP7 DUP4 DUP4 PUSH2 0x3CFA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3DF3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x3E75 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3E75 JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x3E65 SWAP1 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3E4F JUMP JUMPDEST POP PUSH2 0x3E81 SWAP3 SWAP2 POP PUSH2 0x3ED9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x3E91 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x3EA1 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 PUSH2 0x3EF6 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E81 JUMPI PUSH1 0x0 PUSH2 0x3EED DUP3 DUP3 PUSH2 0x3E85 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3ED9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E81 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3EF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x208B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F50 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F38 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F71 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3FD2 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x3FC0 DUP4 DUP4 MLOAD PUSH2 0x3F59 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FA4 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F85 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x402A JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x400E JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4089 JUMPI PUSH2 0x4089 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40AA JUMPI PUSH2 0x40AA PUSH2 0x404B JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x40DC PUSH2 0x40D7 DUP3 PUSH2 0x4091 JUMP JUMPDEST PUSH2 0x4061 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x40F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x412F DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x413F DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x416D DUP8 DUP3 DUP9 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x418B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1E DUP5 DUP3 DUP6 ADD PUSH2 0x40B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x41C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x41CD DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x41DD DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x41FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x421B JUMPI PUSH2 0x421B PUSH2 0x404B JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x422A DUP4 DUP3 ADD PUSH2 0x4061 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x4244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x4280 JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x4262 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4270 DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x40B8 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x424A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x429E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1E DUP5 DUP3 DUP6 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x42DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x42E8 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x42F8 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x4308 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x433F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x434B DUP12 DUP3 DUP13 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x43A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4036 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x43D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x43E0 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x43F0 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x4407 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4417 DUP2 PUSH2 0x4036 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x445A DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x448D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x44A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44B0 DUP9 DUP4 DUP10 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x44C9 DUP3 PUSH2 0x4469 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x44DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x416D DUP8 DUP3 DUP9 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4512 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4522 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4532 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x456D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4578 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4593 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45DB DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x460C DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4633 DUP9 DUP3 DUP10 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4417 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x208B DUP2 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46D5 DUP7 DUP4 DUP8 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4769 JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4757 DUP7 DUP6 MLOAD PUSH2 0x3F59 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x473B JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4789 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F85 JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47D9 JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x47C7 DUP4 DUP4 MLOAD PUSH2 0x46F8 JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x47AB JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x480E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4819 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x208B DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x488A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4896 DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x402A JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x48C3 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46F8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x490E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4931 DUP7 DUP4 DUP8 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4947 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x49A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x49B1 PUSH2 0x40D7 DUP3 PUSH2 0x4091 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x49C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BFF DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x208B DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4A47 PUSH1 0xC0 DUP5 ADD DUP9 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x80 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 AND PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A7B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A9B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4AEE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x208B DUP2 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4B66 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4B85 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B72 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BBB JUMPI PUSH2 0x4BBB PUSH2 0x404B JUMP JUMPDEST PUSH2 0x4BCF DUP2 PUSH2 0x4BC9 DUP5 SLOAD PUSH2 0x4A67 JUMP JUMPDEST DUP5 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4BFE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x4BEC JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x4BF6 DUP6 DUP3 PUSH2 0x4B8D JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x4B85 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C2D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4C0E JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x4C4B JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E1E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4C86 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F35 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x4C9E DUP2 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x4CB6 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4CCB JUMPI PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4CFA JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4CF1 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x4CD8 JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x4D11 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4D1B DUP3 SLOAD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4D32 JUMPI PUSH2 0x4D32 PUSH2 0x404B JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x4BC9 DUP5 SLOAD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4D6E JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x4D5C JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x4D66 DUP5 DUP3 PUSH2 0x4B8D JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DA8 JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4D88 JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x4C4B JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x7358221220D4FE PUSH10 0x5F798B2CDBD93AC75ABF 0xC2 SWAP16 PUSH20 0xFF41617D251FF28AEA4F45601429B4C364736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "2613:24241:24:-:0;;;1171:4:3;1128:48;;7774:53:24;;;;;;;;;-1:-1:-1;7798:22:24;:20;:22::i;:::-;2613:24241;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:31;;;8087:29:2;;146:2:31;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:31:-;2613:24241:24;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@BOOKING_OPERATOR_ROLE_3684": { + "entryPoint": null, + "id": 3684, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@BOT_ADMIN_ROLE_3660": { + "entryPoint": null, + "id": 3660, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@CHEQUE_OPERATOR_ROLE_3666": { + "entryPoint": null, + "id": 3666, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DOMAIN_TYPEHASH_4836": { + "entryPoint": null, + "id": 4836, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@GAS_WITHDRAWER_ROLE_3672": { + "entryPoint": null, + "id": 3672, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MESSENGER_CHEQUE_TYPEHASH_4832": { + "entryPoint": null, + "id": 4832, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_ADMIN_ROLE_3690": { + "entryPoint": null, + "id": 3690, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_3654": { + "entryPoint": null, + "id": 3654, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_841": { + "entryPoint": null, + "id": 841, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@WITHDRAWER_ROLE_3678": { + "entryPoint": null, + "id": 3678, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_3873": { + "entryPoint": null, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 9799, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ChequeManager_init_4974": { + "entryPoint": 9809, + "id": 4974, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__GasMoneyManager_init_5562": { + "entryPoint": 9999, + "id": 5562, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_871": { + "entryPoint": null, + "id": 871, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addPublicKey_6835": { + "entryPoint": 13113, + "id": 6835, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addServiceCapability_6348": { + "entryPoint": 12164, + "id": 6348, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addService_6172": { + "entryPoint": 10292, + "id": 6172, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_addSupportedToken_6696": { + "entryPoint": 11979, + "id": 6696, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_addWantedService_6610": { + "entryPoint": 9391, + "id": 6610, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_3035": { + "entryPoint": 14563, + "id": 3035, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_3169": { + "entryPoint": 14431, + "id": 3169, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_3973": { + "entryPoint": 10648, + "id": 3973, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_callOptionalReturn_2074": { + "entryPoint": 14473, + "id": 2074, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkInitializing_739": { + "entryPoint": 14095, + "id": 739, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_1673": { + "entryPoint": 15368, + "id": 1673, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_947": { + "entryPoint": 11412, + "id": 947, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkPrefundSpent_4037": { + "entryPoint": 11151, + "id": 4037, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkProxy_931": { + "entryPoint": 10506, + "id": 931, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 9381, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 13780, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkServiceExists_6577": { + "entryPoint": 11794, + "id": 6577, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_3138": { + "entryPoint": 14407, + "id": 3138, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 12771, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 9590, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountStorage_3712": { + "entryPoint": 9963, + "id": 3712, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getChequeManagerStorage_4889": { + "entryPoint": 9554, + "id": 4889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getGasMoneyStorage_5508": { + "entryPoint": 11943, + "id": 5508, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_816": { + "entryPoint": 9763, + "id": 816, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPartnerConfigurationStorage_6008": { + "entryPoint": 9214, + "id": 6008, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_1073": { + "entryPoint": 13877, + "id": 1073, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 13913, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_522": { + "entryPoint": 9697, + "id": 522, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_807": { + "entryPoint": 14899, + "id": 807, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_3152": { + "entryPoint": null, + "id": 3152, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_1027": { + "entryPoint": null, + "id": 1027, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_1155": { + "entryPoint": 9680, + "id": 1155, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_1139": { + "entryPoint": 9626, + "id": 1139, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_removePublicKey_6874": { + "entryPoint": 13269, + "id": 6874, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeServiceCapability_6431": { + "entryPoint": 12411, + "id": 6431, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_removeService_6211": { + "entryPoint": 13533, + "id": 6211, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeSupportedToken_6730": { + "entryPoint": 12282, + "id": 6730, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeWantedService_6643": { + "entryPoint": 10091, + "id": 6643, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_3119": { + "entryPoint": 14925, + "id": 3119, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revert_2511": { + "entryPoint": 15843, + "id": 2511, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 14132, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_562": { + "entryPoint": 10034, + "id": 562, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setGasMoneyWithdrawal_5696": { + "entryPoint": 12087, + "id": 5696, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setImplementation_1459": { + "entryPoint": 15158, + "id": 1459, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setOffChainPaymentSupported_6775": { + "entryPoint": 12907, + "id": 6775, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setServiceCapabilities_6313": { + "entryPoint": 13422, + "id": 6313, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceFee_6245": { + "entryPoint": 10201, + "id": 6245, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceRestrictedRate_6279": { + "entryPoint": 12994, + "id": 6279, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_throwError_2969": { + "entryPoint": 14714, + "id": 2969, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_998": { + "entryPoint": 10971, + "id": 998, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_3183": { + "entryPoint": 13688, + "id": 3183, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_withdrawGasMoney_5664": { + "entryPoint": 11485, + "id": 5664, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addMessengerBot_4738": { + "entryPoint": 5538, + "id": 4738, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addPublicKey_4681": { + "entryPoint": 8338, + "id": 4681, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addServiceCapability_4325": { + "entryPoint": 6824, + "id": 4325, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addService_4232": { + "entryPoint": 5296, + "id": 4232, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@addSupportedToken_4650": { + "entryPoint": 6757, + "id": 4650, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addWantedServices_4529": { + "entryPoint": 3843, + "id": 4529, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_3205": { + "entryPoint": 13823, + "id": 3205, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_3335": { + "entryPoint": 14074, + "id": 3335, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_3431": { + "entryPoint": 12807, + "id": 3431, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@buyBookingToken_4117": { + "entryPoint": 4453, + "id": 4117, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@cashInCheque_5359": { + "entryPoint": 6209, + "id": 5359, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@contains_3241": { + "entryPoint": 14399, + "id": 3241, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_3389": { + "entryPoint": 12390, + "id": 3389, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionCallWithValue_2379": { + "entryPoint": 15686, + "id": 2379, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@functionCall_2333": { + "entryPoint": 15399, + "id": 2333, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_2431": { + "entryPoint": 15250, + "id": 2431, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_2544": { + "entryPoint": null, + "id": 2544, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllServiceHashes_6450": { + "entryPoint": 5273, + "id": 6450, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_3906": { + "entryPoint": 5508, + "id": 3906, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDomainSeparator_4990": { + "entryPoint": 8914, + "id": 4990, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getGasMoneyWithdrawalForAccount_5744": { + "entryPoint": 8925, + "id": 5744, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@getGasMoneyWithdrawal_5717": { + "entryPoint": 6723, + "id": 5717, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getImplementation_1432": { + "entryPoint": 14285, + "id": 1432, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getLastCashIn_5402": { + "entryPoint": 7772, + "id": 5402, + "parameterSlots": 2, + "returnSlots": 4 + }, + "@getManagerAddress_3890": { + "entryPoint": 8031, + "id": 3890, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_3922": { + "entryPoint": 8058, + "id": 3922, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPublicKey_6925": { + "entryPoint": 7352, + "id": 6925, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getPublicKeysAddresses_6893": { + "entryPoint": 8803, + "id": 6893, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 4421, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 8294, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 7672, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getServiceCapabilities_4493": { + "entryPoint": 4643, + "id": 4493, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceCapabilities_6555": { + "entryPoint": 5945, + "id": 6555, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_4462": { + "entryPoint": 3656, + "id": 4462, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_6502": { + "entryPoint": 8829, + "id": 6502, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceHash_4361": { + "entryPoint": 9263, + "id": 4361, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_4477": { + "entryPoint": 8017, + "id": 4477, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_6528": { + "entryPoint": 7623, + "id": 6528, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getService_6476": { + "entryPoint": 8426, + "id": 6476, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getSupportedServices_4447": { + "entryPoint": 6899, + "id": 4447, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getSupportedTokens_6750": { + "entryPoint": 8372, + "id": 6750, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getTotalChequePayments_5456": { + "entryPoint": 8782, + "id": 5456, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServiceHashes_6662": { + "entryPoint": 3624, + "id": 6662, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServices_4622": { + "entryPoint": 3326, + "id": 4622, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 4609, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 7718, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@hashMessengerCheque_5025": { + "entryPoint": 5347, + "id": 5025, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@hashTypedDataV4_5064": { + "entryPoint": 8234, + "id": 5064, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@initialize_3869": { + "entryPoint": 4657, + "id": 3869, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@isBotAllowed_3988": { + "entryPoint": 8723, + "id": 3988, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_3404": { + "entryPoint": 13103, + "id": 3404, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mintBookingToken_4097": { + "entryPoint": 5746, + "id": 4097, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@offChainPaymentSupported_6792": { + "entryPoint": 4397, + "id": 6792, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@onERC721Received_4136": { + "entryPoint": null, + "id": 4136, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@proxiableUUID_889": { + "entryPoint": 5717, + "id": 889, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@recoverSigner_5108": { + "entryPoint": 9510, + "id": 5108, + "parameterSlots": 8, + "returnSlots": 1 + }, + "@recover_2726": { + "entryPoint": 13835, + "id": 2726, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@removeMessengerBot_4767": { + "entryPoint": 8079, + "id": 4767, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removePublicKey_4695": { + "entryPoint": 8749, + "id": 4695, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeServiceCapability_4344": { + "entryPoint": 7581, + "id": 4344, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@removeService_4248": { + "entryPoint": 9120, + "id": 4248, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeSupportedToken_4664": { + "entryPoint": 6866, + "id": 4664, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeWantedServices_4565": { + "entryPoint": 5152, + "id": 4565, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_3223": { + "entryPoint": 14273, + "id": 3223, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_3362": { + "entryPoint": 14252, + "id": 3362, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 5101, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 8398, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransfer_1884": { + "entryPoint": 12819, + "id": 1884, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@sendValue_2316": { + "entryPoint": 11261, + "id": 2316, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setGasMoneyWithdrawal_4804": { + "entryPoint": 6790, + "id": 4804, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setLastCashIn_5440": { + "entryPoint": 11836, + "id": 5440, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@setOffChainPaymentSupported_4636": { + "entryPoint": 7942, + "id": 4636, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setServiceCapabilities_4306": { + "entryPoint": 8872, + "id": 4306, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceFee_4267": { + "entryPoint": 5231, + "id": 4267, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceRestrictedRate_4286": { + "entryPoint": 7975, + "id": 4286, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@supportsInterface_1213": { + "entryPoint": null, + "id": 1213, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 3283, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 9161, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@transferERC20_4169": { + "entryPoint": 7859, + "id": 4169, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@transferERC721_4206": { + "entryPoint": 3670, + "id": 4206, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@tryRecover_2696": { + "entryPoint": 14637, + "id": 2696, + "parameterSlots": 2, + "returnSlots": 3 + }, + "@tryRecover_2884": { + "entryPoint": 15413, + "id": 2884, + "parameterSlots": 4, + "returnSlots": 3 + }, + "@upgradeToAndCall_1493": { + "entryPoint": 14313, + "id": 1493, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_909": { + "entryPoint": 5477, + "id": 909, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_3304": { + "entryPoint": 9250, + "id": 3304, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@values_3461": { + "entryPoint": null, + "id": 3461, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_2471": { + "entryPoint": 15610, + "id": 2471, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@verifyCheque_5243": { + "entryPoint": 3940, + "id": 5243, + "parameterSlots": 8, + "returnSlots": 2 + }, + "@withdrawGasMoney_4787": { + "entryPoint": 5886, + "id": 4787, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@withdraw_4066": { + "entryPoint": 8984, + "id": 4066, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_array_string_dyn": { + "entryPoint": 16878, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 16568, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 18016, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 19206, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_payablet_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 18427, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 17644, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": { + "entryPoint": 17088, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address": { + "entryPoint": 17341, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 16654, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 17754, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798": { + "entryPoint": 17897, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 17853, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 17036, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool": { + "entryPoint": 18500, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 18903, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 17268, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 17293, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 16139, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$1798t_addresst_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC721_$2241t_addresst_uint256": { + "entryPoint": 16813, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 16761, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr_fromMemory": { + "entryPoint": 18794, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 18683, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_bool": { + "entryPoint": 18529, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 18079, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256": { + "entryPoint": 17445, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 17527, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 19105, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 18045, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_array_string_dyn": { + "entryPoint": 16261, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 16217, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_struct_Service": { + "entryPoint": 18168, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 19572, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 19600, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 17833, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 19235, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed": { + "entryPoint": 18973, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 17243, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 18599, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 16370, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 16351, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 18294, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 19547, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 18408, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_Service_$5968_memory_ptr__to_t_struct$_Service_$5968_memory_ptr__fromStack_reversed": { + "entryPoint": 18664, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 18002, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 18473, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 16481, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 16529, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 19187, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 19153, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 19130, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 18954, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 19261, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 19362, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage": { + "entryPoint": 19718, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 16181, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 19047, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 19341, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 18932, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 19944, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 19922, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 18772, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 16459, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 16438, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 17513, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:36943:31", + "nodeType": "YulBlock", + "src": "0:36943:31", + "statements": [ + { + "nativeSrc": "6:3:31", + "nodeType": "YulBlock", + "src": "6:3:31", + "statements": [] + }, + { + "body": { + "nativeSrc": "83:217:31", + "nodeType": "YulBlock", + "src": "83:217:31", + "statements": [ + { + "body": { + "nativeSrc": "129:16:31", + "nodeType": "YulBlock", + "src": "129:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138:1:31", + "nodeType": "YulLiteral", + "src": "138:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "141:1:31", + "nodeType": "YulLiteral", + "src": "141:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "131:6:31", + "nodeType": "YulIdentifier", + "src": "131:6:31" + }, + "nativeSrc": "131:12:31", + "nodeType": "YulFunctionCall", + "src": "131:12:31" + }, + "nativeSrc": "131:12:31", + "nodeType": "YulExpressionStatement", + "src": "131:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "104:7:31", + "nodeType": "YulIdentifier", + "src": "104:7:31" + }, + { + "name": "headStart", + "nativeSrc": "113:9:31", + "nodeType": "YulIdentifier", + "src": "113:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:31", + "nodeType": "YulIdentifier", + "src": "100:3:31" + }, + "nativeSrc": "100:23:31", + "nodeType": "YulFunctionCall", + "src": "100:23:31" + }, + { + "kind": "number", + "nativeSrc": "125:2:31", + "nodeType": "YulLiteral", + "src": "125:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "96:3:31", + "nodeType": "YulIdentifier", + "src": "96:3:31" + }, + "nativeSrc": "96:32:31", + "nodeType": "YulFunctionCall", + "src": "96:32:31" + }, + "nativeSrc": "93:52:31", + "nodeType": "YulIf", + "src": "93:52:31" + }, + { + "nativeSrc": "154:36:31", + "nodeType": "YulVariableDeclaration", + "src": "154:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "180:9:31", + "nodeType": "YulIdentifier", + "src": "180:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "167:12:31", + "nodeType": "YulIdentifier", + "src": "167:12:31" + }, + "nativeSrc": "167:23:31", + "nodeType": "YulFunctionCall", + "src": "167:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "158:5:31", + "nodeType": "YulTypedName", + "src": "158:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "254:16:31", + "nodeType": "YulBlock", + "src": "254:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "263:1:31", + "nodeType": "YulLiteral", + "src": "263:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "266:1:31", + "nodeType": "YulLiteral", + "src": "266:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "256:6:31", + "nodeType": "YulIdentifier", + "src": "256:6:31" + }, + "nativeSrc": "256:12:31", + "nodeType": "YulFunctionCall", + "src": "256:12:31" + }, + "nativeSrc": "256:12:31", + "nodeType": "YulExpressionStatement", + "src": "256:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "212:5:31", + "nodeType": "YulIdentifier", + "src": "212:5:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "223:5:31", + "nodeType": "YulIdentifier", + "src": "223:5:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "234:3:31", + "nodeType": "YulLiteral", + "src": "234:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "239:10:31", + "nodeType": "YulLiteral", + "src": "239:10:31", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "230:3:31", + "nodeType": "YulIdentifier", + "src": "230:3:31" + }, + "nativeSrc": "230:20:31", + "nodeType": "YulFunctionCall", + "src": "230:20:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "219:3:31", + "nodeType": "YulIdentifier", + "src": "219:3:31" + }, + "nativeSrc": "219:32:31", + "nodeType": "YulFunctionCall", + "src": "219:32:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "209:2:31", + "nodeType": "YulIdentifier", + "src": "209:2:31" + }, + "nativeSrc": "209:43:31", + "nodeType": "YulFunctionCall", + "src": "209:43:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "202:6:31", + "nodeType": "YulIdentifier", + "src": "202:6:31" + }, + "nativeSrc": "202:51:31", + "nodeType": "YulFunctionCall", + "src": "202:51:31" + }, + "nativeSrc": "199:71:31", + "nodeType": "YulIf", + "src": "199:71:31" + }, + { + "nativeSrc": "279:15:31", + "nodeType": "YulAssignment", + "src": "279:15:31", + "value": { + "name": "value", + "nativeSrc": "289:5:31", + "nodeType": "YulIdentifier", + "src": "289:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "279:6:31", + "nodeType": "YulIdentifier", + "src": "279:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "14:286:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "49:9:31", + "nodeType": "YulTypedName", + "src": "49:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "60:7:31", + "nodeType": "YulTypedName", + "src": "60:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "72:6:31", + "nodeType": "YulTypedName", + "src": "72:6:31", + "type": "" + } + ], + "src": "14:286:31" + }, + { + "body": { + "nativeSrc": "400:92:31", + "nodeType": "YulBlock", + "src": "400:92:31", + "statements": [ + { + "nativeSrc": "410:26:31", + "nodeType": "YulAssignment", + "src": "410:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "422:9:31", + "nodeType": "YulIdentifier", + "src": "422:9:31" + }, + { + "kind": "number", + "nativeSrc": "433:2:31", + "nodeType": "YulLiteral", + "src": "433:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "418:3:31", + "nodeType": "YulIdentifier", + "src": "418:3:31" + }, + "nativeSrc": "418:18:31", + "nodeType": "YulFunctionCall", + "src": "418:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "410:4:31", + "nodeType": "YulIdentifier", + "src": "410:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "452:9:31", + "nodeType": "YulIdentifier", + "src": "452:9:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "477:6:31", + "nodeType": "YulIdentifier", + "src": "477:6:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "470:6:31", + "nodeType": "YulIdentifier", + "src": "470:6:31" + }, + "nativeSrc": "470:14:31", + "nodeType": "YulFunctionCall", + "src": "470:14:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "463:6:31", + "nodeType": "YulIdentifier", + "src": "463:6:31" + }, + "nativeSrc": "463:22:31", + "nodeType": "YulFunctionCall", + "src": "463:22:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "445:6:31", + "nodeType": "YulIdentifier", + "src": "445:6:31" + }, + "nativeSrc": "445:41:31", + "nodeType": "YulFunctionCall", + "src": "445:41:31" + }, + "nativeSrc": "445:41:31", + "nodeType": "YulExpressionStatement", + "src": "445:41:31" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "305:187:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "369:9:31", + "nodeType": "YulTypedName", + "src": "369:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "380:6:31", + "nodeType": "YulTypedName", + "src": "380:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "391:4:31", + "nodeType": "YulTypedName", + "src": "391:4:31", + "type": "" + } + ], + "src": "305:187:31" + }, + { + "body": { + "nativeSrc": "563:184:31", + "nodeType": "YulBlock", + "src": "563:184:31", + "statements": [ + { + "nativeSrc": "573:10:31", + "nodeType": "YulVariableDeclaration", + "src": "573:10:31", + "value": { + "kind": "number", + "nativeSrc": "582:1:31", + "nodeType": "YulLiteral", + "src": "582:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "577:1:31", + "nodeType": "YulTypedName", + "src": "577:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "642:63:31", + "nodeType": "YulBlock", + "src": "642:63:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "667:3:31", + "nodeType": "YulIdentifier", + "src": "667:3:31" + }, + { + "name": "i", + "nativeSrc": "672:1:31", + "nodeType": "YulIdentifier", + "src": "672:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "663:3:31", + "nodeType": "YulIdentifier", + "src": "663:3:31" + }, + "nativeSrc": "663:11:31", + "nodeType": "YulFunctionCall", + "src": "663:11:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "686:3:31", + "nodeType": "YulIdentifier", + "src": "686:3:31" + }, + { + "name": "i", + "nativeSrc": "691:1:31", + "nodeType": "YulIdentifier", + "src": "691:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "682:3:31", + "nodeType": "YulIdentifier", + "src": "682:3:31" + }, + "nativeSrc": "682:11:31", + "nodeType": "YulFunctionCall", + "src": "682:11:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "676:5:31", + "nodeType": "YulIdentifier", + "src": "676:5:31" + }, + "nativeSrc": "676:18:31", + "nodeType": "YulFunctionCall", + "src": "676:18:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "656:6:31", + "nodeType": "YulIdentifier", + "src": "656:6:31" + }, + "nativeSrc": "656:39:31", + "nodeType": "YulFunctionCall", + "src": "656:39:31" + }, + "nativeSrc": "656:39:31", + "nodeType": "YulExpressionStatement", + "src": "656:39:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "603:1:31", + "nodeType": "YulIdentifier", + "src": "603:1:31" + }, + { + "name": "length", + "nativeSrc": "606:6:31", + "nodeType": "YulIdentifier", + "src": "606:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "600:2:31", + "nodeType": "YulIdentifier", + "src": "600:2:31" + }, + "nativeSrc": "600:13:31", + "nodeType": "YulFunctionCall", + "src": "600:13:31" + }, + "nativeSrc": "592:113:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "614:19:31", + "nodeType": "YulBlock", + "src": "614:19:31", + "statements": [ + { + "nativeSrc": "616:15:31", + "nodeType": "YulAssignment", + "src": "616:15:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "625:1:31", + "nodeType": "YulIdentifier", + "src": "625:1:31" + }, + { + "kind": "number", + "nativeSrc": "628:2:31", + "nodeType": "YulLiteral", + "src": "628:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "621:3:31", + "nodeType": "YulIdentifier", + "src": "621:3:31" + }, + "nativeSrc": "621:10:31", + "nodeType": "YulFunctionCall", + "src": "621:10:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "616:1:31", + "nodeType": "YulIdentifier", + "src": "616:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "596:3:31", + "nodeType": "YulBlock", + "src": "596:3:31", + "statements": [] + }, + "src": "592:113:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "725:3:31", + "nodeType": "YulIdentifier", + "src": "725:3:31" + }, + { + "name": "length", + "nativeSrc": "730:6:31", + "nodeType": "YulIdentifier", + "src": "730:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "721:3:31", + "nodeType": "YulIdentifier", + "src": "721:3:31" + }, + "nativeSrc": "721:16:31", + "nodeType": "YulFunctionCall", + "src": "721:16:31" + }, + { + "kind": "number", + "nativeSrc": "739:1:31", + "nodeType": "YulLiteral", + "src": "739:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "714:6:31", + "nodeType": "YulIdentifier", + "src": "714:6:31" + }, + "nativeSrc": "714:27:31", + "nodeType": "YulFunctionCall", + "src": "714:27:31" + }, + "nativeSrc": "714:27:31", + "nodeType": "YulExpressionStatement", + "src": "714:27:31" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "497:250:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "541:3:31", + "nodeType": "YulTypedName", + "src": "541:3:31", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "546:3:31", + "nodeType": "YulTypedName", + "src": "546:3:31", + "type": "" + }, + { + "name": "length", + "nativeSrc": "551:6:31", + "nodeType": "YulTypedName", + "src": "551:6:31", + "type": "" + } + ], + "src": "497:250:31" + }, + { + "body": { + "nativeSrc": "802:221:31", + "nodeType": "YulBlock", + "src": "802:221:31", + "statements": [ + { + "nativeSrc": "812:26:31", + "nodeType": "YulVariableDeclaration", + "src": "812:26:31", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "832:5:31", + "nodeType": "YulIdentifier", + "src": "832:5:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "826:5:31", + "nodeType": "YulIdentifier", + "src": "826:5:31" + }, + "nativeSrc": "826:12:31", + "nodeType": "YulFunctionCall", + "src": "826:12:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "816:6:31", + "nodeType": "YulTypedName", + "src": "816:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "854:3:31", + "nodeType": "YulIdentifier", + "src": "854:3:31" + }, + { + "name": "length", + "nativeSrc": "859:6:31", + "nodeType": "YulIdentifier", + "src": "859:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "847:6:31", + "nodeType": "YulIdentifier", + "src": "847:6:31" + }, + "nativeSrc": "847:19:31", + "nodeType": "YulFunctionCall", + "src": "847:19:31" + }, + "nativeSrc": "847:19:31", + "nodeType": "YulExpressionStatement", + "src": "847:19:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "914:5:31", + "nodeType": "YulIdentifier", + "src": "914:5:31" + }, + { + "kind": "number", + "nativeSrc": "921:4:31", + "nodeType": "YulLiteral", + "src": "921:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "910:3:31", + "nodeType": "YulIdentifier", + "src": "910:3:31" + }, + "nativeSrc": "910:16:31", + "nodeType": "YulFunctionCall", + "src": "910:16:31" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "932:3:31", + "nodeType": "YulIdentifier", + "src": "932:3:31" + }, + { + "kind": "number", + "nativeSrc": "937:4:31", + "nodeType": "YulLiteral", + "src": "937:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "928:3:31", + "nodeType": "YulIdentifier", + "src": "928:3:31" + }, + "nativeSrc": "928:14:31", + "nodeType": "YulFunctionCall", + "src": "928:14:31" + }, + { + "name": "length", + "nativeSrc": "944:6:31", + "nodeType": "YulIdentifier", + "src": "944:6:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "875:34:31", + "nodeType": "YulIdentifier", + "src": "875:34:31" + }, + "nativeSrc": "875:76:31", + "nodeType": "YulFunctionCall", + "src": "875:76:31" + }, + "nativeSrc": "875:76:31", + "nodeType": "YulExpressionStatement", + "src": "875:76:31" + }, + { + "nativeSrc": "960:57:31", + "nodeType": "YulAssignment", + "src": "960:57:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "975:3:31", + "nodeType": "YulIdentifier", + "src": "975:3:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "988:6:31", + "nodeType": "YulIdentifier", + "src": "988:6:31" + }, + { + "kind": "number", + "nativeSrc": "996:2:31", + "nodeType": "YulLiteral", + "src": "996:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "984:3:31", + "nodeType": "YulIdentifier", + "src": "984:3:31" + }, + "nativeSrc": "984:15:31", + "nodeType": "YulFunctionCall", + "src": "984:15:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1005:2:31", + "nodeType": "YulLiteral", + "src": "1005:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1001:3:31", + "nodeType": "YulIdentifier", + "src": "1001:3:31" + }, + "nativeSrc": "1001:7:31", + "nodeType": "YulFunctionCall", + "src": "1001:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "980:3:31", + "nodeType": "YulIdentifier", + "src": "980:3:31" + }, + "nativeSrc": "980:29:31", + "nodeType": "YulFunctionCall", + "src": "980:29:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "971:3:31", + "nodeType": "YulIdentifier", + "src": "971:3:31" + }, + "nativeSrc": "971:39:31", + "nodeType": "YulFunctionCall", + "src": "971:39:31" + }, + { + "kind": "number", + "nativeSrc": "1012:4:31", + "nodeType": "YulLiteral", + "src": "1012:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "967:3:31", + "nodeType": "YulIdentifier", + "src": "967:3:31" + }, + "nativeSrc": "967:50:31", + "nodeType": "YulFunctionCall", + "src": "967:50:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "960:3:31", + "nodeType": "YulIdentifier", + "src": "960:3:31" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "752:271:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "779:5:31", + "nodeType": "YulTypedName", + "src": "779:5:31", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "786:3:31", + "nodeType": "YulTypedName", + "src": "786:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "794:3:31", + "nodeType": "YulTypedName", + "src": "794:3:31", + "type": "" + } + ], + "src": "752:271:31" + }, + { + "body": { + "nativeSrc": "1088:538:31", + "nodeType": "YulBlock", + "src": "1088:538:31", + "statements": [ + { + "nativeSrc": "1098:16:31", + "nodeType": "YulVariableDeclaration", + "src": "1098:16:31", + "value": { + "name": "pos", + "nativeSrc": "1111:3:31", + "nodeType": "YulIdentifier", + "src": "1111:3:31" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "1102:5:31", + "nodeType": "YulTypedName", + "src": "1102:5:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1123:26:31", + "nodeType": "YulVariableDeclaration", + "src": "1123:26:31", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1143:5:31", + "nodeType": "YulIdentifier", + "src": "1143:5:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1137:5:31", + "nodeType": "YulIdentifier", + "src": "1137:5:31" + }, + "nativeSrc": "1137:12:31", + "nodeType": "YulFunctionCall", + "src": "1137:12:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1127:6:31", + "nodeType": "YulTypedName", + "src": "1127:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1165:3:31", + "nodeType": "YulIdentifier", + "src": "1165:3:31" + }, + { + "name": "length", + "nativeSrc": "1170:6:31", + "nodeType": "YulIdentifier", + "src": "1170:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1158:6:31", + "nodeType": "YulIdentifier", + "src": "1158:6:31" + }, + "nativeSrc": "1158:19:31", + "nodeType": "YulFunctionCall", + "src": "1158:19:31" + }, + "nativeSrc": "1158:19:31", + "nodeType": "YulExpressionStatement", + "src": "1158:19:31" + }, + { + "nativeSrc": "1186:14:31", + "nodeType": "YulVariableDeclaration", + "src": "1186:14:31", + "value": { + "kind": "number", + "nativeSrc": "1196:4:31", + "nodeType": "YulLiteral", + "src": "1196:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1190:2:31", + "nodeType": "YulTypedName", + "src": "1190:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1209:21:31", + "nodeType": "YulAssignment", + "src": "1209:21:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1220:3:31", + "nodeType": "YulIdentifier", + "src": "1220:3:31" + }, + { + "kind": "number", + "nativeSrc": "1225:4:31", + "nodeType": "YulLiteral", + "src": "1225:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1216:3:31", + "nodeType": "YulIdentifier", + "src": "1216:3:31" + }, + "nativeSrc": "1216:14:31", + "nodeType": "YulFunctionCall", + "src": "1216:14:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1209:3:31", + "nodeType": "YulIdentifier", + "src": "1209:3:31" + } + ] + }, + { + "nativeSrc": "1239:49:31", + "nodeType": "YulVariableDeclaration", + "src": "1239:49:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "1259:5:31", + "nodeType": "YulIdentifier", + "src": "1259:5:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1270:1:31", + "nodeType": "YulLiteral", + "src": "1270:1:31", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "1273:6:31", + "nodeType": "YulIdentifier", + "src": "1273:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1266:3:31", + "nodeType": "YulIdentifier", + "src": "1266:3:31" + }, + "nativeSrc": "1266:14:31", + "nodeType": "YulFunctionCall", + "src": "1266:14:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1255:3:31", + "nodeType": "YulIdentifier", + "src": "1255:3:31" + }, + "nativeSrc": "1255:26:31", + "nodeType": "YulFunctionCall", + "src": "1255:26:31" + }, + { + "kind": "number", + "nativeSrc": "1283:4:31", + "nodeType": "YulLiteral", + "src": "1283:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1251:3:31", + "nodeType": "YulIdentifier", + "src": "1251:3:31" + }, + "nativeSrc": "1251:37:31", + "nodeType": "YulFunctionCall", + "src": "1251:37:31" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "1243:4:31", + "nodeType": "YulTypedName", + "src": "1243:4:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1297:30:31", + "nodeType": "YulVariableDeclaration", + "src": "1297:30:31", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1315:5:31", + "nodeType": "YulIdentifier", + "src": "1315:5:31" + }, + { + "kind": "number", + "nativeSrc": "1322:4:31", + "nodeType": "YulLiteral", + "src": "1322:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1311:3:31", + "nodeType": "YulIdentifier", + "src": "1311:3:31" + }, + "nativeSrc": "1311:16:31", + "nodeType": "YulFunctionCall", + "src": "1311:16:31" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "1301:6:31", + "nodeType": "YulTypedName", + "src": "1301:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1336:10:31", + "nodeType": "YulVariableDeclaration", + "src": "1336:10:31", + "value": { + "kind": "number", + "nativeSrc": "1345:1:31", + "nodeType": "YulLiteral", + "src": "1345:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1340:1:31", + "nodeType": "YulTypedName", + "src": "1340:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1404:196:31", + "nodeType": "YulBlock", + "src": "1404:196:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1425:3:31", + "nodeType": "YulIdentifier", + "src": "1425:3:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "1438:4:31", + "nodeType": "YulIdentifier", + "src": "1438:4:31" + }, + { + "name": "pos_1", + "nativeSrc": "1444:5:31", + "nodeType": "YulIdentifier", + "src": "1444:5:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1434:3:31", + "nodeType": "YulIdentifier", + "src": "1434:3:31" + }, + "nativeSrc": "1434:16:31", + "nodeType": "YulFunctionCall", + "src": "1434:16:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1456:2:31", + "nodeType": "YulLiteral", + "src": "1456:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1452:3:31", + "nodeType": "YulIdentifier", + "src": "1452:3:31" + }, + "nativeSrc": "1452:7:31", + "nodeType": "YulFunctionCall", + "src": "1452:7:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1430:3:31", + "nodeType": "YulIdentifier", + "src": "1430:3:31" + }, + "nativeSrc": "1430:30:31", + "nodeType": "YulFunctionCall", + "src": "1430:30:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1418:6:31", + "nodeType": "YulIdentifier", + "src": "1418:6:31" + }, + "nativeSrc": "1418:43:31", + "nodeType": "YulFunctionCall", + "src": "1418:43:31" + }, + "nativeSrc": "1418:43:31", + "nodeType": "YulExpressionStatement", + "src": "1418:43:31" + }, + { + "nativeSrc": "1474:46:31", + "nodeType": "YulAssignment", + "src": "1474:46:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1506:6:31", + "nodeType": "YulIdentifier", + "src": "1506:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1500:5:31", + "nodeType": "YulIdentifier", + "src": "1500:5:31" + }, + "nativeSrc": "1500:13:31", + "nodeType": "YulFunctionCall", + "src": "1500:13:31" + }, + { + "name": "tail", + "nativeSrc": "1515:4:31", + "nodeType": "YulIdentifier", + "src": "1515:4:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "1482:17:31", + "nodeType": "YulIdentifier", + "src": "1482:17:31" + }, + "nativeSrc": "1482:38:31", + "nodeType": "YulFunctionCall", + "src": "1482:38:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1474:4:31", + "nodeType": "YulIdentifier", + "src": "1474:4:31" + } + ] + }, + { + "nativeSrc": "1533:25:31", + "nodeType": "YulAssignment", + "src": "1533:25:31", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1547:6:31", + "nodeType": "YulIdentifier", + "src": "1547:6:31" + }, + { + "name": "_1", + "nativeSrc": "1555:2:31", + "nodeType": "YulIdentifier", + "src": "1555:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1543:3:31", + "nodeType": "YulIdentifier", + "src": "1543:3:31" + }, + "nativeSrc": "1543:15:31", + "nodeType": "YulFunctionCall", + "src": "1543:15:31" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "1533:6:31", + "nodeType": "YulIdentifier", + "src": "1533:6:31" + } + ] + }, + { + "nativeSrc": "1571:19:31", + "nodeType": "YulAssignment", + "src": "1571:19:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1582:3:31", + "nodeType": "YulIdentifier", + "src": "1582:3:31" + }, + { + "name": "_1", + "nativeSrc": "1587:2:31", + "nodeType": "YulIdentifier", + "src": "1587:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1578:3:31", + "nodeType": "YulIdentifier", + "src": "1578:3:31" + }, + "nativeSrc": "1578:12:31", + "nodeType": "YulFunctionCall", + "src": "1578:12:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1571:3:31", + "nodeType": "YulIdentifier", + "src": "1571:3:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1366:1:31", + "nodeType": "YulIdentifier", + "src": "1366:1:31" + }, + { + "name": "length", + "nativeSrc": "1369:6:31", + "nodeType": "YulIdentifier", + "src": "1369:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1363:2:31", + "nodeType": "YulIdentifier", + "src": "1363:2:31" + }, + "nativeSrc": "1363:13:31", + "nodeType": "YulFunctionCall", + "src": "1363:13:31" + }, + "nativeSrc": "1355:245:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1377:18:31", + "nodeType": "YulBlock", + "src": "1377:18:31", + "statements": [ + { + "nativeSrc": "1379:14:31", + "nodeType": "YulAssignment", + "src": "1379:14:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1388:1:31", + "nodeType": "YulIdentifier", + "src": "1388:1:31" + }, + { + "kind": "number", + "nativeSrc": "1391:1:31", + "nodeType": "YulLiteral", + "src": "1391:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1384:3:31", + "nodeType": "YulIdentifier", + "src": "1384:3:31" + }, + "nativeSrc": "1384:9:31", + "nodeType": "YulFunctionCall", + "src": "1384:9:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1379:1:31", + "nodeType": "YulIdentifier", + "src": "1379:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1359:3:31", + "nodeType": "YulBlock", + "src": "1359:3:31", + "statements": [] + }, + "src": "1355:245:31" + }, + { + "nativeSrc": "1609:11:31", + "nodeType": "YulAssignment", + "src": "1609:11:31", + "value": { + "name": "tail", + "nativeSrc": "1616:4:31", + "nodeType": "YulIdentifier", + "src": "1616:4:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1609:3:31", + "nodeType": "YulIdentifier", + "src": "1609:3:31" + } + ] + } + ] + }, + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1028:598:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1065:5:31", + "nodeType": "YulTypedName", + "src": "1065:5:31", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "1072:3:31", + "nodeType": "YulTypedName", + "src": "1072:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1080:3:31", + "nodeType": "YulTypedName", + "src": "1080:3:31", + "type": "" + } + ], + "src": "1028:598:31" + }, + { + "body": { + "nativeSrc": "1802:109:31", + "nodeType": "YulBlock", + "src": "1802:109:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1819:9:31", + "nodeType": "YulIdentifier", + "src": "1819:9:31" + }, + { + "kind": "number", + "nativeSrc": "1830:2:31", + "nodeType": "YulLiteral", + "src": "1830:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1812:6:31", + "nodeType": "YulIdentifier", + "src": "1812:6:31" + }, + "nativeSrc": "1812:21:31", + "nodeType": "YulFunctionCall", + "src": "1812:21:31" + }, + "nativeSrc": "1812:21:31", + "nodeType": "YulExpressionStatement", + "src": "1812:21:31" + }, + { + "nativeSrc": "1842:63:31", + "nodeType": "YulAssignment", + "src": "1842:63:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1878:6:31", + "nodeType": "YulIdentifier", + "src": "1878:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1890:9:31", + "nodeType": "YulIdentifier", + "src": "1890:9:31" + }, + { + "kind": "number", + "nativeSrc": "1901:2:31", + "nodeType": "YulLiteral", + "src": "1901:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1886:3:31", + "nodeType": "YulIdentifier", + "src": "1886:3:31" + }, + "nativeSrc": "1886:18:31", + "nodeType": "YulFunctionCall", + "src": "1886:18:31" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1850:27:31", + "nodeType": "YulIdentifier", + "src": "1850:27:31" + }, + "nativeSrc": "1850:55:31", + "nodeType": "YulFunctionCall", + "src": "1850:55:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1842:4:31", + "nodeType": "YulIdentifier", + "src": "1842:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "1631:280:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1771:9:31", + "nodeType": "YulTypedName", + "src": "1771:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1782:6:31", + "nodeType": "YulTypedName", + "src": "1782:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1793:4:31", + "nodeType": "YulTypedName", + "src": "1793:4:31", + "type": "" + } + ], + "src": "1631:280:31" + }, + { + "body": { + "nativeSrc": "2017:76:31", + "nodeType": "YulBlock", + "src": "2017:76:31", + "statements": [ + { + "nativeSrc": "2027:26:31", + "nodeType": "YulAssignment", + "src": "2027:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2039:9:31", + "nodeType": "YulIdentifier", + "src": "2039:9:31" + }, + { + "kind": "number", + "nativeSrc": "2050:2:31", + "nodeType": "YulLiteral", + "src": "2050:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2035:3:31", + "nodeType": "YulIdentifier", + "src": "2035:3:31" + }, + "nativeSrc": "2035:18:31", + "nodeType": "YulFunctionCall", + "src": "2035:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2027:4:31", + "nodeType": "YulIdentifier", + "src": "2027:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2069:9:31", + "nodeType": "YulIdentifier", + "src": "2069:9:31" + }, + { + "name": "value0", + "nativeSrc": "2080:6:31", + "nodeType": "YulIdentifier", + "src": "2080:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2062:6:31", + "nodeType": "YulIdentifier", + "src": "2062:6:31" + }, + "nativeSrc": "2062:25:31", + "nodeType": "YulFunctionCall", + "src": "2062:25:31" + }, + "nativeSrc": "2062:25:31", + "nodeType": "YulExpressionStatement", + "src": "2062:25:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "1916:177:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1986:9:31", + "nodeType": "YulTypedName", + "src": "1986:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1997:6:31", + "nodeType": "YulTypedName", + "src": "1997:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2008:4:31", + "nodeType": "YulTypedName", + "src": "2008:4:31", + "type": "" + } + ], + "src": "1916:177:31" + }, + { + "body": { + "nativeSrc": "2249:481:31", + "nodeType": "YulBlock", + "src": "2249:481:31", + "statements": [ + { + "nativeSrc": "2259:12:31", + "nodeType": "YulVariableDeclaration", + "src": "2259:12:31", + "value": { + "kind": "number", + "nativeSrc": "2269:2:31", + "nodeType": "YulLiteral", + "src": "2269:2:31", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2263:2:31", + "nodeType": "YulTypedName", + "src": "2263:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "2280:32:31", + "nodeType": "YulVariableDeclaration", + "src": "2280:32:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2298:9:31", + "nodeType": "YulIdentifier", + "src": "2298:9:31" + }, + { + "kind": "number", + "nativeSrc": "2309:2:31", + "nodeType": "YulLiteral", + "src": "2309:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2294:3:31", + "nodeType": "YulIdentifier", + "src": "2294:3:31" + }, + "nativeSrc": "2294:18:31", + "nodeType": "YulFunctionCall", + "src": "2294:18:31" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "2284:6:31", + "nodeType": "YulTypedName", + "src": "2284:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2328:9:31", + "nodeType": "YulIdentifier", + "src": "2328:9:31" + }, + { + "kind": "number", + "nativeSrc": "2339:2:31", + "nodeType": "YulLiteral", + "src": "2339:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2321:6:31", + "nodeType": "YulIdentifier", + "src": "2321:6:31" + }, + "nativeSrc": "2321:21:31", + "nodeType": "YulFunctionCall", + "src": "2321:21:31" + }, + "nativeSrc": "2321:21:31", + "nodeType": "YulExpressionStatement", + "src": "2321:21:31" + }, + { + "nativeSrc": "2351:17:31", + "nodeType": "YulVariableDeclaration", + "src": "2351:17:31", + "value": { + "name": "tail_1", + "nativeSrc": "2362:6:31", + "nodeType": "YulIdentifier", + "src": "2362:6:31" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "2355:3:31", + "nodeType": "YulTypedName", + "src": "2355:3:31", + "type": "" + } + ] + }, + { + "nativeSrc": "2377:27:31", + "nodeType": "YulVariableDeclaration", + "src": "2377:27:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2397:6:31", + "nodeType": "YulIdentifier", + "src": "2397:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2391:5:31", + "nodeType": "YulIdentifier", + "src": "2391:5:31" + }, + "nativeSrc": "2391:13:31", + "nodeType": "YulFunctionCall", + "src": "2391:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "2381:6:31", + "nodeType": "YulTypedName", + "src": "2381:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "2420:6:31", + "nodeType": "YulIdentifier", + "src": "2420:6:31" + }, + { + "name": "length", + "nativeSrc": "2428:6:31", + "nodeType": "YulIdentifier", + "src": "2428:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2413:6:31", + "nodeType": "YulIdentifier", + "src": "2413:6:31" + }, + "nativeSrc": "2413:22:31", + "nodeType": "YulFunctionCall", + "src": "2413:22:31" + }, + "nativeSrc": "2413:22:31", + "nodeType": "YulExpressionStatement", + "src": "2413:22:31" + }, + { + "nativeSrc": "2444:25:31", + "nodeType": "YulAssignment", + "src": "2444:25:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2455:9:31", + "nodeType": "YulIdentifier", + "src": "2455:9:31" + }, + { + "kind": "number", + "nativeSrc": "2466:2:31", + "nodeType": "YulLiteral", + "src": "2466:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2451:3:31", + "nodeType": "YulIdentifier", + "src": "2451:3:31" + }, + "nativeSrc": "2451:18:31", + "nodeType": "YulFunctionCall", + "src": "2451:18:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2444:3:31", + "nodeType": "YulIdentifier", + "src": "2444:3:31" + } + ] + }, + { + "nativeSrc": "2478:29:31", + "nodeType": "YulVariableDeclaration", + "src": "2478:29:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2496:6:31", + "nodeType": "YulIdentifier", + "src": "2496:6:31" + }, + { + "kind": "number", + "nativeSrc": "2504:2:31", + "nodeType": "YulLiteral", + "src": "2504:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2492:3:31", + "nodeType": "YulIdentifier", + "src": "2492:3:31" + }, + "nativeSrc": "2492:15:31", + "nodeType": "YulFunctionCall", + "src": "2492:15:31" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "2482:6:31", + "nodeType": "YulTypedName", + "src": "2482:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "2516:10:31", + "nodeType": "YulVariableDeclaration", + "src": "2516:10:31", + "value": { + "kind": "number", + "nativeSrc": "2525:1:31", + "nodeType": "YulLiteral", + "src": "2525:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2520:1:31", + "nodeType": "YulTypedName", + "src": "2520:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2584:120:31", + "nodeType": "YulBlock", + "src": "2584:120:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2605:3:31", + "nodeType": "YulIdentifier", + "src": "2605:3:31" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2616:6:31", + "nodeType": "YulIdentifier", + "src": "2616:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2610:5:31", + "nodeType": "YulIdentifier", + "src": "2610:5:31" + }, + "nativeSrc": "2610:13:31", + "nodeType": "YulFunctionCall", + "src": "2610:13:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2598:6:31", + "nodeType": "YulIdentifier", + "src": "2598:6:31" + }, + "nativeSrc": "2598:26:31", + "nodeType": "YulFunctionCall", + "src": "2598:26:31" + }, + "nativeSrc": "2598:26:31", + "nodeType": "YulExpressionStatement", + "src": "2598:26:31" + }, + { + "nativeSrc": "2637:19:31", + "nodeType": "YulAssignment", + "src": "2637:19:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2648:3:31", + "nodeType": "YulIdentifier", + "src": "2648:3:31" + }, + { + "name": "_1", + "nativeSrc": "2653:2:31", + "nodeType": "YulIdentifier", + "src": "2653:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2644:3:31", + "nodeType": "YulIdentifier", + "src": "2644:3:31" + }, + "nativeSrc": "2644:12:31", + "nodeType": "YulFunctionCall", + "src": "2644:12:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2637:3:31", + "nodeType": "YulIdentifier", + "src": "2637:3:31" + } + ] + }, + { + "nativeSrc": "2669:25:31", + "nodeType": "YulAssignment", + "src": "2669:25:31", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2683:6:31", + "nodeType": "YulIdentifier", + "src": "2683:6:31" + }, + { + "name": "_1", + "nativeSrc": "2691:2:31", + "nodeType": "YulIdentifier", + "src": "2691:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2679:3:31", + "nodeType": "YulIdentifier", + "src": "2679:3:31" + }, + "nativeSrc": "2679:15:31", + "nodeType": "YulFunctionCall", + "src": "2679:15:31" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "2669:6:31", + "nodeType": "YulIdentifier", + "src": "2669:6:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2546:1:31", + "nodeType": "YulIdentifier", + "src": "2546:1:31" + }, + { + "name": "length", + "nativeSrc": "2549:6:31", + "nodeType": "YulIdentifier", + "src": "2549:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2543:2:31", + "nodeType": "YulIdentifier", + "src": "2543:2:31" + }, + "nativeSrc": "2543:13:31", + "nodeType": "YulFunctionCall", + "src": "2543:13:31" + }, + "nativeSrc": "2535:169:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2557:18:31", + "nodeType": "YulBlock", + "src": "2557:18:31", + "statements": [ + { + "nativeSrc": "2559:14:31", + "nodeType": "YulAssignment", + "src": "2559:14:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2568:1:31", + "nodeType": "YulIdentifier", + "src": "2568:1:31" + }, + { + "kind": "number", + "nativeSrc": "2571:1:31", + "nodeType": "YulLiteral", + "src": "2571:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2564:3:31", + "nodeType": "YulIdentifier", + "src": "2564:3:31" + }, + "nativeSrc": "2564:9:31", + "nodeType": "YulFunctionCall", + "src": "2564:9:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2559:1:31", + "nodeType": "YulIdentifier", + "src": "2559:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2539:3:31", + "nodeType": "YulBlock", + "src": "2539:3:31", + "statements": [] + }, + "src": "2535:169:31" + }, + { + "nativeSrc": "2713:11:31", + "nodeType": "YulAssignment", + "src": "2713:11:31", + "value": { + "name": "pos", + "nativeSrc": "2721:3:31", + "nodeType": "YulIdentifier", + "src": "2721:3:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2713:4:31", + "nodeType": "YulIdentifier", + "src": "2713:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "2098:632:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2218:9:31", + "nodeType": "YulTypedName", + "src": "2218:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2229:6:31", + "nodeType": "YulTypedName", + "src": "2229:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2240:4:31", + "nodeType": "YulTypedName", + "src": "2240:4:31", + "type": "" + } + ], + "src": "2098:632:31" + }, + { + "body": { + "nativeSrc": "2780:86:31", + "nodeType": "YulBlock", + "src": "2780:86:31", + "statements": [ + { + "body": { + "nativeSrc": "2844:16:31", + "nodeType": "YulBlock", + "src": "2844:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2853:1:31", + "nodeType": "YulLiteral", + "src": "2853:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2856:1:31", + "nodeType": "YulLiteral", + "src": "2856:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2846:6:31", + "nodeType": "YulIdentifier", + "src": "2846:6:31" + }, + "nativeSrc": "2846:12:31", + "nodeType": "YulFunctionCall", + "src": "2846:12:31" + }, + "nativeSrc": "2846:12:31", + "nodeType": "YulExpressionStatement", + "src": "2846:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2803:5:31", + "nodeType": "YulIdentifier", + "src": "2803:5:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2814:5:31", + "nodeType": "YulIdentifier", + "src": "2814:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2829:3:31", + "nodeType": "YulLiteral", + "src": "2829:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2834:1:31", + "nodeType": "YulLiteral", + "src": "2834:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2825:3:31", + "nodeType": "YulIdentifier", + "src": "2825:3:31" + }, + "nativeSrc": "2825:11:31", + "nodeType": "YulFunctionCall", + "src": "2825:11:31" + }, + { + "kind": "number", + "nativeSrc": "2838:1:31", + "nodeType": "YulLiteral", + "src": "2838:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2821:3:31", + "nodeType": "YulIdentifier", + "src": "2821:3:31" + }, + "nativeSrc": "2821:19:31", + "nodeType": "YulFunctionCall", + "src": "2821:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2810:3:31", + "nodeType": "YulIdentifier", + "src": "2810:3:31" + }, + "nativeSrc": "2810:31:31", + "nodeType": "YulFunctionCall", + "src": "2810:31:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2800:2:31", + "nodeType": "YulIdentifier", + "src": "2800:2:31" + }, + "nativeSrc": "2800:42:31", + "nodeType": "YulFunctionCall", + "src": "2800:42:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2793:6:31", + "nodeType": "YulIdentifier", + "src": "2793:6:31" + }, + "nativeSrc": "2793:50:31", + "nodeType": "YulFunctionCall", + "src": "2793:50:31" + }, + "nativeSrc": "2790:70:31", + "nodeType": "YulIf", + "src": "2790:70:31" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "2735:131:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2769:5:31", + "nodeType": "YulTypedName", + "src": "2769:5:31", + "type": "" + } + ], + "src": "2735:131:31" + }, + { + "body": { + "nativeSrc": "2903:95:31", + "nodeType": "YulBlock", + "src": "2903:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2920:1:31", + "nodeType": "YulLiteral", + "src": "2920:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2927:3:31", + "nodeType": "YulLiteral", + "src": "2927:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2932:10:31", + "nodeType": "YulLiteral", + "src": "2932:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2923:3:31", + "nodeType": "YulIdentifier", + "src": "2923:3:31" + }, + "nativeSrc": "2923:20:31", + "nodeType": "YulFunctionCall", + "src": "2923:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2913:6:31", + "nodeType": "YulIdentifier", + "src": "2913:6:31" + }, + "nativeSrc": "2913:31:31", + "nodeType": "YulFunctionCall", + "src": "2913:31:31" + }, + "nativeSrc": "2913:31:31", + "nodeType": "YulExpressionStatement", + "src": "2913:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2960:1:31", + "nodeType": "YulLiteral", + "src": "2960:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2963:4:31", + "nodeType": "YulLiteral", + "src": "2963:4:31", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2953:6:31", + "nodeType": "YulIdentifier", + "src": "2953:6:31" + }, + "nativeSrc": "2953:15:31", + "nodeType": "YulFunctionCall", + "src": "2953:15:31" + }, + "nativeSrc": "2953:15:31", + "nodeType": "YulExpressionStatement", + "src": "2953:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2984:1:31", + "nodeType": "YulLiteral", + "src": "2984:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2987:4:31", + "nodeType": "YulLiteral", + "src": "2987:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2977:6:31", + "nodeType": "YulIdentifier", + "src": "2977:6:31" + }, + "nativeSrc": "2977:15:31", + "nodeType": "YulFunctionCall", + "src": "2977:15:31" + }, + "nativeSrc": "2977:15:31", + "nodeType": "YulExpressionStatement", + "src": "2977:15:31" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "2871:127:31", + "nodeType": "YulFunctionDefinition", + "src": "2871:127:31" + }, + { + "body": { + "nativeSrc": "3048:230:31", + "nodeType": "YulBlock", + "src": "3048:230:31", + "statements": [ + { + "nativeSrc": "3058:19:31", + "nodeType": "YulAssignment", + "src": "3058:19:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3074:2:31", + "nodeType": "YulLiteral", + "src": "3074:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3068:5:31", + "nodeType": "YulIdentifier", + "src": "3068:5:31" + }, + "nativeSrc": "3068:9:31", + "nodeType": "YulFunctionCall", + "src": "3068:9:31" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "3058:6:31", + "nodeType": "YulIdentifier", + "src": "3058:6:31" + } + ] + }, + { + "nativeSrc": "3086:58:31", + "nodeType": "YulVariableDeclaration", + "src": "3086:58:31", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "3108:6:31", + "nodeType": "YulIdentifier", + "src": "3108:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nativeSrc": "3124:4:31", + "nodeType": "YulIdentifier", + "src": "3124:4:31" + }, + { + "kind": "number", + "nativeSrc": "3130:2:31", + "nodeType": "YulLiteral", + "src": "3130:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3120:3:31", + "nodeType": "YulIdentifier", + "src": "3120:3:31" + }, + "nativeSrc": "3120:13:31", + "nodeType": "YulFunctionCall", + "src": "3120:13:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3139:2:31", + "nodeType": "YulLiteral", + "src": "3139:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3135:3:31", + "nodeType": "YulIdentifier", + "src": "3135:3:31" + }, + "nativeSrc": "3135:7:31", + "nodeType": "YulFunctionCall", + "src": "3135:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3116:3:31", + "nodeType": "YulIdentifier", + "src": "3116:3:31" + }, + "nativeSrc": "3116:27:31", + "nodeType": "YulFunctionCall", + "src": "3116:27:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3104:3:31", + "nodeType": "YulIdentifier", + "src": "3104:3:31" + }, + "nativeSrc": "3104:40:31", + "nodeType": "YulFunctionCall", + "src": "3104:40:31" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "3090:10:31", + "nodeType": "YulTypedName", + "src": "3090:10:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3219:22:31", + "nodeType": "YulBlock", + "src": "3219:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3221:16:31", + "nodeType": "YulIdentifier", + "src": "3221:16:31" + }, + "nativeSrc": "3221:18:31", + "nodeType": "YulFunctionCall", + "src": "3221:18:31" + }, + "nativeSrc": "3221:18:31", + "nodeType": "YulExpressionStatement", + "src": "3221:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3162:10:31", + "nodeType": "YulIdentifier", + "src": "3162:10:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3182:2:31", + "nodeType": "YulLiteral", + "src": "3182:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3186:1:31", + "nodeType": "YulLiteral", + "src": "3186:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3178:3:31", + "nodeType": "YulIdentifier", + "src": "3178:3:31" + }, + "nativeSrc": "3178:10:31", + "nodeType": "YulFunctionCall", + "src": "3178:10:31" + }, + { + "kind": "number", + "nativeSrc": "3190:1:31", + "nodeType": "YulLiteral", + "src": "3190:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3174:3:31", + "nodeType": "YulIdentifier", + "src": "3174:3:31" + }, + "nativeSrc": "3174:18:31", + "nodeType": "YulFunctionCall", + "src": "3174:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3159:2:31", + "nodeType": "YulIdentifier", + "src": "3159:2:31" + }, + "nativeSrc": "3159:34:31", + "nodeType": "YulFunctionCall", + "src": "3159:34:31" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3198:10:31", + "nodeType": "YulIdentifier", + "src": "3198:10:31" + }, + { + "name": "memPtr", + "nativeSrc": "3210:6:31", + "nodeType": "YulIdentifier", + "src": "3210:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3195:2:31", + "nodeType": "YulIdentifier", + "src": "3195:2:31" + }, + "nativeSrc": "3195:22:31", + "nodeType": "YulFunctionCall", + "src": "3195:22:31" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3156:2:31", + "nodeType": "YulIdentifier", + "src": "3156:2:31" + }, + "nativeSrc": "3156:62:31", + "nodeType": "YulFunctionCall", + "src": "3156:62:31" + }, + "nativeSrc": "3153:88:31", + "nodeType": "YulIf", + "src": "3153:88:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3257:2:31", + "nodeType": "YulLiteral", + "src": "3257:2:31", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "3261:10:31", + "nodeType": "YulIdentifier", + "src": "3261:10:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3250:6:31", + "nodeType": "YulIdentifier", + "src": "3250:6:31" + }, + "nativeSrc": "3250:22:31", + "nodeType": "YulFunctionCall", + "src": "3250:22:31" + }, + "nativeSrc": "3250:22:31", + "nodeType": "YulExpressionStatement", + "src": "3250:22:31" + } + ] + }, + "name": "allocate_memory", + "nativeSrc": "3003:275:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nativeSrc": "3028:4:31", + "nodeType": "YulTypedName", + "src": "3028:4:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "3037:6:31", + "nodeType": "YulTypedName", + "src": "3037:6:31", + "type": "" + } + ], + "src": "3003:275:31" + }, + { + "body": { + "nativeSrc": "3340:129:31", + "nodeType": "YulBlock", + "src": "3340:129:31", + "statements": [ + { + "body": { + "nativeSrc": "3384:22:31", + "nodeType": "YulBlock", + "src": "3384:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3386:16:31", + "nodeType": "YulIdentifier", + "src": "3386:16:31" + }, + "nativeSrc": "3386:18:31", + "nodeType": "YulFunctionCall", + "src": "3386:18:31" + }, + "nativeSrc": "3386:18:31", + "nodeType": "YulExpressionStatement", + "src": "3386:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "3356:6:31", + "nodeType": "YulIdentifier", + "src": "3356:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3372:2:31", + "nodeType": "YulLiteral", + "src": "3372:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3376:1:31", + "nodeType": "YulLiteral", + "src": "3376:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3368:3:31", + "nodeType": "YulIdentifier", + "src": "3368:3:31" + }, + "nativeSrc": "3368:10:31", + "nodeType": "YulFunctionCall", + "src": "3368:10:31" + }, + { + "kind": "number", + "nativeSrc": "3380:1:31", + "nodeType": "YulLiteral", + "src": "3380:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3364:3:31", + "nodeType": "YulIdentifier", + "src": "3364:3:31" + }, + "nativeSrc": "3364:18:31", + "nodeType": "YulFunctionCall", + "src": "3364:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3353:2:31", + "nodeType": "YulIdentifier", + "src": "3353:2:31" + }, + "nativeSrc": "3353:30:31", + "nodeType": "YulFunctionCall", + "src": "3353:30:31" + }, + "nativeSrc": "3350:56:31", + "nodeType": "YulIf", + "src": "3350:56:31" + }, + { + "nativeSrc": "3415:48:31", + "nodeType": "YulAssignment", + "src": "3415:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "3435:6:31", + "nodeType": "YulIdentifier", + "src": "3435:6:31" + }, + { + "kind": "number", + "nativeSrc": "3443:2:31", + "nodeType": "YulLiteral", + "src": "3443:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3431:3:31", + "nodeType": "YulIdentifier", + "src": "3431:3:31" + }, + "nativeSrc": "3431:15:31", + "nodeType": "YulFunctionCall", + "src": "3431:15:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3452:2:31", + "nodeType": "YulLiteral", + "src": "3452:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3448:3:31", + "nodeType": "YulIdentifier", + "src": "3448:3:31" + }, + "nativeSrc": "3448:7:31", + "nodeType": "YulFunctionCall", + "src": "3448:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3427:3:31", + "nodeType": "YulIdentifier", + "src": "3427:3:31" + }, + "nativeSrc": "3427:29:31", + "nodeType": "YulFunctionCall", + "src": "3427:29:31" + }, + { + "kind": "number", + "nativeSrc": "3458:4:31", + "nodeType": "YulLiteral", + "src": "3458:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3423:3:31", + "nodeType": "YulIdentifier", + "src": "3423:3:31" + }, + "nativeSrc": "3423:40:31", + "nodeType": "YulFunctionCall", + "src": "3423:40:31" + }, + "variableNames": [ + { + "name": "size", + "nativeSrc": "3415:4:31", + "nodeType": "YulIdentifier", + "src": "3415:4:31" + } + ] + } + ] + }, + "name": "array_allocation_size_bytes", + "nativeSrc": "3283:186:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nativeSrc": "3320:6:31", + "nodeType": "YulTypedName", + "src": "3320:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nativeSrc": "3331:4:31", + "nodeType": "YulTypedName", + "src": "3331:4:31", + "type": "" + } + ], + "src": "3283:186:31" + }, + { + "body": { + "nativeSrc": "3526:410:31", + "nodeType": "YulBlock", + "src": "3526:410:31", + "statements": [ + { + "body": { + "nativeSrc": "3575:16:31", + "nodeType": "YulBlock", + "src": "3575:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3584:1:31", + "nodeType": "YulLiteral", + "src": "3584:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3587:1:31", + "nodeType": "YulLiteral", + "src": "3587:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3577:6:31", + "nodeType": "YulIdentifier", + "src": "3577:6:31" + }, + "nativeSrc": "3577:12:31", + "nodeType": "YulFunctionCall", + "src": "3577:12:31" + }, + "nativeSrc": "3577:12:31", + "nodeType": "YulExpressionStatement", + "src": "3577:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3554:6:31", + "nodeType": "YulIdentifier", + "src": "3554:6:31" + }, + { + "kind": "number", + "nativeSrc": "3562:4:31", + "nodeType": "YulLiteral", + "src": "3562:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3550:3:31", + "nodeType": "YulIdentifier", + "src": "3550:3:31" + }, + "nativeSrc": "3550:17:31", + "nodeType": "YulFunctionCall", + "src": "3550:17:31" + }, + { + "name": "end", + "nativeSrc": "3569:3:31", + "nodeType": "YulIdentifier", + "src": "3569:3:31" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3546:3:31", + "nodeType": "YulIdentifier", + "src": "3546:3:31" + }, + "nativeSrc": "3546:27:31", + "nodeType": "YulFunctionCall", + "src": "3546:27:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3539:6:31", + "nodeType": "YulIdentifier", + "src": "3539:6:31" + }, + "nativeSrc": "3539:35:31", + "nodeType": "YulFunctionCall", + "src": "3539:35:31" + }, + "nativeSrc": "3536:55:31", + "nodeType": "YulIf", + "src": "3536:55:31" + }, + { + "nativeSrc": "3600:30:31", + "nodeType": "YulVariableDeclaration", + "src": "3600:30:31", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3623:6:31", + "nodeType": "YulIdentifier", + "src": "3623:6:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3610:12:31", + "nodeType": "YulIdentifier", + "src": "3610:12:31" + }, + "nativeSrc": "3610:20:31", + "nodeType": "YulFunctionCall", + "src": "3610:20:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3604:2:31", + "nodeType": "YulTypedName", + "src": "3604:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "3639:63:31", + "nodeType": "YulVariableDeclaration", + "src": "3639:63:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3698:2:31", + "nodeType": "YulIdentifier", + "src": "3698:2:31" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "3670:27:31", + "nodeType": "YulIdentifier", + "src": "3670:27:31" + }, + "nativeSrc": "3670:31:31", + "nodeType": "YulFunctionCall", + "src": "3670:31:31" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "3654:15:31", + "nodeType": "YulIdentifier", + "src": "3654:15:31" + }, + "nativeSrc": "3654:48:31", + "nodeType": "YulFunctionCall", + "src": "3654:48:31" + }, + "variables": [ + { + "name": "array_1", + "nativeSrc": "3643:7:31", + "nodeType": "YulTypedName", + "src": "3643:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3718:7:31", + "nodeType": "YulIdentifier", + "src": "3718:7:31" + }, + { + "name": "_1", + "nativeSrc": "3727:2:31", + "nodeType": "YulIdentifier", + "src": "3727:2:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3711:6:31", + "nodeType": "YulIdentifier", + "src": "3711:6:31" + }, + "nativeSrc": "3711:19:31", + "nodeType": "YulFunctionCall", + "src": "3711:19:31" + }, + "nativeSrc": "3711:19:31", + "nodeType": "YulExpressionStatement", + "src": "3711:19:31" + }, + { + "body": { + "nativeSrc": "3778:16:31", + "nodeType": "YulBlock", + "src": "3778:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3787:1:31", + "nodeType": "YulLiteral", + "src": "3787:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3790:1:31", + "nodeType": "YulLiteral", + "src": "3790:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3780:6:31", + "nodeType": "YulIdentifier", + "src": "3780:6:31" + }, + "nativeSrc": "3780:12:31", + "nodeType": "YulFunctionCall", + "src": "3780:12:31" + }, + "nativeSrc": "3780:12:31", + "nodeType": "YulExpressionStatement", + "src": "3780:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3753:6:31", + "nodeType": "YulIdentifier", + "src": "3753:6:31" + }, + { + "name": "_1", + "nativeSrc": "3761:2:31", + "nodeType": "YulIdentifier", + "src": "3761:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3749:3:31", + "nodeType": "YulIdentifier", + "src": "3749:3:31" + }, + "nativeSrc": "3749:15:31", + "nodeType": "YulFunctionCall", + "src": "3749:15:31" + }, + { + "kind": "number", + "nativeSrc": "3766:4:31", + "nodeType": "YulLiteral", + "src": "3766:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3745:3:31", + "nodeType": "YulIdentifier", + "src": "3745:3:31" + }, + "nativeSrc": "3745:26:31", + "nodeType": "YulFunctionCall", + "src": "3745:26:31" + }, + { + "name": "end", + "nativeSrc": "3773:3:31", + "nodeType": "YulIdentifier", + "src": "3773:3:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3742:2:31", + "nodeType": "YulIdentifier", + "src": "3742:2:31" + }, + "nativeSrc": "3742:35:31", + "nodeType": "YulFunctionCall", + "src": "3742:35:31" + }, + "nativeSrc": "3739:55:31", + "nodeType": "YulIf", + "src": "3739:55:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3820:7:31", + "nodeType": "YulIdentifier", + "src": "3820:7:31" + }, + { + "kind": "number", + "nativeSrc": "3829:4:31", + "nodeType": "YulLiteral", + "src": "3829:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3816:3:31", + "nodeType": "YulIdentifier", + "src": "3816:3:31" + }, + "nativeSrc": "3816:18:31", + "nodeType": "YulFunctionCall", + "src": "3816:18:31" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3840:6:31", + "nodeType": "YulIdentifier", + "src": "3840:6:31" + }, + { + "kind": "number", + "nativeSrc": "3848:4:31", + "nodeType": "YulLiteral", + "src": "3848:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3836:3:31", + "nodeType": "YulIdentifier", + "src": "3836:3:31" + }, + "nativeSrc": "3836:17:31", + "nodeType": "YulFunctionCall", + "src": "3836:17:31" + }, + { + "name": "_1", + "nativeSrc": "3855:2:31", + "nodeType": "YulIdentifier", + "src": "3855:2:31" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3803:12:31", + "nodeType": "YulIdentifier", + "src": "3803:12:31" + }, + "nativeSrc": "3803:55:31", + "nodeType": "YulFunctionCall", + "src": "3803:55:31" + }, + "nativeSrc": "3803:55:31", + "nodeType": "YulExpressionStatement", + "src": "3803:55:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3882:7:31", + "nodeType": "YulIdentifier", + "src": "3882:7:31" + }, + { + "name": "_1", + "nativeSrc": "3891:2:31", + "nodeType": "YulIdentifier", + "src": "3891:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3878:3:31", + "nodeType": "YulIdentifier", + "src": "3878:3:31" + }, + "nativeSrc": "3878:16:31", + "nodeType": "YulFunctionCall", + "src": "3878:16:31" + }, + { + "kind": "number", + "nativeSrc": "3896:4:31", + "nodeType": "YulLiteral", + "src": "3896:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3874:3:31", + "nodeType": "YulIdentifier", + "src": "3874:3:31" + }, + "nativeSrc": "3874:27:31", + "nodeType": "YulFunctionCall", + "src": "3874:27:31" + }, + { + "kind": "number", + "nativeSrc": "3903:1:31", + "nodeType": "YulLiteral", + "src": "3903:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3867:6:31", + "nodeType": "YulIdentifier", + "src": "3867:6:31" + }, + "nativeSrc": "3867:38:31", + "nodeType": "YulFunctionCall", + "src": "3867:38:31" + }, + "nativeSrc": "3867:38:31", + "nodeType": "YulExpressionStatement", + "src": "3867:38:31" + }, + { + "nativeSrc": "3914:16:31", + "nodeType": "YulAssignment", + "src": "3914:16:31", + "value": { + "name": "array_1", + "nativeSrc": "3923:7:31", + "nodeType": "YulIdentifier", + "src": "3923:7:31" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "3914:5:31", + "nodeType": "YulIdentifier", + "src": "3914:5:31" + } + ] + } + ] + }, + "name": "abi_decode_bytes", + "nativeSrc": "3474:462:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "3500:6:31", + "nodeType": "YulTypedName", + "src": "3500:6:31", + "type": "" + }, + { + "name": "end", + "nativeSrc": "3508:3:31", + "nodeType": "YulTypedName", + "src": "3508:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "3516:5:31", + "nodeType": "YulTypedName", + "src": "3516:5:31", + "type": "" + } + ], + "src": "3474:462:31" + }, + { + "body": { + "nativeSrc": "4071:535:31", + "nodeType": "YulBlock", + "src": "4071:535:31", + "statements": [ + { + "body": { + "nativeSrc": "4118:16:31", + "nodeType": "YulBlock", + "src": "4118:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4127:1:31", + "nodeType": "YulLiteral", + "src": "4127:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4130:1:31", + "nodeType": "YulLiteral", + "src": "4130:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4120:6:31", + "nodeType": "YulIdentifier", + "src": "4120:6:31" + }, + "nativeSrc": "4120:12:31", + "nodeType": "YulFunctionCall", + "src": "4120:12:31" + }, + "nativeSrc": "4120:12:31", + "nodeType": "YulExpressionStatement", + "src": "4120:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4092:7:31", + "nodeType": "YulIdentifier", + "src": "4092:7:31" + }, + { + "name": "headStart", + "nativeSrc": "4101:9:31", + "nodeType": "YulIdentifier", + "src": "4101:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4088:3:31", + "nodeType": "YulIdentifier", + "src": "4088:3:31" + }, + "nativeSrc": "4088:23:31", + "nodeType": "YulFunctionCall", + "src": "4088:23:31" + }, + { + "kind": "number", + "nativeSrc": "4113:3:31", + "nodeType": "YulLiteral", + "src": "4113:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4084:3:31", + "nodeType": "YulIdentifier", + "src": "4084:3:31" + }, + "nativeSrc": "4084:33:31", + "nodeType": "YulFunctionCall", + "src": "4084:33:31" + }, + "nativeSrc": "4081:53:31", + "nodeType": "YulIf", + "src": "4081:53:31" + }, + { + "nativeSrc": "4143:36:31", + "nodeType": "YulVariableDeclaration", + "src": "4143:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4169:9:31", + "nodeType": "YulIdentifier", + "src": "4169:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4156:12:31", + "nodeType": "YulIdentifier", + "src": "4156:12:31" + }, + "nativeSrc": "4156:23:31", + "nodeType": "YulFunctionCall", + "src": "4156:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "4147:5:31", + "nodeType": "YulTypedName", + "src": "4147:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4213:5:31", + "nodeType": "YulIdentifier", + "src": "4213:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4188:24:31", + "nodeType": "YulIdentifier", + "src": "4188:24:31" + }, + "nativeSrc": "4188:31:31", + "nodeType": "YulFunctionCall", + "src": "4188:31:31" + }, + "nativeSrc": "4188:31:31", + "nodeType": "YulExpressionStatement", + "src": "4188:31:31" + }, + { + "nativeSrc": "4228:15:31", + "nodeType": "YulAssignment", + "src": "4228:15:31", + "value": { + "name": "value", + "nativeSrc": "4238:5:31", + "nodeType": "YulIdentifier", + "src": "4238:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4228:6:31", + "nodeType": "YulIdentifier", + "src": "4228:6:31" + } + ] + }, + { + "nativeSrc": "4252:47:31", + "nodeType": "YulVariableDeclaration", + "src": "4252:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4284:9:31", + "nodeType": "YulIdentifier", + "src": "4284:9:31" + }, + { + "kind": "number", + "nativeSrc": "4295:2:31", + "nodeType": "YulLiteral", + "src": "4295:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4280:3:31", + "nodeType": "YulIdentifier", + "src": "4280:3:31" + }, + "nativeSrc": "4280:18:31", + "nodeType": "YulFunctionCall", + "src": "4280:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4267:12:31", + "nodeType": "YulIdentifier", + "src": "4267:12:31" + }, + "nativeSrc": "4267:32:31", + "nodeType": "YulFunctionCall", + "src": "4267:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "4256:7:31", + "nodeType": "YulTypedName", + "src": "4256:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "4333:7:31", + "nodeType": "YulIdentifier", + "src": "4333:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4308:24:31", + "nodeType": "YulIdentifier", + "src": "4308:24:31" + }, + "nativeSrc": "4308:33:31", + "nodeType": "YulFunctionCall", + "src": "4308:33:31" + }, + "nativeSrc": "4308:33:31", + "nodeType": "YulExpressionStatement", + "src": "4308:33:31" + }, + { + "nativeSrc": "4350:17:31", + "nodeType": "YulAssignment", + "src": "4350:17:31", + "value": { + "name": "value_1", + "nativeSrc": "4360:7:31", + "nodeType": "YulIdentifier", + "src": "4360:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4350:6:31", + "nodeType": "YulIdentifier", + "src": "4350:6:31" + } + ] + }, + { + "nativeSrc": "4376:42:31", + "nodeType": "YulAssignment", + "src": "4376:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4403:9:31", + "nodeType": "YulIdentifier", + "src": "4403:9:31" + }, + { + "kind": "number", + "nativeSrc": "4414:2:31", + "nodeType": "YulLiteral", + "src": "4414:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4399:3:31", + "nodeType": "YulIdentifier", + "src": "4399:3:31" + }, + "nativeSrc": "4399:18:31", + "nodeType": "YulFunctionCall", + "src": "4399:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4386:12:31", + "nodeType": "YulIdentifier", + "src": "4386:12:31" + }, + "nativeSrc": "4386:32:31", + "nodeType": "YulFunctionCall", + "src": "4386:32:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4376:6:31", + "nodeType": "YulIdentifier", + "src": "4376:6:31" + } + ] + }, + { + "nativeSrc": "4427:46:31", + "nodeType": "YulVariableDeclaration", + "src": "4427:46:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4458:9:31", + "nodeType": "YulIdentifier", + "src": "4458:9:31" + }, + { + "kind": "number", + "nativeSrc": "4469:2:31", + "nodeType": "YulLiteral", + "src": "4469:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4454:3:31", + "nodeType": "YulIdentifier", + "src": "4454:3:31" + }, + "nativeSrc": "4454:18:31", + "nodeType": "YulFunctionCall", + "src": "4454:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4441:12:31", + "nodeType": "YulIdentifier", + "src": "4441:12:31" + }, + "nativeSrc": "4441:32:31", + "nodeType": "YulFunctionCall", + "src": "4441:32:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4431:6:31", + "nodeType": "YulTypedName", + "src": "4431:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4516:16:31", + "nodeType": "YulBlock", + "src": "4516:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4525:1:31", + "nodeType": "YulLiteral", + "src": "4525:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4528:1:31", + "nodeType": "YulLiteral", + "src": "4528:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4518:6:31", + "nodeType": "YulIdentifier", + "src": "4518:6:31" + }, + "nativeSrc": "4518:12:31", + "nodeType": "YulFunctionCall", + "src": "4518:12:31" + }, + "nativeSrc": "4518:12:31", + "nodeType": "YulExpressionStatement", + "src": "4518:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4488:6:31", + "nodeType": "YulIdentifier", + "src": "4488:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4504:2:31", + "nodeType": "YulLiteral", + "src": "4504:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4508:1:31", + "nodeType": "YulLiteral", + "src": "4508:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4500:3:31", + "nodeType": "YulIdentifier", + "src": "4500:3:31" + }, + "nativeSrc": "4500:10:31", + "nodeType": "YulFunctionCall", + "src": "4500:10:31" + }, + { + "kind": "number", + "nativeSrc": "4512:1:31", + "nodeType": "YulLiteral", + "src": "4512:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4496:3:31", + "nodeType": "YulIdentifier", + "src": "4496:3:31" + }, + "nativeSrc": "4496:18:31", + "nodeType": "YulFunctionCall", + "src": "4496:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4485:2:31", + "nodeType": "YulIdentifier", + "src": "4485:2:31" + }, + "nativeSrc": "4485:30:31", + "nodeType": "YulFunctionCall", + "src": "4485:30:31" + }, + "nativeSrc": "4482:50:31", + "nodeType": "YulIf", + "src": "4482:50:31" + }, + { + "nativeSrc": "4541:59:31", + "nodeType": "YulAssignment", + "src": "4541:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4572:9:31", + "nodeType": "YulIdentifier", + "src": "4572:9:31" + }, + { + "name": "offset", + "nativeSrc": "4583:6:31", + "nodeType": "YulIdentifier", + "src": "4583:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4568:3:31", + "nodeType": "YulIdentifier", + "src": "4568:3:31" + }, + "nativeSrc": "4568:22:31", + "nodeType": "YulFunctionCall", + "src": "4568:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "4592:7:31", + "nodeType": "YulIdentifier", + "src": "4592:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "4551:16:31", + "nodeType": "YulIdentifier", + "src": "4551:16:31" + }, + "nativeSrc": "4551:49:31", + "nodeType": "YulFunctionCall", + "src": "4551:49:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "4541:6:31", + "nodeType": "YulIdentifier", + "src": "4541:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nativeSrc": "3941:665:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4013:9:31", + "nodeType": "YulTypedName", + "src": "4013:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4024:7:31", + "nodeType": "YulTypedName", + "src": "4024:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4036:6:31", + "nodeType": "YulTypedName", + "src": "4036:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4044:6:31", + "nodeType": "YulTypedName", + "src": "4044:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4052:6:31", + "nodeType": "YulTypedName", + "src": "4052:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "4060:6:31", + "nodeType": "YulTypedName", + "src": "4060:6:31", + "type": "" + } + ], + "src": "3941:665:31" + }, + { + "body": { + "nativeSrc": "4710:103:31", + "nodeType": "YulBlock", + "src": "4710:103:31", + "statements": [ + { + "nativeSrc": "4720:26:31", + "nodeType": "YulAssignment", + "src": "4720:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4732:9:31", + "nodeType": "YulIdentifier", + "src": "4732:9:31" + }, + { + "kind": "number", + "nativeSrc": "4743:2:31", + "nodeType": "YulLiteral", + "src": "4743:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4728:3:31", + "nodeType": "YulIdentifier", + "src": "4728:3:31" + }, + "nativeSrc": "4728:18:31", + "nodeType": "YulFunctionCall", + "src": "4728:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4720:4:31", + "nodeType": "YulIdentifier", + "src": "4720:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4762:9:31", + "nodeType": "YulIdentifier", + "src": "4762:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4777:6:31", + "nodeType": "YulIdentifier", + "src": "4777:6:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4789:3:31", + "nodeType": "YulLiteral", + "src": "4789:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "4794:10:31", + "nodeType": "YulLiteral", + "src": "4794:10:31", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4785:3:31", + "nodeType": "YulIdentifier", + "src": "4785:3:31" + }, + "nativeSrc": "4785:20:31", + "nodeType": "YulFunctionCall", + "src": "4785:20:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4773:3:31", + "nodeType": "YulIdentifier", + "src": "4773:3:31" + }, + "nativeSrc": "4773:33:31", + "nodeType": "YulFunctionCall", + "src": "4773:33:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4755:6:31", + "nodeType": "YulIdentifier", + "src": "4755:6:31" + }, + "nativeSrc": "4755:52:31", + "nodeType": "YulFunctionCall", + "src": "4755:52:31" + }, + "nativeSrc": "4755:52:31", + "nodeType": "YulExpressionStatement", + "src": "4755:52:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", + "nativeSrc": "4611:202:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4679:9:31", + "nodeType": "YulTypedName", + "src": "4679:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4690:6:31", + "nodeType": "YulTypedName", + "src": "4690:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4701:4:31", + "nodeType": "YulTypedName", + "src": "4701:4:31", + "type": "" + } + ], + "src": "4611:202:31" + }, + { + "body": { + "nativeSrc": "4898:241:31", + "nodeType": "YulBlock", + "src": "4898:241:31", + "statements": [ + { + "body": { + "nativeSrc": "4944:16:31", + "nodeType": "YulBlock", + "src": "4944:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4953:1:31", + "nodeType": "YulLiteral", + "src": "4953:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4956:1:31", + "nodeType": "YulLiteral", + "src": "4956:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4946:6:31", + "nodeType": "YulIdentifier", + "src": "4946:6:31" + }, + "nativeSrc": "4946:12:31", + "nodeType": "YulFunctionCall", + "src": "4946:12:31" + }, + "nativeSrc": "4946:12:31", + "nodeType": "YulExpressionStatement", + "src": "4946:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4919:7:31", + "nodeType": "YulIdentifier", + "src": "4919:7:31" + }, + { + "name": "headStart", + "nativeSrc": "4928:9:31", + "nodeType": "YulIdentifier", + "src": "4928:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4915:3:31", + "nodeType": "YulIdentifier", + "src": "4915:3:31" + }, + "nativeSrc": "4915:23:31", + "nodeType": "YulFunctionCall", + "src": "4915:23:31" + }, + { + "kind": "number", + "nativeSrc": "4940:2:31", + "nodeType": "YulLiteral", + "src": "4940:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4911:3:31", + "nodeType": "YulIdentifier", + "src": "4911:3:31" + }, + "nativeSrc": "4911:32:31", + "nodeType": "YulFunctionCall", + "src": "4911:32:31" + }, + "nativeSrc": "4908:52:31", + "nodeType": "YulIf", + "src": "4908:52:31" + }, + { + "nativeSrc": "4969:37:31", + "nodeType": "YulVariableDeclaration", + "src": "4969:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4996:9:31", + "nodeType": "YulIdentifier", + "src": "4996:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4983:12:31", + "nodeType": "YulIdentifier", + "src": "4983:12:31" + }, + "nativeSrc": "4983:23:31", + "nodeType": "YulFunctionCall", + "src": "4983:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4973:6:31", + "nodeType": "YulTypedName", + "src": "4973:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5049:16:31", + "nodeType": "YulBlock", + "src": "5049:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5058:1:31", + "nodeType": "YulLiteral", + "src": "5058:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5061:1:31", + "nodeType": "YulLiteral", + "src": "5061:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5051:6:31", + "nodeType": "YulIdentifier", + "src": "5051:6:31" + }, + "nativeSrc": "5051:12:31", + "nodeType": "YulFunctionCall", + "src": "5051:12:31" + }, + "nativeSrc": "5051:12:31", + "nodeType": "YulExpressionStatement", + "src": "5051:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5021:6:31", + "nodeType": "YulIdentifier", + "src": "5021:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5037:2:31", + "nodeType": "YulLiteral", + "src": "5037:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5041:1:31", + "nodeType": "YulLiteral", + "src": "5041:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5033:3:31", + "nodeType": "YulIdentifier", + "src": "5033:3:31" + }, + "nativeSrc": "5033:10:31", + "nodeType": "YulFunctionCall", + "src": "5033:10:31" + }, + { + "kind": "number", + "nativeSrc": "5045:1:31", + "nodeType": "YulLiteral", + "src": "5045:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5029:3:31", + "nodeType": "YulIdentifier", + "src": "5029:3:31" + }, + "nativeSrc": "5029:18:31", + "nodeType": "YulFunctionCall", + "src": "5029:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5018:2:31", + "nodeType": "YulIdentifier", + "src": "5018:2:31" + }, + "nativeSrc": "5018:30:31", + "nodeType": "YulFunctionCall", + "src": "5018:30:31" + }, + "nativeSrc": "5015:50:31", + "nodeType": "YulIf", + "src": "5015:50:31" + }, + { + "nativeSrc": "5074:59:31", + "nodeType": "YulAssignment", + "src": "5074:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5105:9:31", + "nodeType": "YulIdentifier", + "src": "5105:9:31" + }, + { + "name": "offset", + "nativeSrc": "5116:6:31", + "nodeType": "YulIdentifier", + "src": "5116:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5101:3:31", + "nodeType": "YulIdentifier", + "src": "5101:3:31" + }, + "nativeSrc": "5101:22:31", + "nodeType": "YulFunctionCall", + "src": "5101:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "5125:7:31", + "nodeType": "YulIdentifier", + "src": "5125:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "5084:16:31", + "nodeType": "YulIdentifier", + "src": "5084:16:31" + }, + "nativeSrc": "5084:49:31", + "nodeType": "YulFunctionCall", + "src": "5084:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5074:6:31", + "nodeType": "YulIdentifier", + "src": "5074:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "4818:321:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4864:9:31", + "nodeType": "YulTypedName", + "src": "4864:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4875:7:31", + "nodeType": "YulTypedName", + "src": "4875:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4887:6:31", + "nodeType": "YulTypedName", + "src": "4887:6:31", + "type": "" + } + ], + "src": "4818:321:31" + }, + { + "body": { + "nativeSrc": "5245:76:31", + "nodeType": "YulBlock", + "src": "5245:76:31", + "statements": [ + { + "nativeSrc": "5255:26:31", + "nodeType": "YulAssignment", + "src": "5255:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5267:9:31", + "nodeType": "YulIdentifier", + "src": "5267:9:31" + }, + { + "kind": "number", + "nativeSrc": "5278:2:31", + "nodeType": "YulLiteral", + "src": "5278:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5263:3:31", + "nodeType": "YulIdentifier", + "src": "5263:3:31" + }, + "nativeSrc": "5263:18:31", + "nodeType": "YulFunctionCall", + "src": "5263:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5255:4:31", + "nodeType": "YulIdentifier", + "src": "5255:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5297:9:31", + "nodeType": "YulIdentifier", + "src": "5297:9:31" + }, + { + "name": "value0", + "nativeSrc": "5308:6:31", + "nodeType": "YulIdentifier", + "src": "5308:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5290:6:31", + "nodeType": "YulIdentifier", + "src": "5290:6:31" + }, + "nativeSrc": "5290:25:31", + "nodeType": "YulFunctionCall", + "src": "5290:25:31" + }, + "nativeSrc": "5290:25:31", + "nodeType": "YulExpressionStatement", + "src": "5290:25:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5144:177:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5214:9:31", + "nodeType": "YulTypedName", + "src": "5214:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5225:6:31", + "nodeType": "YulTypedName", + "src": "5225:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5236:4:31", + "nodeType": "YulTypedName", + "src": "5236:4:31", + "type": "" + } + ], + "src": "5144:177:31" + }, + { + "body": { + "nativeSrc": "5446:352:31", + "nodeType": "YulBlock", + "src": "5446:352:31", + "statements": [ + { + "body": { + "nativeSrc": "5492:16:31", + "nodeType": "YulBlock", + "src": "5492:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5501:1:31", + "nodeType": "YulLiteral", + "src": "5501:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5504:1:31", + "nodeType": "YulLiteral", + "src": "5504:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5494:6:31", + "nodeType": "YulIdentifier", + "src": "5494:6:31" + }, + "nativeSrc": "5494:12:31", + "nodeType": "YulFunctionCall", + "src": "5494:12:31" + }, + "nativeSrc": "5494:12:31", + "nodeType": "YulExpressionStatement", + "src": "5494:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5467:7:31", + "nodeType": "YulIdentifier", + "src": "5467:7:31" + }, + { + "name": "headStart", + "nativeSrc": "5476:9:31", + "nodeType": "YulIdentifier", + "src": "5476:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5463:3:31", + "nodeType": "YulIdentifier", + "src": "5463:3:31" + }, + "nativeSrc": "5463:23:31", + "nodeType": "YulFunctionCall", + "src": "5463:23:31" + }, + { + "kind": "number", + "nativeSrc": "5488:2:31", + "nodeType": "YulLiteral", + "src": "5488:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5459:3:31", + "nodeType": "YulIdentifier", + "src": "5459:3:31" + }, + "nativeSrc": "5459:32:31", + "nodeType": "YulFunctionCall", + "src": "5459:32:31" + }, + "nativeSrc": "5456:52:31", + "nodeType": "YulIf", + "src": "5456:52:31" + }, + { + "nativeSrc": "5517:36:31", + "nodeType": "YulVariableDeclaration", + "src": "5517:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5543:9:31", + "nodeType": "YulIdentifier", + "src": "5543:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5530:12:31", + "nodeType": "YulIdentifier", + "src": "5530:12:31" + }, + "nativeSrc": "5530:23:31", + "nodeType": "YulFunctionCall", + "src": "5530:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5521:5:31", + "nodeType": "YulTypedName", + "src": "5521:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5587:5:31", + "nodeType": "YulIdentifier", + "src": "5587:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5562:24:31", + "nodeType": "YulIdentifier", + "src": "5562:24:31" + }, + "nativeSrc": "5562:31:31", + "nodeType": "YulFunctionCall", + "src": "5562:31:31" + }, + "nativeSrc": "5562:31:31", + "nodeType": "YulExpressionStatement", + "src": "5562:31:31" + }, + { + "nativeSrc": "5602:15:31", + "nodeType": "YulAssignment", + "src": "5602:15:31", + "value": { + "name": "value", + "nativeSrc": "5612:5:31", + "nodeType": "YulIdentifier", + "src": "5612:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5602:6:31", + "nodeType": "YulIdentifier", + "src": "5602:6:31" + } + ] + }, + { + "nativeSrc": "5626:47:31", + "nodeType": "YulVariableDeclaration", + "src": "5626:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5658:9:31", + "nodeType": "YulIdentifier", + "src": "5658:9:31" + }, + { + "kind": "number", + "nativeSrc": "5669:2:31", + "nodeType": "YulLiteral", + "src": "5669:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5654:3:31", + "nodeType": "YulIdentifier", + "src": "5654:3:31" + }, + "nativeSrc": "5654:18:31", + "nodeType": "YulFunctionCall", + "src": "5654:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5641:12:31", + "nodeType": "YulIdentifier", + "src": "5641:12:31" + }, + "nativeSrc": "5641:32:31", + "nodeType": "YulFunctionCall", + "src": "5641:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "5630:7:31", + "nodeType": "YulTypedName", + "src": "5630:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "5707:7:31", + "nodeType": "YulIdentifier", + "src": "5707:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5682:24:31", + "nodeType": "YulIdentifier", + "src": "5682:24:31" + }, + "nativeSrc": "5682:33:31", + "nodeType": "YulFunctionCall", + "src": "5682:33:31" + }, + "nativeSrc": "5682:33:31", + "nodeType": "YulExpressionStatement", + "src": "5682:33:31" + }, + { + "nativeSrc": "5724:17:31", + "nodeType": "YulAssignment", + "src": "5724:17:31", + "value": { + "name": "value_1", + "nativeSrc": "5734:7:31", + "nodeType": "YulIdentifier", + "src": "5734:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5724:6:31", + "nodeType": "YulIdentifier", + "src": "5724:6:31" + } + ] + }, + { + "nativeSrc": "5750:42:31", + "nodeType": "YulAssignment", + "src": "5750:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5777:9:31", + "nodeType": "YulIdentifier", + "src": "5777:9:31" + }, + { + "kind": "number", + "nativeSrc": "5788:2:31", + "nodeType": "YulLiteral", + "src": "5788:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5773:3:31", + "nodeType": "YulIdentifier", + "src": "5773:3:31" + }, + "nativeSrc": "5773:18:31", + "nodeType": "YulFunctionCall", + "src": "5773:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5760:12:31", + "nodeType": "YulIdentifier", + "src": "5760:12:31" + }, + "nativeSrc": "5760:32:31", + "nodeType": "YulFunctionCall", + "src": "5760:32:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5750:6:31", + "nodeType": "YulIdentifier", + "src": "5750:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC721_$2241t_addresst_uint256", + "nativeSrc": "5326:472:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5396:9:31", + "nodeType": "YulTypedName", + "src": "5396:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5407:7:31", + "nodeType": "YulTypedName", + "src": "5407:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5419:6:31", + "nodeType": "YulTypedName", + "src": "5419:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5427:6:31", + "nodeType": "YulTypedName", + "src": "5427:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5435:6:31", + "nodeType": "YulTypedName", + "src": "5435:6:31", + "type": "" + } + ], + "src": "5326:472:31" + }, + { + "body": { + "nativeSrc": "5866:879:31", + "nodeType": "YulBlock", + "src": "5866:879:31", + "statements": [ + { + "body": { + "nativeSrc": "5915:16:31", + "nodeType": "YulBlock", + "src": "5915:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5924:1:31", + "nodeType": "YulLiteral", + "src": "5924:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5927:1:31", + "nodeType": "YulLiteral", + "src": "5927:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5917:6:31", + "nodeType": "YulIdentifier", + "src": "5917:6:31" + }, + "nativeSrc": "5917:12:31", + "nodeType": "YulFunctionCall", + "src": "5917:12:31" + }, + "nativeSrc": "5917:12:31", + "nodeType": "YulExpressionStatement", + "src": "5917:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5894:6:31", + "nodeType": "YulIdentifier", + "src": "5894:6:31" + }, + { + "kind": "number", + "nativeSrc": "5902:4:31", + "nodeType": "YulLiteral", + "src": "5902:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5890:3:31", + "nodeType": "YulIdentifier", + "src": "5890:3:31" + }, + "nativeSrc": "5890:17:31", + "nodeType": "YulFunctionCall", + "src": "5890:17:31" + }, + { + "name": "end", + "nativeSrc": "5909:3:31", + "nodeType": "YulIdentifier", + "src": "5909:3:31" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5886:3:31", + "nodeType": "YulIdentifier", + "src": "5886:3:31" + }, + "nativeSrc": "5886:27:31", + "nodeType": "YulFunctionCall", + "src": "5886:27:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5879:6:31", + "nodeType": "YulIdentifier", + "src": "5879:6:31" + }, + "nativeSrc": "5879:35:31", + "nodeType": "YulFunctionCall", + "src": "5879:35:31" + }, + "nativeSrc": "5876:55:31", + "nodeType": "YulIf", + "src": "5876:55:31" + }, + { + "nativeSrc": "5940:30:31", + "nodeType": "YulVariableDeclaration", + "src": "5940:30:31", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5963:6:31", + "nodeType": "YulIdentifier", + "src": "5963:6:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5950:12:31", + "nodeType": "YulIdentifier", + "src": "5950:12:31" + }, + "nativeSrc": "5950:20:31", + "nodeType": "YulFunctionCall", + "src": "5950:20:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "5944:2:31", + "nodeType": "YulTypedName", + "src": "5944:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "5979:14:31", + "nodeType": "YulVariableDeclaration", + "src": "5979:14:31", + "value": { + "kind": "number", + "nativeSrc": "5989:4:31", + "nodeType": "YulLiteral", + "src": "5989:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "5983:2:31", + "nodeType": "YulTypedName", + "src": "5983:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "6002:28:31", + "nodeType": "YulVariableDeclaration", + "src": "6002:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6020:2:31", + "nodeType": "YulLiteral", + "src": "6020:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6024:1:31", + "nodeType": "YulLiteral", + "src": "6024:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6016:3:31", + "nodeType": "YulIdentifier", + "src": "6016:3:31" + }, + "nativeSrc": "6016:10:31", + "nodeType": "YulFunctionCall", + "src": "6016:10:31" + }, + { + "kind": "number", + "nativeSrc": "6028:1:31", + "nodeType": "YulLiteral", + "src": "6028:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6012:3:31", + "nodeType": "YulIdentifier", + "src": "6012:3:31" + }, + "nativeSrc": "6012:18:31", + "nodeType": "YulFunctionCall", + "src": "6012:18:31" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "6006:2:31", + "nodeType": "YulTypedName", + "src": "6006:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6053:22:31", + "nodeType": "YulBlock", + "src": "6053:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "6055:16:31", + "nodeType": "YulIdentifier", + "src": "6055:16:31" + }, + "nativeSrc": "6055:18:31", + "nodeType": "YulFunctionCall", + "src": "6055:18:31" + }, + "nativeSrc": "6055:18:31", + "nodeType": "YulExpressionStatement", + "src": "6055:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6045:2:31", + "nodeType": "YulIdentifier", + "src": "6045:2:31" + }, + { + "name": "_3", + "nativeSrc": "6049:2:31", + "nodeType": "YulIdentifier", + "src": "6049:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6042:2:31", + "nodeType": "YulIdentifier", + "src": "6042:2:31" + }, + "nativeSrc": "6042:10:31", + "nodeType": "YulFunctionCall", + "src": "6042:10:31" + }, + "nativeSrc": "6039:36:31", + "nodeType": "YulIf", + "src": "6039:36:31" + }, + { + "nativeSrc": "6084:20:31", + "nodeType": "YulVariableDeclaration", + "src": "6084:20:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6098:1:31", + "nodeType": "YulLiteral", + "src": "6098:1:31", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nativeSrc": "6101:2:31", + "nodeType": "YulIdentifier", + "src": "6101:2:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6094:3:31", + "nodeType": "YulIdentifier", + "src": "6094:3:31" + }, + "nativeSrc": "6094:10:31", + "nodeType": "YulFunctionCall", + "src": "6094:10:31" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "6088:2:31", + "nodeType": "YulTypedName", + "src": "6088:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "6113:39:31", + "nodeType": "YulVariableDeclaration", + "src": "6113:39:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_4", + "nativeSrc": "6144:2:31", + "nodeType": "YulIdentifier", + "src": "6144:2:31" + }, + { + "name": "_2", + "nativeSrc": "6148:2:31", + "nodeType": "YulIdentifier", + "src": "6148:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6140:3:31", + "nodeType": "YulIdentifier", + "src": "6140:3:31" + }, + "nativeSrc": "6140:11:31", + "nodeType": "YulFunctionCall", + "src": "6140:11:31" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "6124:15:31", + "nodeType": "YulIdentifier", + "src": "6124:15:31" + }, + "nativeSrc": "6124:28:31", + "nodeType": "YulFunctionCall", + "src": "6124:28:31" + }, + "variables": [ + { + "name": "dst", + "nativeSrc": "6117:3:31", + "nodeType": "YulTypedName", + "src": "6117:3:31", + "type": "" + } + ] + }, + { + "nativeSrc": "6161:16:31", + "nodeType": "YulVariableDeclaration", + "src": "6161:16:31", + "value": { + "name": "dst", + "nativeSrc": "6174:3:31", + "nodeType": "YulIdentifier", + "src": "6174:3:31" + }, + "variables": [ + { + "name": "dst_1", + "nativeSrc": "6165:5:31", + "nodeType": "YulTypedName", + "src": "6165:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6193:3:31", + "nodeType": "YulIdentifier", + "src": "6193:3:31" + }, + { + "name": "_1", + "nativeSrc": "6198:2:31", + "nodeType": "YulIdentifier", + "src": "6198:2:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6186:6:31", + "nodeType": "YulIdentifier", + "src": "6186:6:31" + }, + "nativeSrc": "6186:15:31", + "nodeType": "YulFunctionCall", + "src": "6186:15:31" + }, + "nativeSrc": "6186:15:31", + "nodeType": "YulExpressionStatement", + "src": "6186:15:31" + }, + { + "nativeSrc": "6210:19:31", + "nodeType": "YulAssignment", + "src": "6210:19:31", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6221:3:31", + "nodeType": "YulIdentifier", + "src": "6221:3:31" + }, + { + "name": "_2", + "nativeSrc": "6226:2:31", + "nodeType": "YulIdentifier", + "src": "6226:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6217:3:31", + "nodeType": "YulIdentifier", + "src": "6217:3:31" + }, + "nativeSrc": "6217:12:31", + "nodeType": "YulFunctionCall", + "src": "6217:12:31" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6210:3:31", + "nodeType": "YulIdentifier", + "src": "6210:3:31" + } + ] + }, + { + "nativeSrc": "6238:38:31", + "nodeType": "YulVariableDeclaration", + "src": "6238:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6260:6:31", + "nodeType": "YulIdentifier", + "src": "6260:6:31" + }, + { + "name": "_4", + "nativeSrc": "6268:2:31", + "nodeType": "YulIdentifier", + "src": "6268:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6256:3:31", + "nodeType": "YulIdentifier", + "src": "6256:3:31" + }, + "nativeSrc": "6256:15:31", + "nodeType": "YulFunctionCall", + "src": "6256:15:31" + }, + { + "name": "_2", + "nativeSrc": "6273:2:31", + "nodeType": "YulIdentifier", + "src": "6273:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6252:3:31", + "nodeType": "YulIdentifier", + "src": "6252:3:31" + }, + "nativeSrc": "6252:24:31", + "nodeType": "YulFunctionCall", + "src": "6252:24:31" + }, + "variables": [ + { + "name": "srcEnd", + "nativeSrc": "6242:6:31", + "nodeType": "YulTypedName", + "src": "6242:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6304:16:31", + "nodeType": "YulBlock", + "src": "6304:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6313:1:31", + "nodeType": "YulLiteral", + "src": "6313:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6316:1:31", + "nodeType": "YulLiteral", + "src": "6316:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6306:6:31", + "nodeType": "YulIdentifier", + "src": "6306:6:31" + }, + "nativeSrc": "6306:12:31", + "nodeType": "YulFunctionCall", + "src": "6306:12:31" + }, + "nativeSrc": "6306:12:31", + "nodeType": "YulExpressionStatement", + "src": "6306:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nativeSrc": "6291:6:31", + "nodeType": "YulIdentifier", + "src": "6291:6:31" + }, + { + "name": "end", + "nativeSrc": "6299:3:31", + "nodeType": "YulIdentifier", + "src": "6299:3:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6288:2:31", + "nodeType": "YulIdentifier", + "src": "6288:2:31" + }, + "nativeSrc": "6288:15:31", + "nodeType": "YulFunctionCall", + "src": "6288:15:31" + }, + "nativeSrc": "6285:35:31", + "nodeType": "YulIf", + "src": "6285:35:31" + }, + { + "nativeSrc": "6329:26:31", + "nodeType": "YulVariableDeclaration", + "src": "6329:26:31", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6344:6:31", + "nodeType": "YulIdentifier", + "src": "6344:6:31" + }, + { + "name": "_2", + "nativeSrc": "6352:2:31", + "nodeType": "YulIdentifier", + "src": "6352:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6340:3:31", + "nodeType": "YulIdentifier", + "src": "6340:3:31" + }, + "nativeSrc": "6340:15:31", + "nodeType": "YulFunctionCall", + "src": "6340:15:31" + }, + "variables": [ + { + "name": "src", + "nativeSrc": "6333:3:31", + "nodeType": "YulTypedName", + "src": "6333:3:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6420:296:31", + "nodeType": "YulBlock", + "src": "6420:296:31", + "statements": [ + { + "nativeSrc": "6434:36:31", + "nodeType": "YulVariableDeclaration", + "src": "6434:36:31", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6466:3:31", + "nodeType": "YulIdentifier", + "src": "6466:3:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6453:12:31", + "nodeType": "YulIdentifier", + "src": "6453:12:31" + }, + "nativeSrc": "6453:17:31", + "nodeType": "YulFunctionCall", + "src": "6453:17:31" + }, + "variables": [ + { + "name": "innerOffset", + "nativeSrc": "6438:11:31", + "nodeType": "YulTypedName", + "src": "6438:11:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6518:74:31", + "nodeType": "YulBlock", + "src": "6518:74:31", + "statements": [ + { + "nativeSrc": "6536:11:31", + "nodeType": "YulVariableDeclaration", + "src": "6536:11:31", + "value": { + "kind": "number", + "nativeSrc": "6546:1:31", + "nodeType": "YulLiteral", + "src": "6546:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nativeSrc": "6540:2:31", + "nodeType": "YulTypedName", + "src": "6540:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nativeSrc": "6571:2:31", + "nodeType": "YulIdentifier", + "src": "6571:2:31" + }, + { + "name": "_5", + "nativeSrc": "6575:2:31", + "nodeType": "YulIdentifier", + "src": "6575:2:31" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6564:6:31", + "nodeType": "YulIdentifier", + "src": "6564:6:31" + }, + "nativeSrc": "6564:14:31", + "nodeType": "YulFunctionCall", + "src": "6564:14:31" + }, + "nativeSrc": "6564:14:31", + "nodeType": "YulExpressionStatement", + "src": "6564:14:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nativeSrc": "6489:11:31", + "nodeType": "YulIdentifier", + "src": "6489:11:31" + }, + { + "name": "_3", + "nativeSrc": "6502:2:31", + "nodeType": "YulIdentifier", + "src": "6502:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6486:2:31", + "nodeType": "YulIdentifier", + "src": "6486:2:31" + }, + "nativeSrc": "6486:19:31", + "nodeType": "YulFunctionCall", + "src": "6486:19:31" + }, + "nativeSrc": "6483:109:31", + "nodeType": "YulIf", + "src": "6483:109:31" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6612:3:31", + "nodeType": "YulIdentifier", + "src": "6612:3:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6642:6:31", + "nodeType": "YulIdentifier", + "src": "6642:6:31" + }, + { + "name": "innerOffset", + "nativeSrc": "6650:11:31", + "nodeType": "YulIdentifier", + "src": "6650:11:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6638:3:31", + "nodeType": "YulIdentifier", + "src": "6638:3:31" + }, + "nativeSrc": "6638:24:31", + "nodeType": "YulFunctionCall", + "src": "6638:24:31" + }, + { + "name": "_2", + "nativeSrc": "6664:2:31", + "nodeType": "YulIdentifier", + "src": "6664:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6634:3:31", + "nodeType": "YulIdentifier", + "src": "6634:3:31" + }, + "nativeSrc": "6634:33:31", + "nodeType": "YulFunctionCall", + "src": "6634:33:31" + }, + { + "name": "end", + "nativeSrc": "6669:3:31", + "nodeType": "YulIdentifier", + "src": "6669:3:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "6617:16:31", + "nodeType": "YulIdentifier", + "src": "6617:16:31" + }, + "nativeSrc": "6617:56:31", + "nodeType": "YulFunctionCall", + "src": "6617:56:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6605:6:31", + "nodeType": "YulIdentifier", + "src": "6605:6:31" + }, + "nativeSrc": "6605:69:31", + "nodeType": "YulFunctionCall", + "src": "6605:69:31" + }, + "nativeSrc": "6605:69:31", + "nodeType": "YulExpressionStatement", + "src": "6605:69:31" + }, + { + "nativeSrc": "6687:19:31", + "nodeType": "YulAssignment", + "src": "6687:19:31", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6698:3:31", + "nodeType": "YulIdentifier", + "src": "6698:3:31" + }, + { + "name": "_2", + "nativeSrc": "6703:2:31", + "nodeType": "YulIdentifier", + "src": "6703:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6694:3:31", + "nodeType": "YulIdentifier", + "src": "6694:3:31" + }, + "nativeSrc": "6694:12:31", + "nodeType": "YulFunctionCall", + "src": "6694:12:31" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6687:3:31", + "nodeType": "YulIdentifier", + "src": "6687:3:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6375:3:31", + "nodeType": "YulIdentifier", + "src": "6375:3:31" + }, + { + "name": "srcEnd", + "nativeSrc": "6380:6:31", + "nodeType": "YulIdentifier", + "src": "6380:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6372:2:31", + "nodeType": "YulIdentifier", + "src": "6372:2:31" + }, + "nativeSrc": "6372:15:31", + "nodeType": "YulFunctionCall", + "src": "6372:15:31" + }, + "nativeSrc": "6364:352:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6388:23:31", + "nodeType": "YulBlock", + "src": "6388:23:31", + "statements": [ + { + "nativeSrc": "6390:19:31", + "nodeType": "YulAssignment", + "src": "6390:19:31", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6401:3:31", + "nodeType": "YulIdentifier", + "src": "6401:3:31" + }, + { + "name": "_2", + "nativeSrc": "6406:2:31", + "nodeType": "YulIdentifier", + "src": "6406:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6397:3:31", + "nodeType": "YulIdentifier", + "src": "6397:3:31" + }, + "nativeSrc": "6397:12:31", + "nodeType": "YulFunctionCall", + "src": "6397:12:31" + }, + "variableNames": [ + { + "name": "src", + "nativeSrc": "6390:3:31", + "nodeType": "YulIdentifier", + "src": "6390:3:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6368:3:31", + "nodeType": "YulBlock", + "src": "6368:3:31", + "statements": [] + }, + "src": "6364:352:31" + }, + { + "nativeSrc": "6725:14:31", + "nodeType": "YulAssignment", + "src": "6725:14:31", + "value": { + "name": "dst_1", + "nativeSrc": "6734:5:31", + "nodeType": "YulIdentifier", + "src": "6734:5:31" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "6725:5:31", + "nodeType": "YulIdentifier", + "src": "6725:5:31" + } + ] + } + ] + }, + "name": "abi_decode_array_string_dyn", + "nativeSrc": "5803:942:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "5840:6:31", + "nodeType": "YulTypedName", + "src": "5840:6:31", + "type": "" + }, + { + "name": "end", + "nativeSrc": "5848:3:31", + "nodeType": "YulTypedName", + "src": "5848:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "5856:5:31", + "nodeType": "YulTypedName", + "src": "5856:5:31", + "type": "" + } + ], + "src": "5803:942:31" + }, + { + "body": { + "nativeSrc": "6855:252:31", + "nodeType": "YulBlock", + "src": "6855:252:31", + "statements": [ + { + "body": { + "nativeSrc": "6901:16:31", + "nodeType": "YulBlock", + "src": "6901:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6910:1:31", + "nodeType": "YulLiteral", + "src": "6910:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6913:1:31", + "nodeType": "YulLiteral", + "src": "6913:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6903:6:31", + "nodeType": "YulIdentifier", + "src": "6903:6:31" + }, + "nativeSrc": "6903:12:31", + "nodeType": "YulFunctionCall", + "src": "6903:12:31" + }, + "nativeSrc": "6903:12:31", + "nodeType": "YulExpressionStatement", + "src": "6903:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6876:7:31", + "nodeType": "YulIdentifier", + "src": "6876:7:31" + }, + { + "name": "headStart", + "nativeSrc": "6885:9:31", + "nodeType": "YulIdentifier", + "src": "6885:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6872:3:31", + "nodeType": "YulIdentifier", + "src": "6872:3:31" + }, + "nativeSrc": "6872:23:31", + "nodeType": "YulFunctionCall", + "src": "6872:23:31" + }, + { + "kind": "number", + "nativeSrc": "6897:2:31", + "nodeType": "YulLiteral", + "src": "6897:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6868:3:31", + "nodeType": "YulIdentifier", + "src": "6868:3:31" + }, + "nativeSrc": "6868:32:31", + "nodeType": "YulFunctionCall", + "src": "6868:32:31" + }, + "nativeSrc": "6865:52:31", + "nodeType": "YulIf", + "src": "6865:52:31" + }, + { + "nativeSrc": "6926:37:31", + "nodeType": "YulVariableDeclaration", + "src": "6926:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6953:9:31", + "nodeType": "YulIdentifier", + "src": "6953:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6940:12:31", + "nodeType": "YulIdentifier", + "src": "6940:12:31" + }, + "nativeSrc": "6940:23:31", + "nodeType": "YulFunctionCall", + "src": "6940:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6930:6:31", + "nodeType": "YulTypedName", + "src": "6930:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7006:16:31", + "nodeType": "YulBlock", + "src": "7006:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7015:1:31", + "nodeType": "YulLiteral", + "src": "7015:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7018:1:31", + "nodeType": "YulLiteral", + "src": "7018:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7008:6:31", + "nodeType": "YulIdentifier", + "src": "7008:6:31" + }, + "nativeSrc": "7008:12:31", + "nodeType": "YulFunctionCall", + "src": "7008:12:31" + }, + "nativeSrc": "7008:12:31", + "nodeType": "YulExpressionStatement", + "src": "7008:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6978:6:31", + "nodeType": "YulIdentifier", + "src": "6978:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6994:2:31", + "nodeType": "YulLiteral", + "src": "6994:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6998:1:31", + "nodeType": "YulLiteral", + "src": "6998:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6990:3:31", + "nodeType": "YulIdentifier", + "src": "6990:3:31" + }, + "nativeSrc": "6990:10:31", + "nodeType": "YulFunctionCall", + "src": "6990:10:31" + }, + { + "kind": "number", + "nativeSrc": "7002:1:31", + "nodeType": "YulLiteral", + "src": "7002:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6986:3:31", + "nodeType": "YulIdentifier", + "src": "6986:3:31" + }, + "nativeSrc": "6986:18:31", + "nodeType": "YulFunctionCall", + "src": "6986:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6975:2:31", + "nodeType": "YulIdentifier", + "src": "6975:2:31" + }, + "nativeSrc": "6975:30:31", + "nodeType": "YulFunctionCall", + "src": "6975:30:31" + }, + "nativeSrc": "6972:50:31", + "nodeType": "YulIf", + "src": "6972:50:31" + }, + { + "nativeSrc": "7031:70:31", + "nodeType": "YulAssignment", + "src": "7031:70:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7073:9:31", + "nodeType": "YulIdentifier", + "src": "7073:9:31" + }, + { + "name": "offset", + "nativeSrc": "7084:6:31", + "nodeType": "YulIdentifier", + "src": "7084:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7069:3:31", + "nodeType": "YulIdentifier", + "src": "7069:3:31" + }, + "nativeSrc": "7069:22:31", + "nodeType": "YulFunctionCall", + "src": "7069:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "7093:7:31", + "nodeType": "YulIdentifier", + "src": "7093:7:31" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "7041:27:31", + "nodeType": "YulIdentifier", + "src": "7041:27:31" + }, + "nativeSrc": "7041:60:31", + "nodeType": "YulFunctionCall", + "src": "7041:60:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7031:6:31", + "nodeType": "YulIdentifier", + "src": "7031:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "6750:357:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6821:9:31", + "nodeType": "YulTypedName", + "src": "6821:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6832:7:31", + "nodeType": "YulTypedName", + "src": "6832:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6844:6:31", + "nodeType": "YulTypedName", + "src": "6844:6:31", + "type": "" + } + ], + "src": "6750:357:31" + }, + { + "body": { + "nativeSrc": "7310:816:31", + "nodeType": "YulBlock", + "src": "7310:816:31", + "statements": [ + { + "body": { + "nativeSrc": "7357:16:31", + "nodeType": "YulBlock", + "src": "7357:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7366:1:31", + "nodeType": "YulLiteral", + "src": "7366:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7369:1:31", + "nodeType": "YulLiteral", + "src": "7369:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7359:6:31", + "nodeType": "YulIdentifier", + "src": "7359:6:31" + }, + "nativeSrc": "7359:12:31", + "nodeType": "YulFunctionCall", + "src": "7359:12:31" + }, + "nativeSrc": "7359:12:31", + "nodeType": "YulExpressionStatement", + "src": "7359:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7331:7:31", + "nodeType": "YulIdentifier", + "src": "7331:7:31" + }, + { + "name": "headStart", + "nativeSrc": "7340:9:31", + "nodeType": "YulIdentifier", + "src": "7340:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7327:3:31", + "nodeType": "YulIdentifier", + "src": "7327:3:31" + }, + "nativeSrc": "7327:23:31", + "nodeType": "YulFunctionCall", + "src": "7327:23:31" + }, + { + "kind": "number", + "nativeSrc": "7352:3:31", + "nodeType": "YulLiteral", + "src": "7352:3:31", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7323:3:31", + "nodeType": "YulIdentifier", + "src": "7323:3:31" + }, + "nativeSrc": "7323:33:31", + "nodeType": "YulFunctionCall", + "src": "7323:33:31" + }, + "nativeSrc": "7320:53:31", + "nodeType": "YulIf", + "src": "7320:53:31" + }, + { + "nativeSrc": "7382:36:31", + "nodeType": "YulVariableDeclaration", + "src": "7382:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7408:9:31", + "nodeType": "YulIdentifier", + "src": "7408:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7395:12:31", + "nodeType": "YulIdentifier", + "src": "7395:12:31" + }, + "nativeSrc": "7395:23:31", + "nodeType": "YulFunctionCall", + "src": "7395:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "7386:5:31", + "nodeType": "YulTypedName", + "src": "7386:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7452:5:31", + "nodeType": "YulIdentifier", + "src": "7452:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7427:24:31", + "nodeType": "YulIdentifier", + "src": "7427:24:31" + }, + "nativeSrc": "7427:31:31", + "nodeType": "YulFunctionCall", + "src": "7427:31:31" + }, + "nativeSrc": "7427:31:31", + "nodeType": "YulExpressionStatement", + "src": "7427:31:31" + }, + { + "nativeSrc": "7467:15:31", + "nodeType": "YulAssignment", + "src": "7467:15:31", + "value": { + "name": "value", + "nativeSrc": "7477:5:31", + "nodeType": "YulIdentifier", + "src": "7477:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7467:6:31", + "nodeType": "YulIdentifier", + "src": "7467:6:31" + } + ] + }, + { + "nativeSrc": "7491:47:31", + "nodeType": "YulVariableDeclaration", + "src": "7491:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7523:9:31", + "nodeType": "YulIdentifier", + "src": "7523:9:31" + }, + { + "kind": "number", + "nativeSrc": "7534:2:31", + "nodeType": "YulLiteral", + "src": "7534:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7519:3:31", + "nodeType": "YulIdentifier", + "src": "7519:3:31" + }, + "nativeSrc": "7519:18:31", + "nodeType": "YulFunctionCall", + "src": "7519:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7506:12:31", + "nodeType": "YulIdentifier", + "src": "7506:12:31" + }, + "nativeSrc": "7506:32:31", + "nodeType": "YulFunctionCall", + "src": "7506:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "7495:7:31", + "nodeType": "YulTypedName", + "src": "7495:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "7572:7:31", + "nodeType": "YulIdentifier", + "src": "7572:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7547:24:31", + "nodeType": "YulIdentifier", + "src": "7547:24:31" + }, + "nativeSrc": "7547:33:31", + "nodeType": "YulFunctionCall", + "src": "7547:33:31" + }, + "nativeSrc": "7547:33:31", + "nodeType": "YulExpressionStatement", + "src": "7547:33:31" + }, + { + "nativeSrc": "7589:17:31", + "nodeType": "YulAssignment", + "src": "7589:17:31", + "value": { + "name": "value_1", + "nativeSrc": "7599:7:31", + "nodeType": "YulIdentifier", + "src": "7599:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7589:6:31", + "nodeType": "YulIdentifier", + "src": "7589:6:31" + } + ] + }, + { + "nativeSrc": "7615:47:31", + "nodeType": "YulVariableDeclaration", + "src": "7615:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7647:9:31", + "nodeType": "YulIdentifier", + "src": "7647:9:31" + }, + { + "kind": "number", + "nativeSrc": "7658:2:31", + "nodeType": "YulLiteral", + "src": "7658:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7643:3:31", + "nodeType": "YulIdentifier", + "src": "7643:3:31" + }, + "nativeSrc": "7643:18:31", + "nodeType": "YulFunctionCall", + "src": "7643:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7630:12:31", + "nodeType": "YulIdentifier", + "src": "7630:12:31" + }, + "nativeSrc": "7630:32:31", + "nodeType": "YulFunctionCall", + "src": "7630:32:31" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "7619:7:31", + "nodeType": "YulTypedName", + "src": "7619:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "7696:7:31", + "nodeType": "YulIdentifier", + "src": "7696:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7671:24:31", + "nodeType": "YulIdentifier", + "src": "7671:24:31" + }, + "nativeSrc": "7671:33:31", + "nodeType": "YulFunctionCall", + "src": "7671:33:31" + }, + "nativeSrc": "7671:33:31", + "nodeType": "YulExpressionStatement", + "src": "7671:33:31" + }, + { + "nativeSrc": "7713:17:31", + "nodeType": "YulAssignment", + "src": "7713:17:31", + "value": { + "name": "value_2", + "nativeSrc": "7723:7:31", + "nodeType": "YulIdentifier", + "src": "7723:7:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7713:6:31", + "nodeType": "YulIdentifier", + "src": "7713:6:31" + } + ] + }, + { + "nativeSrc": "7739:42:31", + "nodeType": "YulAssignment", + "src": "7739:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7766:9:31", + "nodeType": "YulIdentifier", + "src": "7766:9:31" + }, + { + "kind": "number", + "nativeSrc": "7777:2:31", + "nodeType": "YulLiteral", + "src": "7777:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7762:3:31", + "nodeType": "YulIdentifier", + "src": "7762:3:31" + }, + "nativeSrc": "7762:18:31", + "nodeType": "YulFunctionCall", + "src": "7762:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7749:12:31", + "nodeType": "YulIdentifier", + "src": "7749:12:31" + }, + "nativeSrc": "7749:32:31", + "nodeType": "YulFunctionCall", + "src": "7749:32:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "7739:6:31", + "nodeType": "YulIdentifier", + "src": "7739:6:31" + } + ] + }, + { + "nativeSrc": "7790:43:31", + "nodeType": "YulAssignment", + "src": "7790:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7817:9:31", + "nodeType": "YulIdentifier", + "src": "7817:9:31" + }, + { + "kind": "number", + "nativeSrc": "7828:3:31", + "nodeType": "YulLiteral", + "src": "7828:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7813:3:31", + "nodeType": "YulIdentifier", + "src": "7813:3:31" + }, + "nativeSrc": "7813:19:31", + "nodeType": "YulFunctionCall", + "src": "7813:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7800:12:31", + "nodeType": "YulIdentifier", + "src": "7800:12:31" + }, + "nativeSrc": "7800:33:31", + "nodeType": "YulFunctionCall", + "src": "7800:33:31" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "7790:6:31", + "nodeType": "YulIdentifier", + "src": "7790:6:31" + } + ] + }, + { + "nativeSrc": "7842:43:31", + "nodeType": "YulAssignment", + "src": "7842:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7869:9:31", + "nodeType": "YulIdentifier", + "src": "7869:9:31" + }, + { + "kind": "number", + "nativeSrc": "7880:3:31", + "nodeType": "YulLiteral", + "src": "7880:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7865:3:31", + "nodeType": "YulIdentifier", + "src": "7865:3:31" + }, + "nativeSrc": "7865:19:31", + "nodeType": "YulFunctionCall", + "src": "7865:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7852:12:31", + "nodeType": "YulIdentifier", + "src": "7852:12:31" + }, + "nativeSrc": "7852:33:31", + "nodeType": "YulFunctionCall", + "src": "7852:33:31" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "7842:6:31", + "nodeType": "YulIdentifier", + "src": "7842:6:31" + } + ] + }, + { + "nativeSrc": "7894:43:31", + "nodeType": "YulAssignment", + "src": "7894:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7921:9:31", + "nodeType": "YulIdentifier", + "src": "7921:9:31" + }, + { + "kind": "number", + "nativeSrc": "7932:3:31", + "nodeType": "YulLiteral", + "src": "7932:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7917:3:31", + "nodeType": "YulIdentifier", + "src": "7917:3:31" + }, + "nativeSrc": "7917:19:31", + "nodeType": "YulFunctionCall", + "src": "7917:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7904:12:31", + "nodeType": "YulIdentifier", + "src": "7904:12:31" + }, + "nativeSrc": "7904:33:31", + "nodeType": "YulFunctionCall", + "src": "7904:33:31" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "7894:6:31", + "nodeType": "YulIdentifier", + "src": "7894:6:31" + } + ] + }, + { + "nativeSrc": "7946:47:31", + "nodeType": "YulVariableDeclaration", + "src": "7946:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7977:9:31", + "nodeType": "YulIdentifier", + "src": "7977:9:31" + }, + { + "kind": "number", + "nativeSrc": "7988:3:31", + "nodeType": "YulLiteral", + "src": "7988:3:31", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7973:3:31", + "nodeType": "YulIdentifier", + "src": "7973:3:31" + }, + "nativeSrc": "7973:19:31", + "nodeType": "YulFunctionCall", + "src": "7973:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7960:12:31", + "nodeType": "YulIdentifier", + "src": "7960:12:31" + }, + "nativeSrc": "7960:33:31", + "nodeType": "YulFunctionCall", + "src": "7960:33:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7950:6:31", + "nodeType": "YulTypedName", + "src": "7950:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8036:16:31", + "nodeType": "YulBlock", + "src": "8036:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8045:1:31", + "nodeType": "YulLiteral", + "src": "8045:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8048:1:31", + "nodeType": "YulLiteral", + "src": "8048:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8038:6:31", + "nodeType": "YulIdentifier", + "src": "8038:6:31" + }, + "nativeSrc": "8038:12:31", + "nodeType": "YulFunctionCall", + "src": "8038:12:31" + }, + "nativeSrc": "8038:12:31", + "nodeType": "YulExpressionStatement", + "src": "8038:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8008:6:31", + "nodeType": "YulIdentifier", + "src": "8008:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8024:2:31", + "nodeType": "YulLiteral", + "src": "8024:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "8028:1:31", + "nodeType": "YulLiteral", + "src": "8028:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8020:3:31", + "nodeType": "YulIdentifier", + "src": "8020:3:31" + }, + "nativeSrc": "8020:10:31", + "nodeType": "YulFunctionCall", + "src": "8020:10:31" + }, + { + "kind": "number", + "nativeSrc": "8032:1:31", + "nodeType": "YulLiteral", + "src": "8032:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8016:3:31", + "nodeType": "YulIdentifier", + "src": "8016:3:31" + }, + "nativeSrc": "8016:18:31", + "nodeType": "YulFunctionCall", + "src": "8016:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8005:2:31", + "nodeType": "YulIdentifier", + "src": "8005:2:31" + }, + "nativeSrc": "8005:30:31", + "nodeType": "YulFunctionCall", + "src": "8005:30:31" + }, + "nativeSrc": "8002:50:31", + "nodeType": "YulIf", + "src": "8002:50:31" + }, + { + "nativeSrc": "8061:59:31", + "nodeType": "YulAssignment", + "src": "8061:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8092:9:31", + "nodeType": "YulIdentifier", + "src": "8092:9:31" + }, + { + "name": "offset", + "nativeSrc": "8103:6:31", + "nodeType": "YulIdentifier", + "src": "8103:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8088:3:31", + "nodeType": "YulIdentifier", + "src": "8088:3:31" + }, + "nativeSrc": "8088:22:31", + "nodeType": "YulFunctionCall", + "src": "8088:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "8112:7:31", + "nodeType": "YulIdentifier", + "src": "8112:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "8071:16:31", + "nodeType": "YulIdentifier", + "src": "8071:16:31" + }, + "nativeSrc": "8071:49:31", + "nodeType": "YulFunctionCall", + "src": "8071:49:31" + }, + "variableNames": [ + { + "name": "value7", + "nativeSrc": "8061:6:31", + "nodeType": "YulIdentifier", + "src": "8061:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr", + "nativeSrc": "7112:1014:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7220:9:31", + "nodeType": "YulTypedName", + "src": "7220:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7231:7:31", + "nodeType": "YulTypedName", + "src": "7231:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7243:6:31", + "nodeType": "YulTypedName", + "src": "7243:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7251:6:31", + "nodeType": "YulTypedName", + "src": "7251:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7259:6:31", + "nodeType": "YulTypedName", + "src": "7259:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7267:6:31", + "nodeType": "YulTypedName", + "src": "7267:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "7275:6:31", + "nodeType": "YulTypedName", + "src": "7275:6:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "7283:6:31", + "nodeType": "YulTypedName", + "src": "7283:6:31", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "7291:6:31", + "nodeType": "YulTypedName", + "src": "7291:6:31", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "7299:6:31", + "nodeType": "YulTypedName", + "src": "7299:6:31", + "type": "" + } + ], + "src": "7112:1014:31" + }, + { + "body": { + "nativeSrc": "8260:145:31", + "nodeType": "YulBlock", + "src": "8260:145:31", + "statements": [ + { + "nativeSrc": "8270:26:31", + "nodeType": "YulAssignment", + "src": "8270:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8282:9:31", + "nodeType": "YulIdentifier", + "src": "8282:9:31" + }, + { + "kind": "number", + "nativeSrc": "8293:2:31", + "nodeType": "YulLiteral", + "src": "8293:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8278:3:31", + "nodeType": "YulIdentifier", + "src": "8278:3:31" + }, + "nativeSrc": "8278:18:31", + "nodeType": "YulFunctionCall", + "src": "8278:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8270:4:31", + "nodeType": "YulIdentifier", + "src": "8270:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8312:9:31", + "nodeType": "YulIdentifier", + "src": "8312:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8327:6:31", + "nodeType": "YulIdentifier", + "src": "8327:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8343:3:31", + "nodeType": "YulLiteral", + "src": "8343:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "8348:1:31", + "nodeType": "YulLiteral", + "src": "8348:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8339:3:31", + "nodeType": "YulIdentifier", + "src": "8339:3:31" + }, + "nativeSrc": "8339:11:31", + "nodeType": "YulFunctionCall", + "src": "8339:11:31" + }, + { + "kind": "number", + "nativeSrc": "8352:1:31", + "nodeType": "YulLiteral", + "src": "8352:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8335:3:31", + "nodeType": "YulIdentifier", + "src": "8335:3:31" + }, + "nativeSrc": "8335:19:31", + "nodeType": "YulFunctionCall", + "src": "8335:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8323:3:31", + "nodeType": "YulIdentifier", + "src": "8323:3:31" + }, + "nativeSrc": "8323:32:31", + "nodeType": "YulFunctionCall", + "src": "8323:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8305:6:31", + "nodeType": "YulIdentifier", + "src": "8305:6:31" + }, + "nativeSrc": "8305:51:31", + "nodeType": "YulFunctionCall", + "src": "8305:51:31" + }, + "nativeSrc": "8305:51:31", + "nodeType": "YulExpressionStatement", + "src": "8305:51:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8376:9:31", + "nodeType": "YulIdentifier", + "src": "8376:9:31" + }, + { + "kind": "number", + "nativeSrc": "8387:2:31", + "nodeType": "YulLiteral", + "src": "8387:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8372:3:31", + "nodeType": "YulIdentifier", + "src": "8372:3:31" + }, + "nativeSrc": "8372:18:31", + "nodeType": "YulFunctionCall", + "src": "8372:18:31" + }, + { + "name": "value1", + "nativeSrc": "8392:6:31", + "nodeType": "YulIdentifier", + "src": "8392:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8365:6:31", + "nodeType": "YulIdentifier", + "src": "8365:6:31" + }, + "nativeSrc": "8365:34:31", + "nodeType": "YulFunctionCall", + "src": "8365:34:31" + }, + "nativeSrc": "8365:34:31", + "nodeType": "YulExpressionStatement", + "src": "8365:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "8131:274:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8221:9:31", + "nodeType": "YulTypedName", + "src": "8221:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8232:6:31", + "nodeType": "YulTypedName", + "src": "8232:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8240:6:31", + "nodeType": "YulTypedName", + "src": "8240:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8251:4:31", + "nodeType": "YulTypedName", + "src": "8251:4:31", + "type": "" + } + ], + "src": "8131:274:31" + }, + { + "body": { + "nativeSrc": "8480:110:31", + "nodeType": "YulBlock", + "src": "8480:110:31", + "statements": [ + { + "body": { + "nativeSrc": "8526:16:31", + "nodeType": "YulBlock", + "src": "8526:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8535:1:31", + "nodeType": "YulLiteral", + "src": "8535:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8538:1:31", + "nodeType": "YulLiteral", + "src": "8538:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8528:6:31", + "nodeType": "YulIdentifier", + "src": "8528:6:31" + }, + "nativeSrc": "8528:12:31", + "nodeType": "YulFunctionCall", + "src": "8528:12:31" + }, + "nativeSrc": "8528:12:31", + "nodeType": "YulExpressionStatement", + "src": "8528:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8501:7:31", + "nodeType": "YulIdentifier", + "src": "8501:7:31" + }, + { + "name": "headStart", + "nativeSrc": "8510:9:31", + "nodeType": "YulIdentifier", + "src": "8510:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8497:3:31", + "nodeType": "YulIdentifier", + "src": "8497:3:31" + }, + "nativeSrc": "8497:23:31", + "nodeType": "YulFunctionCall", + "src": "8497:23:31" + }, + { + "kind": "number", + "nativeSrc": "8522:2:31", + "nodeType": "YulLiteral", + "src": "8522:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8493:3:31", + "nodeType": "YulIdentifier", + "src": "8493:3:31" + }, + "nativeSrc": "8493:32:31", + "nodeType": "YulFunctionCall", + "src": "8493:32:31" + }, + "nativeSrc": "8490:52:31", + "nodeType": "YulIf", + "src": "8490:52:31" + }, + { + "nativeSrc": "8551:33:31", + "nodeType": "YulAssignment", + "src": "8551:33:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8574:9:31", + "nodeType": "YulIdentifier", + "src": "8574:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8561:12:31", + "nodeType": "YulIdentifier", + "src": "8561:12:31" + }, + "nativeSrc": "8561:23:31", + "nodeType": "YulFunctionCall", + "src": "8561:23:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8551:6:31", + "nodeType": "YulIdentifier", + "src": "8551:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "8410:180:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8446:9:31", + "nodeType": "YulTypedName", + "src": "8446:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8457:7:31", + "nodeType": "YulTypedName", + "src": "8457:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8469:6:31", + "nodeType": "YulTypedName", + "src": "8469:6:31", + "type": "" + } + ], + "src": "8410:180:31" + }, + { + "body": { + "nativeSrc": "8665:110:31", + "nodeType": "YulBlock", + "src": "8665:110:31", + "statements": [ + { + "body": { + "nativeSrc": "8711:16:31", + "nodeType": "YulBlock", + "src": "8711:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8720:1:31", + "nodeType": "YulLiteral", + "src": "8720:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8723:1:31", + "nodeType": "YulLiteral", + "src": "8723:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8713:6:31", + "nodeType": "YulIdentifier", + "src": "8713:6:31" + }, + "nativeSrc": "8713:12:31", + "nodeType": "YulFunctionCall", + "src": "8713:12:31" + }, + "nativeSrc": "8713:12:31", + "nodeType": "YulExpressionStatement", + "src": "8713:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8686:7:31", + "nodeType": "YulIdentifier", + "src": "8686:7:31" + }, + { + "name": "headStart", + "nativeSrc": "8695:9:31", + "nodeType": "YulIdentifier", + "src": "8695:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8682:3:31", + "nodeType": "YulIdentifier", + "src": "8682:3:31" + }, + "nativeSrc": "8682:23:31", + "nodeType": "YulFunctionCall", + "src": "8682:23:31" + }, + { + "kind": "number", + "nativeSrc": "8707:2:31", + "nodeType": "YulLiteral", + "src": "8707:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8678:3:31", + "nodeType": "YulIdentifier", + "src": "8678:3:31" + }, + "nativeSrc": "8678:32:31", + "nodeType": "YulFunctionCall", + "src": "8678:32:31" + }, + "nativeSrc": "8675:52:31", + "nodeType": "YulIf", + "src": "8675:52:31" + }, + { + "nativeSrc": "8736:33:31", + "nodeType": "YulAssignment", + "src": "8736:33:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8759:9:31", + "nodeType": "YulIdentifier", + "src": "8759:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8746:12:31", + "nodeType": "YulIdentifier", + "src": "8746:12:31" + }, + "nativeSrc": "8746:23:31", + "nodeType": "YulFunctionCall", + "src": "8746:23:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8736:6:31", + "nodeType": "YulIdentifier", + "src": "8736:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "8595:180:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8631:9:31", + "nodeType": "YulTypedName", + "src": "8631:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8642:7:31", + "nodeType": "YulTypedName", + "src": "8642:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8654:6:31", + "nodeType": "YulTypedName", + "src": "8654:6:31", + "type": "" + } + ], + "src": "8595:180:31" + }, + { + "body": { + "nativeSrc": "8867:228:31", + "nodeType": "YulBlock", + "src": "8867:228:31", + "statements": [ + { + "body": { + "nativeSrc": "8913:16:31", + "nodeType": "YulBlock", + "src": "8913:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8922:1:31", + "nodeType": "YulLiteral", + "src": "8922:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8925:1:31", + "nodeType": "YulLiteral", + "src": "8925:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8915:6:31", + "nodeType": "YulIdentifier", + "src": "8915:6:31" + }, + "nativeSrc": "8915:12:31", + "nodeType": "YulFunctionCall", + "src": "8915:12:31" + }, + "nativeSrc": "8915:12:31", + "nodeType": "YulExpressionStatement", + "src": "8915:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8888:7:31", + "nodeType": "YulIdentifier", + "src": "8888:7:31" + }, + { + "name": "headStart", + "nativeSrc": "8897:9:31", + "nodeType": "YulIdentifier", + "src": "8897:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8884:3:31", + "nodeType": "YulIdentifier", + "src": "8884:3:31" + }, + "nativeSrc": "8884:23:31", + "nodeType": "YulFunctionCall", + "src": "8884:23:31" + }, + { + "kind": "number", + "nativeSrc": "8909:2:31", + "nodeType": "YulLiteral", + "src": "8909:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8880:3:31", + "nodeType": "YulIdentifier", + "src": "8880:3:31" + }, + "nativeSrc": "8880:32:31", + "nodeType": "YulFunctionCall", + "src": "8880:32:31" + }, + "nativeSrc": "8877:52:31", + "nodeType": "YulIf", + "src": "8877:52:31" + }, + { + "nativeSrc": "8938:33:31", + "nodeType": "YulAssignment", + "src": "8938:33:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8961:9:31", + "nodeType": "YulIdentifier", + "src": "8961:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8948:12:31", + "nodeType": "YulIdentifier", + "src": "8948:12:31" + }, + "nativeSrc": "8948:23:31", + "nodeType": "YulFunctionCall", + "src": "8948:23:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8938:6:31", + "nodeType": "YulIdentifier", + "src": "8938:6:31" + } + ] + }, + { + "nativeSrc": "8980:45:31", + "nodeType": "YulVariableDeclaration", + "src": "8980:45:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9010:9:31", + "nodeType": "YulIdentifier", + "src": "9010:9:31" + }, + { + "kind": "number", + "nativeSrc": "9021:2:31", + "nodeType": "YulLiteral", + "src": "9021:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9006:3:31", + "nodeType": "YulIdentifier", + "src": "9006:3:31" + }, + "nativeSrc": "9006:18:31", + "nodeType": "YulFunctionCall", + "src": "9006:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8993:12:31", + "nodeType": "YulIdentifier", + "src": "8993:12:31" + }, + "nativeSrc": "8993:32:31", + "nodeType": "YulFunctionCall", + "src": "8993:32:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "8984:5:31", + "nodeType": "YulTypedName", + "src": "8984:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9059:5:31", + "nodeType": "YulIdentifier", + "src": "9059:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9034:24:31", + "nodeType": "YulIdentifier", + "src": "9034:24:31" + }, + "nativeSrc": "9034:31:31", + "nodeType": "YulFunctionCall", + "src": "9034:31:31" + }, + "nativeSrc": "9034:31:31", + "nodeType": "YulExpressionStatement", + "src": "9034:31:31" + }, + { + "nativeSrc": "9074:15:31", + "nodeType": "YulAssignment", + "src": "9074:15:31", + "value": { + "name": "value", + "nativeSrc": "9084:5:31", + "nodeType": "YulIdentifier", + "src": "9084:5:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9074:6:31", + "nodeType": "YulIdentifier", + "src": "9074:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "8780:315:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8825:9:31", + "nodeType": "YulTypedName", + "src": "8825:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8836:7:31", + "nodeType": "YulTypedName", + "src": "8836:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8848:6:31", + "nodeType": "YulTypedName", + "src": "8848:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8856:6:31", + "nodeType": "YulTypedName", + "src": "8856:6:31", + "type": "" + } + ], + "src": "8780:315:31" + }, + { + "body": { + "nativeSrc": "9238:602:31", + "nodeType": "YulBlock", + "src": "9238:602:31", + "statements": [ + { + "body": { + "nativeSrc": "9285:16:31", + "nodeType": "YulBlock", + "src": "9285:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9294:1:31", + "nodeType": "YulLiteral", + "src": "9294:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9297:1:31", + "nodeType": "YulLiteral", + "src": "9297:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9287:6:31", + "nodeType": "YulIdentifier", + "src": "9287:6:31" + }, + "nativeSrc": "9287:12:31", + "nodeType": "YulFunctionCall", + "src": "9287:12:31" + }, + "nativeSrc": "9287:12:31", + "nodeType": "YulExpressionStatement", + "src": "9287:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9259:7:31", + "nodeType": "YulIdentifier", + "src": "9259:7:31" + }, + { + "name": "headStart", + "nativeSrc": "9268:9:31", + "nodeType": "YulIdentifier", + "src": "9268:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9255:3:31", + "nodeType": "YulIdentifier", + "src": "9255:3:31" + }, + "nativeSrc": "9255:23:31", + "nodeType": "YulFunctionCall", + "src": "9255:23:31" + }, + { + "kind": "number", + "nativeSrc": "9280:3:31", + "nodeType": "YulLiteral", + "src": "9280:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9251:3:31", + "nodeType": "YulIdentifier", + "src": "9251:3:31" + }, + "nativeSrc": "9251:33:31", + "nodeType": "YulFunctionCall", + "src": "9251:33:31" + }, + "nativeSrc": "9248:53:31", + "nodeType": "YulIf", + "src": "9248:53:31" + }, + { + "nativeSrc": "9310:36:31", + "nodeType": "YulVariableDeclaration", + "src": "9310:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9336:9:31", + "nodeType": "YulIdentifier", + "src": "9336:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9323:12:31", + "nodeType": "YulIdentifier", + "src": "9323:12:31" + }, + "nativeSrc": "9323:23:31", + "nodeType": "YulFunctionCall", + "src": "9323:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9314:5:31", + "nodeType": "YulTypedName", + "src": "9314:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9380:5:31", + "nodeType": "YulIdentifier", + "src": "9380:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9355:24:31", + "nodeType": "YulIdentifier", + "src": "9355:24:31" + }, + "nativeSrc": "9355:31:31", + "nodeType": "YulFunctionCall", + "src": "9355:31:31" + }, + "nativeSrc": "9355:31:31", + "nodeType": "YulExpressionStatement", + "src": "9355:31:31" + }, + { + "nativeSrc": "9395:15:31", + "nodeType": "YulAssignment", + "src": "9395:15:31", + "value": { + "name": "value", + "nativeSrc": "9405:5:31", + "nodeType": "YulIdentifier", + "src": "9405:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9395:6:31", + "nodeType": "YulIdentifier", + "src": "9395:6:31" + } + ] + }, + { + "nativeSrc": "9419:47:31", + "nodeType": "YulVariableDeclaration", + "src": "9419:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9451:9:31", + "nodeType": "YulIdentifier", + "src": "9451:9:31" + }, + { + "kind": "number", + "nativeSrc": "9462:2:31", + "nodeType": "YulLiteral", + "src": "9462:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9447:3:31", + "nodeType": "YulIdentifier", + "src": "9447:3:31" + }, + "nativeSrc": "9447:18:31", + "nodeType": "YulFunctionCall", + "src": "9447:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9434:12:31", + "nodeType": "YulIdentifier", + "src": "9434:12:31" + }, + "nativeSrc": "9434:32:31", + "nodeType": "YulFunctionCall", + "src": "9434:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "9423:7:31", + "nodeType": "YulTypedName", + "src": "9423:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "9500:7:31", + "nodeType": "YulIdentifier", + "src": "9500:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9475:24:31", + "nodeType": "YulIdentifier", + "src": "9475:24:31" + }, + "nativeSrc": "9475:33:31", + "nodeType": "YulFunctionCall", + "src": "9475:33:31" + }, + "nativeSrc": "9475:33:31", + "nodeType": "YulExpressionStatement", + "src": "9475:33:31" + }, + { + "nativeSrc": "9517:17:31", + "nodeType": "YulAssignment", + "src": "9517:17:31", + "value": { + "name": "value_1", + "nativeSrc": "9527:7:31", + "nodeType": "YulIdentifier", + "src": "9527:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9517:6:31", + "nodeType": "YulIdentifier", + "src": "9517:6:31" + } + ] + }, + { + "nativeSrc": "9543:42:31", + "nodeType": "YulAssignment", + "src": "9543:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9570:9:31", + "nodeType": "YulIdentifier", + "src": "9570:9:31" + }, + { + "kind": "number", + "nativeSrc": "9581:2:31", + "nodeType": "YulLiteral", + "src": "9581:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9566:3:31", + "nodeType": "YulIdentifier", + "src": "9566:3:31" + }, + "nativeSrc": "9566:18:31", + "nodeType": "YulFunctionCall", + "src": "9566:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9553:12:31", + "nodeType": "YulIdentifier", + "src": "9553:12:31" + }, + "nativeSrc": "9553:32:31", + "nodeType": "YulFunctionCall", + "src": "9553:32:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "9543:6:31", + "nodeType": "YulIdentifier", + "src": "9543:6:31" + } + ] + }, + { + "nativeSrc": "9594:47:31", + "nodeType": "YulVariableDeclaration", + "src": "9594:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9626:9:31", + "nodeType": "YulIdentifier", + "src": "9626:9:31" + }, + { + "kind": "number", + "nativeSrc": "9637:2:31", + "nodeType": "YulLiteral", + "src": "9637:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9622:3:31", + "nodeType": "YulIdentifier", + "src": "9622:3:31" + }, + "nativeSrc": "9622:18:31", + "nodeType": "YulFunctionCall", + "src": "9622:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9609:12:31", + "nodeType": "YulIdentifier", + "src": "9609:12:31" + }, + "nativeSrc": "9609:32:31", + "nodeType": "YulFunctionCall", + "src": "9609:32:31" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "9598:7:31", + "nodeType": "YulTypedName", + "src": "9598:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "9675:7:31", + "nodeType": "YulIdentifier", + "src": "9675:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9650:24:31", + "nodeType": "YulIdentifier", + "src": "9650:24:31" + }, + "nativeSrc": "9650:33:31", + "nodeType": "YulFunctionCall", + "src": "9650:33:31" + }, + "nativeSrc": "9650:33:31", + "nodeType": "YulExpressionStatement", + "src": "9650:33:31" + }, + { + "nativeSrc": "9692:17:31", + "nodeType": "YulAssignment", + "src": "9692:17:31", + "value": { + "name": "value_2", + "nativeSrc": "9702:7:31", + "nodeType": "YulIdentifier", + "src": "9702:7:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "9692:6:31", + "nodeType": "YulIdentifier", + "src": "9692:6:31" + } + ] + }, + { + "nativeSrc": "9718:48:31", + "nodeType": "YulVariableDeclaration", + "src": "9718:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9750:9:31", + "nodeType": "YulIdentifier", + "src": "9750:9:31" + }, + { + "kind": "number", + "nativeSrc": "9761:3:31", + "nodeType": "YulLiteral", + "src": "9761:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9746:3:31", + "nodeType": "YulIdentifier", + "src": "9746:3:31" + }, + "nativeSrc": "9746:19:31", + "nodeType": "YulFunctionCall", + "src": "9746:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9733:12:31", + "nodeType": "YulIdentifier", + "src": "9733:12:31" + }, + "nativeSrc": "9733:33:31", + "nodeType": "YulFunctionCall", + "src": "9733:33:31" + }, + "variables": [ + { + "name": "value_3", + "nativeSrc": "9722:7:31", + "nodeType": "YulTypedName", + "src": "9722:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_3", + "nativeSrc": "9800:7:31", + "nodeType": "YulIdentifier", + "src": "9800:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9775:24:31", + "nodeType": "YulIdentifier", + "src": "9775:24:31" + }, + "nativeSrc": "9775:33:31", + "nodeType": "YulFunctionCall", + "src": "9775:33:31" + }, + "nativeSrc": "9775:33:31", + "nodeType": "YulExpressionStatement", + "src": "9775:33:31" + }, + { + "nativeSrc": "9817:17:31", + "nodeType": "YulAssignment", + "src": "9817:17:31", + "value": { + "name": "value_3", + "nativeSrc": "9827:7:31", + "nodeType": "YulIdentifier", + "src": "9827:7:31" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "9817:6:31", + "nodeType": "YulIdentifier", + "src": "9817:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address", + "nativeSrc": "9100:740:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9172:9:31", + "nodeType": "YulTypedName", + "src": "9172:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9183:7:31", + "nodeType": "YulTypedName", + "src": "9183:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9195:6:31", + "nodeType": "YulTypedName", + "src": "9195:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9203:6:31", + "nodeType": "YulTypedName", + "src": "9203:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "9211:6:31", + "nodeType": "YulTypedName", + "src": "9211:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "9219:6:31", + "nodeType": "YulTypedName", + "src": "9219:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "9227:6:31", + "nodeType": "YulTypedName", + "src": "9227:6:31", + "type": "" + } + ], + "src": "9100:740:31" + }, + { + "body": { + "nativeSrc": "9942:292:31", + "nodeType": "YulBlock", + "src": "9942:292:31", + "statements": [ + { + "body": { + "nativeSrc": "9988:16:31", + "nodeType": "YulBlock", + "src": "9988:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9997:1:31", + "nodeType": "YulLiteral", + "src": "9997:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10000:1:31", + "nodeType": "YulLiteral", + "src": "10000:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9990:6:31", + "nodeType": "YulIdentifier", + "src": "9990:6:31" + }, + "nativeSrc": "9990:12:31", + "nodeType": "YulFunctionCall", + "src": "9990:12:31" + }, + "nativeSrc": "9990:12:31", + "nodeType": "YulExpressionStatement", + "src": "9990:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9963:7:31", + "nodeType": "YulIdentifier", + "src": "9963:7:31" + }, + { + "name": "headStart", + "nativeSrc": "9972:9:31", + "nodeType": "YulIdentifier", + "src": "9972:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9959:3:31", + "nodeType": "YulIdentifier", + "src": "9959:3:31" + }, + "nativeSrc": "9959:23:31", + "nodeType": "YulFunctionCall", + "src": "9959:23:31" + }, + { + "kind": "number", + "nativeSrc": "9984:2:31", + "nodeType": "YulLiteral", + "src": "9984:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9955:3:31", + "nodeType": "YulIdentifier", + "src": "9955:3:31" + }, + "nativeSrc": "9955:32:31", + "nodeType": "YulFunctionCall", + "src": "9955:32:31" + }, + "nativeSrc": "9952:52:31", + "nodeType": "YulIf", + "src": "9952:52:31" + }, + { + "nativeSrc": "10013:37:31", + "nodeType": "YulVariableDeclaration", + "src": "10013:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10040:9:31", + "nodeType": "YulIdentifier", + "src": "10040:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10027:12:31", + "nodeType": "YulIdentifier", + "src": "10027:12:31" + }, + "nativeSrc": "10027:23:31", + "nodeType": "YulFunctionCall", + "src": "10027:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10017:6:31", + "nodeType": "YulTypedName", + "src": "10017:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10093:16:31", + "nodeType": "YulBlock", + "src": "10093:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10102:1:31", + "nodeType": "YulLiteral", + "src": "10102:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10105:1:31", + "nodeType": "YulLiteral", + "src": "10105:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10095:6:31", + "nodeType": "YulIdentifier", + "src": "10095:6:31" + }, + "nativeSrc": "10095:12:31", + "nodeType": "YulFunctionCall", + "src": "10095:12:31" + }, + "nativeSrc": "10095:12:31", + "nodeType": "YulExpressionStatement", + "src": "10095:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10065:6:31", + "nodeType": "YulIdentifier", + "src": "10065:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10081:2:31", + "nodeType": "YulLiteral", + "src": "10081:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10085:1:31", + "nodeType": "YulLiteral", + "src": "10085:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10077:3:31", + "nodeType": "YulIdentifier", + "src": "10077:3:31" + }, + "nativeSrc": "10077:10:31", + "nodeType": "YulFunctionCall", + "src": "10077:10:31" + }, + { + "kind": "number", + "nativeSrc": "10089:1:31", + "nodeType": "YulLiteral", + "src": "10089:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10073:3:31", + "nodeType": "YulIdentifier", + "src": "10073:3:31" + }, + "nativeSrc": "10073:18:31", + "nodeType": "YulFunctionCall", + "src": "10073:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10062:2:31", + "nodeType": "YulIdentifier", + "src": "10062:2:31" + }, + "nativeSrc": "10062:30:31", + "nodeType": "YulFunctionCall", + "src": "10062:30:31" + }, + "nativeSrc": "10059:50:31", + "nodeType": "YulIf", + "src": "10059:50:31" + }, + { + "nativeSrc": "10118:59:31", + "nodeType": "YulAssignment", + "src": "10118:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10149:9:31", + "nodeType": "YulIdentifier", + "src": "10149:9:31" + }, + { + "name": "offset", + "nativeSrc": "10160:6:31", + "nodeType": "YulIdentifier", + "src": "10160:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10145:3:31", + "nodeType": "YulIdentifier", + "src": "10145:3:31" + }, + "nativeSrc": "10145:22:31", + "nodeType": "YulFunctionCall", + "src": "10145:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "10169:7:31", + "nodeType": "YulIdentifier", + "src": "10169:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10128:16:31", + "nodeType": "YulIdentifier", + "src": "10128:16:31" + }, + "nativeSrc": "10128:49:31", + "nodeType": "YulFunctionCall", + "src": "10128:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10118:6:31", + "nodeType": "YulIdentifier", + "src": "10118:6:31" + } + ] + }, + { + "nativeSrc": "10186:42:31", + "nodeType": "YulAssignment", + "src": "10186:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10213:9:31", + "nodeType": "YulIdentifier", + "src": "10213:9:31" + }, + { + "kind": "number", + "nativeSrc": "10224:2:31", + "nodeType": "YulLiteral", + "src": "10224:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10209:3:31", + "nodeType": "YulIdentifier", + "src": "10209:3:31" + }, + "nativeSrc": "10209:18:31", + "nodeType": "YulFunctionCall", + "src": "10209:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10196:12:31", + "nodeType": "YulIdentifier", + "src": "10196:12:31" + }, + "nativeSrc": "10196:32:31", + "nodeType": "YulFunctionCall", + "src": "10196:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10186:6:31", + "nodeType": "YulIdentifier", + "src": "10186:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256", + "nativeSrc": "9845:389:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9900:9:31", + "nodeType": "YulTypedName", + "src": "9900:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9911:7:31", + "nodeType": "YulTypedName", + "src": "9911:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9923:6:31", + "nodeType": "YulTypedName", + "src": "9923:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9931:6:31", + "nodeType": "YulTypedName", + "src": "9931:6:31", + "type": "" + } + ], + "src": "9845:389:31" + }, + { + "body": { + "nativeSrc": "10281:76:31", + "nodeType": "YulBlock", + "src": "10281:76:31", + "statements": [ + { + "body": { + "nativeSrc": "10335:16:31", + "nodeType": "YulBlock", + "src": "10335:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10344:1:31", + "nodeType": "YulLiteral", + "src": "10344:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10347:1:31", + "nodeType": "YulLiteral", + "src": "10347:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10337:6:31", + "nodeType": "YulIdentifier", + "src": "10337:6:31" + }, + "nativeSrc": "10337:12:31", + "nodeType": "YulFunctionCall", + "src": "10337:12:31" + }, + "nativeSrc": "10337:12:31", + "nodeType": "YulExpressionStatement", + "src": "10337:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10304:5:31", + "nodeType": "YulIdentifier", + "src": "10304:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10325:5:31", + "nodeType": "YulIdentifier", + "src": "10325:5:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10318:6:31", + "nodeType": "YulIdentifier", + "src": "10318:6:31" + }, + "nativeSrc": "10318:13:31", + "nodeType": "YulFunctionCall", + "src": "10318:13:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10311:6:31", + "nodeType": "YulIdentifier", + "src": "10311:6:31" + }, + "nativeSrc": "10311:21:31", + "nodeType": "YulFunctionCall", + "src": "10311:21:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10301:2:31", + "nodeType": "YulIdentifier", + "src": "10301:2:31" + }, + "nativeSrc": "10301:32:31", + "nodeType": "YulFunctionCall", + "src": "10301:32:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10294:6:31", + "nodeType": "YulIdentifier", + "src": "10294:6:31" + }, + "nativeSrc": "10294:40:31", + "nodeType": "YulFunctionCall", + "src": "10294:40:31" + }, + "nativeSrc": "10291:60:31", + "nodeType": "YulIf", + "src": "10291:60:31" + } + ] + }, + "name": "validator_revert_bool", + "nativeSrc": "10239:118:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "10270:5:31", + "nodeType": "YulTypedName", + "src": "10270:5:31", + "type": "" + } + ], + "src": "10239:118:31" + }, + { + "body": { + "nativeSrc": "10525:612:31", + "nodeType": "YulBlock", + "src": "10525:612:31", + "statements": [ + { + "body": { + "nativeSrc": "10572:16:31", + "nodeType": "YulBlock", + "src": "10572:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10581:1:31", + "nodeType": "YulLiteral", + "src": "10581:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10584:1:31", + "nodeType": "YulLiteral", + "src": "10584:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10574:6:31", + "nodeType": "YulIdentifier", + "src": "10574:6:31" + }, + "nativeSrc": "10574:12:31", + "nodeType": "YulFunctionCall", + "src": "10574:12:31" + }, + "nativeSrc": "10574:12:31", + "nodeType": "YulExpressionStatement", + "src": "10574:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10546:7:31", + "nodeType": "YulIdentifier", + "src": "10546:7:31" + }, + { + "name": "headStart", + "nativeSrc": "10555:9:31", + "nodeType": "YulIdentifier", + "src": "10555:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10542:3:31", + "nodeType": "YulIdentifier", + "src": "10542:3:31" + }, + "nativeSrc": "10542:23:31", + "nodeType": "YulFunctionCall", + "src": "10542:23:31" + }, + { + "kind": "number", + "nativeSrc": "10567:3:31", + "nodeType": "YulLiteral", + "src": "10567:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10538:3:31", + "nodeType": "YulIdentifier", + "src": "10538:3:31" + }, + "nativeSrc": "10538:33:31", + "nodeType": "YulFunctionCall", + "src": "10538:33:31" + }, + "nativeSrc": "10535:53:31", + "nodeType": "YulIf", + "src": "10535:53:31" + }, + { + "nativeSrc": "10597:37:31", + "nodeType": "YulVariableDeclaration", + "src": "10597:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10624:9:31", + "nodeType": "YulIdentifier", + "src": "10624:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10611:12:31", + "nodeType": "YulIdentifier", + "src": "10611:12:31" + }, + "nativeSrc": "10611:23:31", + "nodeType": "YulFunctionCall", + "src": "10611:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10601:6:31", + "nodeType": "YulTypedName", + "src": "10601:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "10643:28:31", + "nodeType": "YulVariableDeclaration", + "src": "10643:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10661:2:31", + "nodeType": "YulLiteral", + "src": "10661:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10665:1:31", + "nodeType": "YulLiteral", + "src": "10665:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10657:3:31", + "nodeType": "YulIdentifier", + "src": "10657:3:31" + }, + "nativeSrc": "10657:10:31", + "nodeType": "YulFunctionCall", + "src": "10657:10:31" + }, + { + "kind": "number", + "nativeSrc": "10669:1:31", + "nodeType": "YulLiteral", + "src": "10669:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10653:3:31", + "nodeType": "YulIdentifier", + "src": "10653:3:31" + }, + "nativeSrc": "10653:18:31", + "nodeType": "YulFunctionCall", + "src": "10653:18:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "10647:2:31", + "nodeType": "YulTypedName", + "src": "10647:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10698:16:31", + "nodeType": "YulBlock", + "src": "10698:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10707:1:31", + "nodeType": "YulLiteral", + "src": "10707:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10710:1:31", + "nodeType": "YulLiteral", + "src": "10710:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10700:6:31", + "nodeType": "YulIdentifier", + "src": "10700:6:31" + }, + "nativeSrc": "10700:12:31", + "nodeType": "YulFunctionCall", + "src": "10700:12:31" + }, + "nativeSrc": "10700:12:31", + "nodeType": "YulExpressionStatement", + "src": "10700:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10686:6:31", + "nodeType": "YulIdentifier", + "src": "10686:6:31" + }, + { + "name": "_1", + "nativeSrc": "10694:2:31", + "nodeType": "YulIdentifier", + "src": "10694:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10683:2:31", + "nodeType": "YulIdentifier", + "src": "10683:2:31" + }, + "nativeSrc": "10683:14:31", + "nodeType": "YulFunctionCall", + "src": "10683:14:31" + }, + "nativeSrc": "10680:34:31", + "nodeType": "YulIf", + "src": "10680:34:31" + }, + { + "nativeSrc": "10723:59:31", + "nodeType": "YulAssignment", + "src": "10723:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10754:9:31", + "nodeType": "YulIdentifier", + "src": "10754:9:31" + }, + { + "name": "offset", + "nativeSrc": "10765:6:31", + "nodeType": "YulIdentifier", + "src": "10765:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10750:3:31", + "nodeType": "YulIdentifier", + "src": "10750:3:31" + }, + "nativeSrc": "10750:22:31", + "nodeType": "YulFunctionCall", + "src": "10750:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "10774:7:31", + "nodeType": "YulIdentifier", + "src": "10774:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10733:16:31", + "nodeType": "YulIdentifier", + "src": "10733:16:31" + }, + "nativeSrc": "10733:49:31", + "nodeType": "YulFunctionCall", + "src": "10733:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10723:6:31", + "nodeType": "YulIdentifier", + "src": "10723:6:31" + } + ] + }, + { + "nativeSrc": "10791:42:31", + "nodeType": "YulAssignment", + "src": "10791:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10818:9:31", + "nodeType": "YulIdentifier", + "src": "10818:9:31" + }, + { + "kind": "number", + "nativeSrc": "10829:2:31", + "nodeType": "YulLiteral", + "src": "10829:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10814:3:31", + "nodeType": "YulIdentifier", + "src": "10814:3:31" + }, + "nativeSrc": "10814:18:31", + "nodeType": "YulFunctionCall", + "src": "10814:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10801:12:31", + "nodeType": "YulIdentifier", + "src": "10801:12:31" + }, + "nativeSrc": "10801:32:31", + "nodeType": "YulFunctionCall", + "src": "10801:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10791:6:31", + "nodeType": "YulIdentifier", + "src": "10791:6:31" + } + ] + }, + { + "nativeSrc": "10842:45:31", + "nodeType": "YulVariableDeclaration", + "src": "10842:45:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10872:9:31", + "nodeType": "YulIdentifier", + "src": "10872:9:31" + }, + { + "kind": "number", + "nativeSrc": "10883:2:31", + "nodeType": "YulLiteral", + "src": "10883:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10868:3:31", + "nodeType": "YulIdentifier", + "src": "10868:3:31" + }, + "nativeSrc": "10868:18:31", + "nodeType": "YulFunctionCall", + "src": "10868:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10855:12:31", + "nodeType": "YulIdentifier", + "src": "10855:12:31" + }, + "nativeSrc": "10855:32:31", + "nodeType": "YulFunctionCall", + "src": "10855:32:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10846:5:31", + "nodeType": "YulTypedName", + "src": "10846:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "10918:5:31", + "nodeType": "YulIdentifier", + "src": "10918:5:31" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "10896:21:31", + "nodeType": "YulIdentifier", + "src": "10896:21:31" + }, + "nativeSrc": "10896:28:31", + "nodeType": "YulFunctionCall", + "src": "10896:28:31" + }, + "nativeSrc": "10896:28:31", + "nodeType": "YulExpressionStatement", + "src": "10896:28:31" + }, + { + "nativeSrc": "10933:15:31", + "nodeType": "YulAssignment", + "src": "10933:15:31", + "value": { + "name": "value", + "nativeSrc": "10943:5:31", + "nodeType": "YulIdentifier", + "src": "10943:5:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "10933:6:31", + "nodeType": "YulIdentifier", + "src": "10933:6:31" + } + ] + }, + { + "nativeSrc": "10957:48:31", + "nodeType": "YulVariableDeclaration", + "src": "10957:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10990:9:31", + "nodeType": "YulIdentifier", + "src": "10990:9:31" + }, + { + "kind": "number", + "nativeSrc": "11001:2:31", + "nodeType": "YulLiteral", + "src": "11001:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10986:3:31", + "nodeType": "YulIdentifier", + "src": "10986:3:31" + }, + "nativeSrc": "10986:18:31", + "nodeType": "YulFunctionCall", + "src": "10986:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10973:12:31", + "nodeType": "YulIdentifier", + "src": "10973:12:31" + }, + "nativeSrc": "10973:32:31", + "nodeType": "YulFunctionCall", + "src": "10973:32:31" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "10961:8:31", + "nodeType": "YulTypedName", + "src": "10961:8:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11034:16:31", + "nodeType": "YulBlock", + "src": "11034:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11043:1:31", + "nodeType": "YulLiteral", + "src": "11043:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11046:1:31", + "nodeType": "YulLiteral", + "src": "11046:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11036:6:31", + "nodeType": "YulIdentifier", + "src": "11036:6:31" + }, + "nativeSrc": "11036:12:31", + "nodeType": "YulFunctionCall", + "src": "11036:12:31" + }, + "nativeSrc": "11036:12:31", + "nodeType": "YulExpressionStatement", + "src": "11036:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "11020:8:31", + "nodeType": "YulIdentifier", + "src": "11020:8:31" + }, + { + "name": "_1", + "nativeSrc": "11030:2:31", + "nodeType": "YulIdentifier", + "src": "11030:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "11017:2:31", + "nodeType": "YulIdentifier", + "src": "11017:2:31" + }, + "nativeSrc": "11017:16:31", + "nodeType": "YulFunctionCall", + "src": "11017:16:31" + }, + "nativeSrc": "11014:36:31", + "nodeType": "YulIf", + "src": "11014:36:31" + }, + { + "nativeSrc": "11059:72:31", + "nodeType": "YulAssignment", + "src": "11059:72:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11101:9:31", + "nodeType": "YulIdentifier", + "src": "11101:9:31" + }, + { + "name": "offset_1", + "nativeSrc": "11112:8:31", + "nodeType": "YulIdentifier", + "src": "11112:8:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11097:3:31", + "nodeType": "YulIdentifier", + "src": "11097:3:31" + }, + "nativeSrc": "11097:24:31", + "nodeType": "YulFunctionCall", + "src": "11097:24:31" + }, + { + "name": "dataEnd", + "nativeSrc": "11123:7:31", + "nodeType": "YulIdentifier", + "src": "11123:7:31" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "11069:27:31", + "nodeType": "YulIdentifier", + "src": "11069:27:31" + }, + "nativeSrc": "11069:62:31", + "nodeType": "YulFunctionCall", + "src": "11069:62:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "11059:6:31", + "nodeType": "YulIdentifier", + "src": "11059:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "10362:775:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10467:9:31", + "nodeType": "YulTypedName", + "src": "10467:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10478:7:31", + "nodeType": "YulTypedName", + "src": "10478:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10490:6:31", + "nodeType": "YulTypedName", + "src": "10490:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10498:6:31", + "nodeType": "YulTypedName", + "src": "10498:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "10506:6:31", + "nodeType": "YulTypedName", + "src": "10506:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "10514:6:31", + "nodeType": "YulTypedName", + "src": "10514:6:31", + "type": "" + } + ], + "src": "10362:775:31" + }, + { + "body": { + "nativeSrc": "11314:633:31", + "nodeType": "YulBlock", + "src": "11314:633:31", + "statements": [ + { + "body": { + "nativeSrc": "11361:16:31", + "nodeType": "YulBlock", + "src": "11361:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11370:1:31", + "nodeType": "YulLiteral", + "src": "11370:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11373:1:31", + "nodeType": "YulLiteral", + "src": "11373:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11363:6:31", + "nodeType": "YulIdentifier", + "src": "11363:6:31" + }, + "nativeSrc": "11363:12:31", + "nodeType": "YulFunctionCall", + "src": "11363:12:31" + }, + "nativeSrc": "11363:12:31", + "nodeType": "YulExpressionStatement", + "src": "11363:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11335:7:31", + "nodeType": "YulIdentifier", + "src": "11335:7:31" + }, + { + "name": "headStart", + "nativeSrc": "11344:9:31", + "nodeType": "YulIdentifier", + "src": "11344:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11331:3:31", + "nodeType": "YulIdentifier", + "src": "11331:3:31" + }, + "nativeSrc": "11331:23:31", + "nodeType": "YulFunctionCall", + "src": "11331:23:31" + }, + { + "kind": "number", + "nativeSrc": "11356:3:31", + "nodeType": "YulLiteral", + "src": "11356:3:31", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11327:3:31", + "nodeType": "YulIdentifier", + "src": "11327:3:31" + }, + "nativeSrc": "11327:33:31", + "nodeType": "YulFunctionCall", + "src": "11327:33:31" + }, + "nativeSrc": "11324:53:31", + "nodeType": "YulIf", + "src": "11324:53:31" + }, + { + "nativeSrc": "11386:36:31", + "nodeType": "YulVariableDeclaration", + "src": "11386:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11412:9:31", + "nodeType": "YulIdentifier", + "src": "11412:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11399:12:31", + "nodeType": "YulIdentifier", + "src": "11399:12:31" + }, + "nativeSrc": "11399:23:31", + "nodeType": "YulFunctionCall", + "src": "11399:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11390:5:31", + "nodeType": "YulTypedName", + "src": "11390:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "11456:5:31", + "nodeType": "YulIdentifier", + "src": "11456:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11431:24:31", + "nodeType": "YulIdentifier", + "src": "11431:24:31" + }, + "nativeSrc": "11431:31:31", + "nodeType": "YulFunctionCall", + "src": "11431:31:31" + }, + "nativeSrc": "11431:31:31", + "nodeType": "YulExpressionStatement", + "src": "11431:31:31" + }, + { + "nativeSrc": "11471:15:31", + "nodeType": "YulAssignment", + "src": "11471:15:31", + "value": { + "name": "value", + "nativeSrc": "11481:5:31", + "nodeType": "YulIdentifier", + "src": "11481:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11471:6:31", + "nodeType": "YulIdentifier", + "src": "11471:6:31" + } + ] + }, + { + "nativeSrc": "11495:47:31", + "nodeType": "YulVariableDeclaration", + "src": "11495:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11527:9:31", + "nodeType": "YulIdentifier", + "src": "11527:9:31" + }, + { + "kind": "number", + "nativeSrc": "11538:2:31", + "nodeType": "YulLiteral", + "src": "11538:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11523:3:31", + "nodeType": "YulIdentifier", + "src": "11523:3:31" + }, + "nativeSrc": "11523:18:31", + "nodeType": "YulFunctionCall", + "src": "11523:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11510:12:31", + "nodeType": "YulIdentifier", + "src": "11510:12:31" + }, + "nativeSrc": "11510:32:31", + "nodeType": "YulFunctionCall", + "src": "11510:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "11499:7:31", + "nodeType": "YulTypedName", + "src": "11499:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "11576:7:31", + "nodeType": "YulIdentifier", + "src": "11576:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11551:24:31", + "nodeType": "YulIdentifier", + "src": "11551:24:31" + }, + "nativeSrc": "11551:33:31", + "nodeType": "YulFunctionCall", + "src": "11551:33:31" + }, + "nativeSrc": "11551:33:31", + "nodeType": "YulExpressionStatement", + "src": "11551:33:31" + }, + { + "nativeSrc": "11593:17:31", + "nodeType": "YulAssignment", + "src": "11593:17:31", + "value": { + "name": "value_1", + "nativeSrc": "11603:7:31", + "nodeType": "YulIdentifier", + "src": "11603:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "11593:6:31", + "nodeType": "YulIdentifier", + "src": "11593:6:31" + } + ] + }, + { + "nativeSrc": "11619:47:31", + "nodeType": "YulVariableDeclaration", + "src": "11619:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11651:9:31", + "nodeType": "YulIdentifier", + "src": "11651:9:31" + }, + { + "kind": "number", + "nativeSrc": "11662:2:31", + "nodeType": "YulLiteral", + "src": "11662:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11647:3:31", + "nodeType": "YulIdentifier", + "src": "11647:3:31" + }, + "nativeSrc": "11647:18:31", + "nodeType": "YulFunctionCall", + "src": "11647:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11634:12:31", + "nodeType": "YulIdentifier", + "src": "11634:12:31" + }, + "nativeSrc": "11634:32:31", + "nodeType": "YulFunctionCall", + "src": "11634:32:31" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "11623:7:31", + "nodeType": "YulTypedName", + "src": "11623:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "11700:7:31", + "nodeType": "YulIdentifier", + "src": "11700:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11675:24:31", + "nodeType": "YulIdentifier", + "src": "11675:24:31" + }, + "nativeSrc": "11675:33:31", + "nodeType": "YulFunctionCall", + "src": "11675:33:31" + }, + "nativeSrc": "11675:33:31", + "nodeType": "YulExpressionStatement", + "src": "11675:33:31" + }, + { + "nativeSrc": "11717:17:31", + "nodeType": "YulAssignment", + "src": "11717:17:31", + "value": { + "name": "value_2", + "nativeSrc": "11727:7:31", + "nodeType": "YulIdentifier", + "src": "11727:7:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "11717:6:31", + "nodeType": "YulIdentifier", + "src": "11717:6:31" + } + ] + }, + { + "nativeSrc": "11743:42:31", + "nodeType": "YulAssignment", + "src": "11743:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11770:9:31", + "nodeType": "YulIdentifier", + "src": "11770:9:31" + }, + { + "kind": "number", + "nativeSrc": "11781:2:31", + "nodeType": "YulLiteral", + "src": "11781:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11766:3:31", + "nodeType": "YulIdentifier", + "src": "11766:3:31" + }, + "nativeSrc": "11766:18:31", + "nodeType": "YulFunctionCall", + "src": "11766:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11753:12:31", + "nodeType": "YulIdentifier", + "src": "11753:12:31" + }, + "nativeSrc": "11753:32:31", + "nodeType": "YulFunctionCall", + "src": "11753:32:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "11743:6:31", + "nodeType": "YulIdentifier", + "src": "11743:6:31" + } + ] + }, + { + "nativeSrc": "11794:43:31", + "nodeType": "YulAssignment", + "src": "11794:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11821:9:31", + "nodeType": "YulIdentifier", + "src": "11821:9:31" + }, + { + "kind": "number", + "nativeSrc": "11832:3:31", + "nodeType": "YulLiteral", + "src": "11832:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11817:3:31", + "nodeType": "YulIdentifier", + "src": "11817:3:31" + }, + "nativeSrc": "11817:19:31", + "nodeType": "YulFunctionCall", + "src": "11817:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11804:12:31", + "nodeType": "YulIdentifier", + "src": "11804:12:31" + }, + "nativeSrc": "11804:33:31", + "nodeType": "YulFunctionCall", + "src": "11804:33:31" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "11794:6:31", + "nodeType": "YulIdentifier", + "src": "11794:6:31" + } + ] + }, + { + "nativeSrc": "11846:43:31", + "nodeType": "YulAssignment", + "src": "11846:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11873:9:31", + "nodeType": "YulIdentifier", + "src": "11873:9:31" + }, + { + "kind": "number", + "nativeSrc": "11884:3:31", + "nodeType": "YulLiteral", + "src": "11884:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11869:3:31", + "nodeType": "YulIdentifier", + "src": "11869:3:31" + }, + "nativeSrc": "11869:19:31", + "nodeType": "YulFunctionCall", + "src": "11869:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11856:12:31", + "nodeType": "YulIdentifier", + "src": "11856:12:31" + }, + "nativeSrc": "11856:33:31", + "nodeType": "YulFunctionCall", + "src": "11856:33:31" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "11846:6:31", + "nodeType": "YulIdentifier", + "src": "11846:6:31" + } + ] + }, + { + "nativeSrc": "11898:43:31", + "nodeType": "YulAssignment", + "src": "11898:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11925:9:31", + "nodeType": "YulIdentifier", + "src": "11925:9:31" + }, + { + "kind": "number", + "nativeSrc": "11936:3:31", + "nodeType": "YulLiteral", + "src": "11936:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11921:3:31", + "nodeType": "YulIdentifier", + "src": "11921:3:31" + }, + "nativeSrc": "11921:19:31", + "nodeType": "YulFunctionCall", + "src": "11921:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11908:12:31", + "nodeType": "YulIdentifier", + "src": "11908:12:31" + }, + "nativeSrc": "11908:33:31", + "nodeType": "YulFunctionCall", + "src": "11908:33:31" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "11898:6:31", + "nodeType": "YulIdentifier", + "src": "11898:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256", + "nativeSrc": "11142:805:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11232:9:31", + "nodeType": "YulTypedName", + "src": "11232:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11243:7:31", + "nodeType": "YulTypedName", + "src": "11243:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11255:6:31", + "nodeType": "YulTypedName", + "src": "11255:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11263:6:31", + "nodeType": "YulTypedName", + "src": "11263:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11271:6:31", + "nodeType": "YulTypedName", + "src": "11271:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11279:6:31", + "nodeType": "YulTypedName", + "src": "11279:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11287:6:31", + "nodeType": "YulTypedName", + "src": "11287:6:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "11295:6:31", + "nodeType": "YulTypedName", + "src": "11295:6:31", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "11303:6:31", + "nodeType": "YulTypedName", + "src": "11303:6:31", + "type": "" + } + ], + "src": "11142:805:31" + }, + { + "body": { + "nativeSrc": "12048:359:31", + "nodeType": "YulBlock", + "src": "12048:359:31", + "statements": [ + { + "body": { + "nativeSrc": "12094:16:31", + "nodeType": "YulBlock", + "src": "12094:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12103:1:31", + "nodeType": "YulLiteral", + "src": "12103:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12106:1:31", + "nodeType": "YulLiteral", + "src": "12106:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12096:6:31", + "nodeType": "YulIdentifier", + "src": "12096:6:31" + }, + "nativeSrc": "12096:12:31", + "nodeType": "YulFunctionCall", + "src": "12096:12:31" + }, + "nativeSrc": "12096:12:31", + "nodeType": "YulExpressionStatement", + "src": "12096:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12069:7:31", + "nodeType": "YulIdentifier", + "src": "12069:7:31" + }, + { + "name": "headStart", + "nativeSrc": "12078:9:31", + "nodeType": "YulIdentifier", + "src": "12078:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12065:3:31", + "nodeType": "YulIdentifier", + "src": "12065:3:31" + }, + "nativeSrc": "12065:23:31", + "nodeType": "YulFunctionCall", + "src": "12065:23:31" + }, + { + "kind": "number", + "nativeSrc": "12090:2:31", + "nodeType": "YulLiteral", + "src": "12090:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12061:3:31", + "nodeType": "YulIdentifier", + "src": "12061:3:31" + }, + "nativeSrc": "12061:32:31", + "nodeType": "YulFunctionCall", + "src": "12061:32:31" + }, + "nativeSrc": "12058:52:31", + "nodeType": "YulIf", + "src": "12058:52:31" + }, + { + "nativeSrc": "12119:36:31", + "nodeType": "YulVariableDeclaration", + "src": "12119:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12145:9:31", + "nodeType": "YulIdentifier", + "src": "12145:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12132:12:31", + "nodeType": "YulIdentifier", + "src": "12132:12:31" + }, + "nativeSrc": "12132:23:31", + "nodeType": "YulFunctionCall", + "src": "12132:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12123:5:31", + "nodeType": "YulTypedName", + "src": "12123:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12189:5:31", + "nodeType": "YulIdentifier", + "src": "12189:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12164:24:31", + "nodeType": "YulIdentifier", + "src": "12164:24:31" + }, + "nativeSrc": "12164:31:31", + "nodeType": "YulFunctionCall", + "src": "12164:31:31" + }, + "nativeSrc": "12164:31:31", + "nodeType": "YulExpressionStatement", + "src": "12164:31:31" + }, + { + "nativeSrc": "12204:15:31", + "nodeType": "YulAssignment", + "src": "12204:15:31", + "value": { + "name": "value", + "nativeSrc": "12214:5:31", + "nodeType": "YulIdentifier", + "src": "12214:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12204:6:31", + "nodeType": "YulIdentifier", + "src": "12204:6:31" + } + ] + }, + { + "nativeSrc": "12228:46:31", + "nodeType": "YulVariableDeclaration", + "src": "12228:46:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12259:9:31", + "nodeType": "YulIdentifier", + "src": "12259:9:31" + }, + { + "kind": "number", + "nativeSrc": "12270:2:31", + "nodeType": "YulLiteral", + "src": "12270:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12255:3:31", + "nodeType": "YulIdentifier", + "src": "12255:3:31" + }, + "nativeSrc": "12255:18:31", + "nodeType": "YulFunctionCall", + "src": "12255:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12242:12:31", + "nodeType": "YulIdentifier", + "src": "12242:12:31" + }, + "nativeSrc": "12242:32:31", + "nodeType": "YulFunctionCall", + "src": "12242:32:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "12232:6:31", + "nodeType": "YulTypedName", + "src": "12232:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12317:16:31", + "nodeType": "YulBlock", + "src": "12317:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12326:1:31", + "nodeType": "YulLiteral", + "src": "12326:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12329:1:31", + "nodeType": "YulLiteral", + "src": "12329:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12319:6:31", + "nodeType": "YulIdentifier", + "src": "12319:6:31" + }, + "nativeSrc": "12319:12:31", + "nodeType": "YulFunctionCall", + "src": "12319:12:31" + }, + "nativeSrc": "12319:12:31", + "nodeType": "YulExpressionStatement", + "src": "12319:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "12289:6:31", + "nodeType": "YulIdentifier", + "src": "12289:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12305:2:31", + "nodeType": "YulLiteral", + "src": "12305:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "12309:1:31", + "nodeType": "YulLiteral", + "src": "12309:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12301:3:31", + "nodeType": "YulIdentifier", + "src": "12301:3:31" + }, + "nativeSrc": "12301:10:31", + "nodeType": "YulFunctionCall", + "src": "12301:10:31" + }, + { + "kind": "number", + "nativeSrc": "12313:1:31", + "nodeType": "YulLiteral", + "src": "12313:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12297:3:31", + "nodeType": "YulIdentifier", + "src": "12297:3:31" + }, + "nativeSrc": "12297:18:31", + "nodeType": "YulFunctionCall", + "src": "12297:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12286:2:31", + "nodeType": "YulIdentifier", + "src": "12286:2:31" + }, + "nativeSrc": "12286:30:31", + "nodeType": "YulFunctionCall", + "src": "12286:30:31" + }, + "nativeSrc": "12283:50:31", + "nodeType": "YulIf", + "src": "12283:50:31" + }, + { + "nativeSrc": "12342:59:31", + "nodeType": "YulAssignment", + "src": "12342:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12373:9:31", + "nodeType": "YulIdentifier", + "src": "12373:9:31" + }, + { + "name": "offset", + "nativeSrc": "12384:6:31", + "nodeType": "YulIdentifier", + "src": "12384:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12369:3:31", + "nodeType": "YulIdentifier", + "src": "12369:3:31" + }, + "nativeSrc": "12369:22:31", + "nodeType": "YulFunctionCall", + "src": "12369:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "12393:7:31", + "nodeType": "YulIdentifier", + "src": "12393:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "12352:16:31", + "nodeType": "YulIdentifier", + "src": "12352:16:31" + }, + "nativeSrc": "12352:49:31", + "nodeType": "YulFunctionCall", + "src": "12352:49:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12342:6:31", + "nodeType": "YulIdentifier", + "src": "12342:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "11952:455:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12006:9:31", + "nodeType": "YulTypedName", + "src": "12006:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12017:7:31", + "nodeType": "YulTypedName", + "src": "12017:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12029:6:31", + "nodeType": "YulTypedName", + "src": "12029:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12037:6:31", + "nodeType": "YulTypedName", + "src": "12037:6:31", + "type": "" + } + ], + "src": "11952:455:31" + }, + { + "body": { + "nativeSrc": "12513:102:31", + "nodeType": "YulBlock", + "src": "12513:102:31", + "statements": [ + { + "nativeSrc": "12523:26:31", + "nodeType": "YulAssignment", + "src": "12523:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12535:9:31", + "nodeType": "YulIdentifier", + "src": "12535:9:31" + }, + { + "kind": "number", + "nativeSrc": "12546:2:31", + "nodeType": "YulLiteral", + "src": "12546:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12531:3:31", + "nodeType": "YulIdentifier", + "src": "12531:3:31" + }, + "nativeSrc": "12531:18:31", + "nodeType": "YulFunctionCall", + "src": "12531:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12523:4:31", + "nodeType": "YulIdentifier", + "src": "12523:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12565:9:31", + "nodeType": "YulIdentifier", + "src": "12565:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12580:6:31", + "nodeType": "YulIdentifier", + "src": "12580:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12596:3:31", + "nodeType": "YulLiteral", + "src": "12596:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12601:1:31", + "nodeType": "YulLiteral", + "src": "12601:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12592:3:31", + "nodeType": "YulIdentifier", + "src": "12592:3:31" + }, + "nativeSrc": "12592:11:31", + "nodeType": "YulFunctionCall", + "src": "12592:11:31" + }, + { + "kind": "number", + "nativeSrc": "12605:1:31", + "nodeType": "YulLiteral", + "src": "12605:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12588:3:31", + "nodeType": "YulIdentifier", + "src": "12588:3:31" + }, + "nativeSrc": "12588:19:31", + "nodeType": "YulFunctionCall", + "src": "12588:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12576:3:31", + "nodeType": "YulIdentifier", + "src": "12576:3:31" + }, + "nativeSrc": "12576:32:31", + "nodeType": "YulFunctionCall", + "src": "12576:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12558:6:31", + "nodeType": "YulIdentifier", + "src": "12558:6:31" + }, + "nativeSrc": "12558:51:31", + "nodeType": "YulFunctionCall", + "src": "12558:51:31" + }, + "nativeSrc": "12558:51:31", + "nodeType": "YulExpressionStatement", + "src": "12558:51:31" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "12412:203:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12482:9:31", + "nodeType": "YulTypedName", + "src": "12482:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12493:6:31", + "nodeType": "YulTypedName", + "src": "12493:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12504:4:31", + "nodeType": "YulTypedName", + "src": "12504:4:31", + "type": "" + } + ], + "src": "12412:203:31" + }, + { + "body": { + "nativeSrc": "12707:228:31", + "nodeType": "YulBlock", + "src": "12707:228:31", + "statements": [ + { + "body": { + "nativeSrc": "12753:16:31", + "nodeType": "YulBlock", + "src": "12753:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12762:1:31", + "nodeType": "YulLiteral", + "src": "12762:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12765:1:31", + "nodeType": "YulLiteral", + "src": "12765:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12755:6:31", + "nodeType": "YulIdentifier", + "src": "12755:6:31" + }, + "nativeSrc": "12755:12:31", + "nodeType": "YulFunctionCall", + "src": "12755:12:31" + }, + "nativeSrc": "12755:12:31", + "nodeType": "YulExpressionStatement", + "src": "12755:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12728:7:31", + "nodeType": "YulIdentifier", + "src": "12728:7:31" + }, + { + "name": "headStart", + "nativeSrc": "12737:9:31", + "nodeType": "YulIdentifier", + "src": "12737:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12724:3:31", + "nodeType": "YulIdentifier", + "src": "12724:3:31" + }, + "nativeSrc": "12724:23:31", + "nodeType": "YulFunctionCall", + "src": "12724:23:31" + }, + { + "kind": "number", + "nativeSrc": "12749:2:31", + "nodeType": "YulLiteral", + "src": "12749:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12720:3:31", + "nodeType": "YulIdentifier", + "src": "12720:3:31" + }, + "nativeSrc": "12720:32:31", + "nodeType": "YulFunctionCall", + "src": "12720:32:31" + }, + "nativeSrc": "12717:52:31", + "nodeType": "YulIf", + "src": "12717:52:31" + }, + { + "nativeSrc": "12778:36:31", + "nodeType": "YulVariableDeclaration", + "src": "12778:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12804:9:31", + "nodeType": "YulIdentifier", + "src": "12804:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12791:12:31", + "nodeType": "YulIdentifier", + "src": "12791:12:31" + }, + "nativeSrc": "12791:23:31", + "nodeType": "YulFunctionCall", + "src": "12791:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12782:5:31", + "nodeType": "YulTypedName", + "src": "12782:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12848:5:31", + "nodeType": "YulIdentifier", + "src": "12848:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12823:24:31", + "nodeType": "YulIdentifier", + "src": "12823:24:31" + }, + "nativeSrc": "12823:31:31", + "nodeType": "YulFunctionCall", + "src": "12823:31:31" + }, + "nativeSrc": "12823:31:31", + "nodeType": "YulExpressionStatement", + "src": "12823:31:31" + }, + { + "nativeSrc": "12863:15:31", + "nodeType": "YulAssignment", + "src": "12863:15:31", + "value": { + "name": "value", + "nativeSrc": "12873:5:31", + "nodeType": "YulIdentifier", + "src": "12873:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12863:6:31", + "nodeType": "YulIdentifier", + "src": "12863:6:31" + } + ] + }, + { + "nativeSrc": "12887:42:31", + "nodeType": "YulAssignment", + "src": "12887:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12914:9:31", + "nodeType": "YulIdentifier", + "src": "12914:9:31" + }, + { + "kind": "number", + "nativeSrc": "12925:2:31", + "nodeType": "YulLiteral", + "src": "12925:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12910:3:31", + "nodeType": "YulIdentifier", + "src": "12910:3:31" + }, + "nativeSrc": "12910:18:31", + "nodeType": "YulFunctionCall", + "src": "12910:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12897:12:31", + "nodeType": "YulIdentifier", + "src": "12897:12:31" + }, + "nativeSrc": "12897:32:31", + "nodeType": "YulFunctionCall", + "src": "12897:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12887:6:31", + "nodeType": "YulIdentifier", + "src": "12887:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "12620:315:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12665:9:31", + "nodeType": "YulTypedName", + "src": "12665:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12676:7:31", + "nodeType": "YulTypedName", + "src": "12676:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12688:6:31", + "nodeType": "YulTypedName", + "src": "12688:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12696:6:31", + "nodeType": "YulTypedName", + "src": "12696:6:31", + "type": "" + } + ], + "src": "12620:315:31" + }, + { + "body": { + "nativeSrc": "13103:587:31", + "nodeType": "YulBlock", + "src": "13103:587:31", + "statements": [ + { + "body": { + "nativeSrc": "13150:16:31", + "nodeType": "YulBlock", + "src": "13150:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13159:1:31", + "nodeType": "YulLiteral", + "src": "13159:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13162:1:31", + "nodeType": "YulLiteral", + "src": "13162:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13152:6:31", + "nodeType": "YulIdentifier", + "src": "13152:6:31" + }, + "nativeSrc": "13152:12:31", + "nodeType": "YulFunctionCall", + "src": "13152:12:31" + }, + "nativeSrc": "13152:12:31", + "nodeType": "YulExpressionStatement", + "src": "13152:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "13124:7:31", + "nodeType": "YulIdentifier", + "src": "13124:7:31" + }, + { + "name": "headStart", + "nativeSrc": "13133:9:31", + "nodeType": "YulIdentifier", + "src": "13133:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13120:3:31", + "nodeType": "YulIdentifier", + "src": "13120:3:31" + }, + "nativeSrc": "13120:23:31", + "nodeType": "YulFunctionCall", + "src": "13120:23:31" + }, + { + "kind": "number", + "nativeSrc": "13145:3:31", + "nodeType": "YulLiteral", + "src": "13145:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "13116:3:31", + "nodeType": "YulIdentifier", + "src": "13116:3:31" + }, + "nativeSrc": "13116:33:31", + "nodeType": "YulFunctionCall", + "src": "13116:33:31" + }, + "nativeSrc": "13113:53:31", + "nodeType": "YulIf", + "src": "13113:53:31" + }, + { + "nativeSrc": "13175:36:31", + "nodeType": "YulVariableDeclaration", + "src": "13175:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13201:9:31", + "nodeType": "YulIdentifier", + "src": "13201:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13188:12:31", + "nodeType": "YulIdentifier", + "src": "13188:12:31" + }, + "nativeSrc": "13188:23:31", + "nodeType": "YulFunctionCall", + "src": "13188:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "13179:5:31", + "nodeType": "YulTypedName", + "src": "13179:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13245:5:31", + "nodeType": "YulIdentifier", + "src": "13245:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "13220:24:31", + "nodeType": "YulIdentifier", + "src": "13220:24:31" + }, + "nativeSrc": "13220:31:31", + "nodeType": "YulFunctionCall", + "src": "13220:31:31" + }, + "nativeSrc": "13220:31:31", + "nodeType": "YulExpressionStatement", + "src": "13220:31:31" + }, + { + "nativeSrc": "13260:15:31", + "nodeType": "YulAssignment", + "src": "13260:15:31", + "value": { + "name": "value", + "nativeSrc": "13270:5:31", + "nodeType": "YulIdentifier", + "src": "13270:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "13260:6:31", + "nodeType": "YulIdentifier", + "src": "13260:6:31" + } + ] + }, + { + "nativeSrc": "13284:46:31", + "nodeType": "YulVariableDeclaration", + "src": "13284:46:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13315:9:31", + "nodeType": "YulIdentifier", + "src": "13315:9:31" + }, + { + "kind": "number", + "nativeSrc": "13326:2:31", + "nodeType": "YulLiteral", + "src": "13326:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13311:3:31", + "nodeType": "YulIdentifier", + "src": "13311:3:31" + }, + "nativeSrc": "13311:18:31", + "nodeType": "YulFunctionCall", + "src": "13311:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13298:12:31", + "nodeType": "YulIdentifier", + "src": "13298:12:31" + }, + "nativeSrc": "13298:32:31", + "nodeType": "YulFunctionCall", + "src": "13298:32:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "13288:6:31", + "nodeType": "YulTypedName", + "src": "13288:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13373:16:31", + "nodeType": "YulBlock", + "src": "13373:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13382:1:31", + "nodeType": "YulLiteral", + "src": "13382:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13385:1:31", + "nodeType": "YulLiteral", + "src": "13385:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13375:6:31", + "nodeType": "YulIdentifier", + "src": "13375:6:31" + }, + "nativeSrc": "13375:12:31", + "nodeType": "YulFunctionCall", + "src": "13375:12:31" + }, + "nativeSrc": "13375:12:31", + "nodeType": "YulExpressionStatement", + "src": "13375:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "13345:6:31", + "nodeType": "YulIdentifier", + "src": "13345:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13361:2:31", + "nodeType": "YulLiteral", + "src": "13361:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "13365:1:31", + "nodeType": "YulLiteral", + "src": "13365:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13357:3:31", + "nodeType": "YulIdentifier", + "src": "13357:3:31" + }, + "nativeSrc": "13357:10:31", + "nodeType": "YulFunctionCall", + "src": "13357:10:31" + }, + { + "kind": "number", + "nativeSrc": "13369:1:31", + "nodeType": "YulLiteral", + "src": "13369:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13353:3:31", + "nodeType": "YulIdentifier", + "src": "13353:3:31" + }, + "nativeSrc": "13353:18:31", + "nodeType": "YulFunctionCall", + "src": "13353:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13342:2:31", + "nodeType": "YulIdentifier", + "src": "13342:2:31" + }, + "nativeSrc": "13342:30:31", + "nodeType": "YulFunctionCall", + "src": "13342:30:31" + }, + "nativeSrc": "13339:50:31", + "nodeType": "YulIf", + "src": "13339:50:31" + }, + { + "nativeSrc": "13398:59:31", + "nodeType": "YulAssignment", + "src": "13398:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13429:9:31", + "nodeType": "YulIdentifier", + "src": "13429:9:31" + }, + { + "name": "offset", + "nativeSrc": "13440:6:31", + "nodeType": "YulIdentifier", + "src": "13440:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13425:3:31", + "nodeType": "YulIdentifier", + "src": "13425:3:31" + }, + "nativeSrc": "13425:22:31", + "nodeType": "YulFunctionCall", + "src": "13425:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "13449:7:31", + "nodeType": "YulIdentifier", + "src": "13449:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "13408:16:31", + "nodeType": "YulIdentifier", + "src": "13408:16:31" + }, + "nativeSrc": "13408:49:31", + "nodeType": "YulFunctionCall", + "src": "13408:49:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "13398:6:31", + "nodeType": "YulIdentifier", + "src": "13398:6:31" + } + ] + }, + { + "nativeSrc": "13466:42:31", + "nodeType": "YulAssignment", + "src": "13466:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13493:9:31", + "nodeType": "YulIdentifier", + "src": "13493:9:31" + }, + { + "kind": "number", + "nativeSrc": "13504:2:31", + "nodeType": "YulLiteral", + "src": "13504:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13489:3:31", + "nodeType": "YulIdentifier", + "src": "13489:3:31" + }, + "nativeSrc": "13489:18:31", + "nodeType": "YulFunctionCall", + "src": "13489:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13476:12:31", + "nodeType": "YulIdentifier", + "src": "13476:12:31" + }, + "nativeSrc": "13476:32:31", + "nodeType": "YulFunctionCall", + "src": "13476:32:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "13466:6:31", + "nodeType": "YulIdentifier", + "src": "13466:6:31" + } + ] + }, + { + "nativeSrc": "13517:42:31", + "nodeType": "YulAssignment", + "src": "13517:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13544:9:31", + "nodeType": "YulIdentifier", + "src": "13544:9:31" + }, + { + "kind": "number", + "nativeSrc": "13555:2:31", + "nodeType": "YulLiteral", + "src": "13555:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13540:3:31", + "nodeType": "YulIdentifier", + "src": "13540:3:31" + }, + "nativeSrc": "13540:18:31", + "nodeType": "YulFunctionCall", + "src": "13540:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13527:12:31", + "nodeType": "YulIdentifier", + "src": "13527:12:31" + }, + "nativeSrc": "13527:32:31", + "nodeType": "YulFunctionCall", + "src": "13527:32:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "13517:6:31", + "nodeType": "YulIdentifier", + "src": "13517:6:31" + } + ] + }, + { + "nativeSrc": "13568:48:31", + "nodeType": "YulVariableDeclaration", + "src": "13568:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13600:9:31", + "nodeType": "YulIdentifier", + "src": "13600:9:31" + }, + { + "kind": "number", + "nativeSrc": "13611:3:31", + "nodeType": "YulLiteral", + "src": "13611:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13596:3:31", + "nodeType": "YulIdentifier", + "src": "13596:3:31" + }, + "nativeSrc": "13596:19:31", + "nodeType": "YulFunctionCall", + "src": "13596:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13583:12:31", + "nodeType": "YulIdentifier", + "src": "13583:12:31" + }, + "nativeSrc": "13583:33:31", + "nodeType": "YulFunctionCall", + "src": "13583:33:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "13572:7:31", + "nodeType": "YulTypedName", + "src": "13572:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "13650:7:31", + "nodeType": "YulIdentifier", + "src": "13650:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "13625:24:31", + "nodeType": "YulIdentifier", + "src": "13625:24:31" + }, + "nativeSrc": "13625:33:31", + "nodeType": "YulFunctionCall", + "src": "13625:33:31" + }, + "nativeSrc": "13625:33:31", + "nodeType": "YulExpressionStatement", + "src": "13625:33:31" + }, + { + "nativeSrc": "13667:17:31", + "nodeType": "YulAssignment", + "src": "13667:17:31", + "value": { + "name": "value_1", + "nativeSrc": "13677:7:31", + "nodeType": "YulIdentifier", + "src": "13677:7:31" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "13667:6:31", + "nodeType": "YulIdentifier", + "src": "13667:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798", + "nativeSrc": "12940:750:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13037:9:31", + "nodeType": "YulTypedName", + "src": "13037:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13048:7:31", + "nodeType": "YulTypedName", + "src": "13048:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13060:6:31", + "nodeType": "YulTypedName", + "src": "13060:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13068:6:31", + "nodeType": "YulTypedName", + "src": "13068:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "13076:6:31", + "nodeType": "YulTypedName", + "src": "13076:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "13084:6:31", + "nodeType": "YulTypedName", + "src": "13084:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "13092:6:31", + "nodeType": "YulTypedName", + "src": "13092:6:31", + "type": "" + } + ], + "src": "12940:750:31" + }, + { + "body": { + "nativeSrc": "13824:119:31", + "nodeType": "YulBlock", + "src": "13824:119:31", + "statements": [ + { + "nativeSrc": "13834:26:31", + "nodeType": "YulAssignment", + "src": "13834:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13846:9:31", + "nodeType": "YulIdentifier", + "src": "13846:9:31" + }, + { + "kind": "number", + "nativeSrc": "13857:2:31", + "nodeType": "YulLiteral", + "src": "13857:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13842:3:31", + "nodeType": "YulIdentifier", + "src": "13842:3:31" + }, + "nativeSrc": "13842:18:31", + "nodeType": "YulFunctionCall", + "src": "13842:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13834:4:31", + "nodeType": "YulIdentifier", + "src": "13834:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13876:9:31", + "nodeType": "YulIdentifier", + "src": "13876:9:31" + }, + { + "name": "value0", + "nativeSrc": "13887:6:31", + "nodeType": "YulIdentifier", + "src": "13887:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13869:6:31", + "nodeType": "YulIdentifier", + "src": "13869:6:31" + }, + "nativeSrc": "13869:25:31", + "nodeType": "YulFunctionCall", + "src": "13869:25:31" + }, + "nativeSrc": "13869:25:31", + "nodeType": "YulExpressionStatement", + "src": "13869:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13914:9:31", + "nodeType": "YulIdentifier", + "src": "13914:9:31" + }, + { + "kind": "number", + "nativeSrc": "13925:2:31", + "nodeType": "YulLiteral", + "src": "13925:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13910:3:31", + "nodeType": "YulIdentifier", + "src": "13910:3:31" + }, + "nativeSrc": "13910:18:31", + "nodeType": "YulFunctionCall", + "src": "13910:18:31" + }, + { + "name": "value1", + "nativeSrc": "13930:6:31", + "nodeType": "YulIdentifier", + "src": "13930:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13903:6:31", + "nodeType": "YulIdentifier", + "src": "13903:6:31" + }, + "nativeSrc": "13903:34:31", + "nodeType": "YulFunctionCall", + "src": "13903:34:31" + }, + "nativeSrc": "13903:34:31", + "nodeType": "YulExpressionStatement", + "src": "13903:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "13695:248:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13785:9:31", + "nodeType": "YulTypedName", + "src": "13785:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13796:6:31", + "nodeType": "YulTypedName", + "src": "13796:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13804:6:31", + "nodeType": "YulTypedName", + "src": "13804:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13815:4:31", + "nodeType": "YulTypedName", + "src": "13815:4:31", + "type": "" + } + ], + "src": "13695:248:31" + }, + { + "body": { + "nativeSrc": "14018:177:31", + "nodeType": "YulBlock", + "src": "14018:177:31", + "statements": [ + { + "body": { + "nativeSrc": "14064:16:31", + "nodeType": "YulBlock", + "src": "14064:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14073:1:31", + "nodeType": "YulLiteral", + "src": "14073:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14076:1:31", + "nodeType": "YulLiteral", + "src": "14076:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14066:6:31", + "nodeType": "YulIdentifier", + "src": "14066:6:31" + }, + "nativeSrc": "14066:12:31", + "nodeType": "YulFunctionCall", + "src": "14066:12:31" + }, + "nativeSrc": "14066:12:31", + "nodeType": "YulExpressionStatement", + "src": "14066:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14039:7:31", + "nodeType": "YulIdentifier", + "src": "14039:7:31" + }, + { + "name": "headStart", + "nativeSrc": "14048:9:31", + "nodeType": "YulIdentifier", + "src": "14048:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14035:3:31", + "nodeType": "YulIdentifier", + "src": "14035:3:31" + }, + "nativeSrc": "14035:23:31", + "nodeType": "YulFunctionCall", + "src": "14035:23:31" + }, + { + "kind": "number", + "nativeSrc": "14060:2:31", + "nodeType": "YulLiteral", + "src": "14060:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14031:3:31", + "nodeType": "YulIdentifier", + "src": "14031:3:31" + }, + "nativeSrc": "14031:32:31", + "nodeType": "YulFunctionCall", + "src": "14031:32:31" + }, + "nativeSrc": "14028:52:31", + "nodeType": "YulIf", + "src": "14028:52:31" + }, + { + "nativeSrc": "14089:36:31", + "nodeType": "YulVariableDeclaration", + "src": "14089:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14115:9:31", + "nodeType": "YulIdentifier", + "src": "14115:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14102:12:31", + "nodeType": "YulIdentifier", + "src": "14102:12:31" + }, + "nativeSrc": "14102:23:31", + "nodeType": "YulFunctionCall", + "src": "14102:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "14093:5:31", + "nodeType": "YulTypedName", + "src": "14093:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "14159:5:31", + "nodeType": "YulIdentifier", + "src": "14159:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "14134:24:31", + "nodeType": "YulIdentifier", + "src": "14134:24:31" + }, + "nativeSrc": "14134:31:31", + "nodeType": "YulFunctionCall", + "src": "14134:31:31" + }, + "nativeSrc": "14134:31:31", + "nodeType": "YulExpressionStatement", + "src": "14134:31:31" + }, + { + "nativeSrc": "14174:15:31", + "nodeType": "YulAssignment", + "src": "14174:15:31", + "value": { + "name": "value", + "nativeSrc": "14184:5:31", + "nodeType": "YulIdentifier", + "src": "14184:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14174:6:31", + "nodeType": "YulIdentifier", + "src": "14174:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "13948:247:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13984:9:31", + "nodeType": "YulTypedName", + "src": "13984:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13995:7:31", + "nodeType": "YulTypedName", + "src": "13995:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14007:6:31", + "nodeType": "YulTypedName", + "src": "14007:6:31", + "type": "" + } + ], + "src": "13948:247:31" + }, + { + "body": { + "nativeSrc": "14287:161:31", + "nodeType": "YulBlock", + "src": "14287:161:31", + "statements": [ + { + "body": { + "nativeSrc": "14333:16:31", + "nodeType": "YulBlock", + "src": "14333:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14342:1:31", + "nodeType": "YulLiteral", + "src": "14342:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14345:1:31", + "nodeType": "YulLiteral", + "src": "14345:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14335:6:31", + "nodeType": "YulIdentifier", + "src": "14335:6:31" + }, + "nativeSrc": "14335:12:31", + "nodeType": "YulFunctionCall", + "src": "14335:12:31" + }, + "nativeSrc": "14335:12:31", + "nodeType": "YulExpressionStatement", + "src": "14335:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14308:7:31", + "nodeType": "YulIdentifier", + "src": "14308:7:31" + }, + { + "name": "headStart", + "nativeSrc": "14317:9:31", + "nodeType": "YulIdentifier", + "src": "14317:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14304:3:31", + "nodeType": "YulIdentifier", + "src": "14304:3:31" + }, + "nativeSrc": "14304:23:31", + "nodeType": "YulFunctionCall", + "src": "14304:23:31" + }, + { + "kind": "number", + "nativeSrc": "14329:2:31", + "nodeType": "YulLiteral", + "src": "14329:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14300:3:31", + "nodeType": "YulIdentifier", + "src": "14300:3:31" + }, + "nativeSrc": "14300:32:31", + "nodeType": "YulFunctionCall", + "src": "14300:32:31" + }, + "nativeSrc": "14297:52:31", + "nodeType": "YulIf", + "src": "14297:52:31" + }, + { + "nativeSrc": "14358:33:31", + "nodeType": "YulAssignment", + "src": "14358:33:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14381:9:31", + "nodeType": "YulIdentifier", + "src": "14381:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14368:12:31", + "nodeType": "YulIdentifier", + "src": "14368:12:31" + }, + "nativeSrc": "14368:23:31", + "nodeType": "YulFunctionCall", + "src": "14368:23:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14358:6:31", + "nodeType": "YulIdentifier", + "src": "14358:6:31" + } + ] + }, + { + "nativeSrc": "14400:42:31", + "nodeType": "YulAssignment", + "src": "14400:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14427:9:31", + "nodeType": "YulIdentifier", + "src": "14427:9:31" + }, + { + "kind": "number", + "nativeSrc": "14438:2:31", + "nodeType": "YulLiteral", + "src": "14438:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14423:3:31", + "nodeType": "YulIdentifier", + "src": "14423:3:31" + }, + "nativeSrc": "14423:18:31", + "nodeType": "YulFunctionCall", + "src": "14423:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14410:12:31", + "nodeType": "YulIdentifier", + "src": "14410:12:31" + }, + "nativeSrc": "14410:32:31", + "nodeType": "YulFunctionCall", + "src": "14410:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "14400:6:31", + "nodeType": "YulIdentifier", + "src": "14400:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nativeSrc": "14200:248:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14245:9:31", + "nodeType": "YulTypedName", + "src": "14245:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14256:7:31", + "nodeType": "YulTypedName", + "src": "14256:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14268:6:31", + "nodeType": "YulTypedName", + "src": "14268:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14276:6:31", + "nodeType": "YulTypedName", + "src": "14276:6:31", + "type": "" + } + ], + "src": "14200:248:31" + }, + { + "body": { + "nativeSrc": "14560:434:31", + "nodeType": "YulBlock", + "src": "14560:434:31", + "statements": [ + { + "body": { + "nativeSrc": "14606:16:31", + "nodeType": "YulBlock", + "src": "14606:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14615:1:31", + "nodeType": "YulLiteral", + "src": "14615:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14618:1:31", + "nodeType": "YulLiteral", + "src": "14618:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14608:6:31", + "nodeType": "YulIdentifier", + "src": "14608:6:31" + }, + "nativeSrc": "14608:12:31", + "nodeType": "YulFunctionCall", + "src": "14608:12:31" + }, + "nativeSrc": "14608:12:31", + "nodeType": "YulExpressionStatement", + "src": "14608:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14581:7:31", + "nodeType": "YulIdentifier", + "src": "14581:7:31" + }, + { + "name": "headStart", + "nativeSrc": "14590:9:31", + "nodeType": "YulIdentifier", + "src": "14590:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14577:3:31", + "nodeType": "YulIdentifier", + "src": "14577:3:31" + }, + "nativeSrc": "14577:23:31", + "nodeType": "YulFunctionCall", + "src": "14577:23:31" + }, + { + "kind": "number", + "nativeSrc": "14602:2:31", + "nodeType": "YulLiteral", + "src": "14602:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14573:3:31", + "nodeType": "YulIdentifier", + "src": "14573:3:31" + }, + "nativeSrc": "14573:32:31", + "nodeType": "YulFunctionCall", + "src": "14573:32:31" + }, + "nativeSrc": "14570:52:31", + "nodeType": "YulIf", + "src": "14570:52:31" + }, + { + "nativeSrc": "14631:37:31", + "nodeType": "YulVariableDeclaration", + "src": "14631:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14658:9:31", + "nodeType": "YulIdentifier", + "src": "14658:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14645:12:31", + "nodeType": "YulIdentifier", + "src": "14645:12:31" + }, + "nativeSrc": "14645:23:31", + "nodeType": "YulFunctionCall", + "src": "14645:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "14635:6:31", + "nodeType": "YulTypedName", + "src": "14635:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "14677:28:31", + "nodeType": "YulVariableDeclaration", + "src": "14677:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14695:2:31", + "nodeType": "YulLiteral", + "src": "14695:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "14699:1:31", + "nodeType": "YulLiteral", + "src": "14699:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14691:3:31", + "nodeType": "YulIdentifier", + "src": "14691:3:31" + }, + "nativeSrc": "14691:10:31", + "nodeType": "YulFunctionCall", + "src": "14691:10:31" + }, + { + "kind": "number", + "nativeSrc": "14703:1:31", + "nodeType": "YulLiteral", + "src": "14703:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14687:3:31", + "nodeType": "YulIdentifier", + "src": "14687:3:31" + }, + "nativeSrc": "14687:18:31", + "nodeType": "YulFunctionCall", + "src": "14687:18:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "14681:2:31", + "nodeType": "YulTypedName", + "src": "14681:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14732:16:31", + "nodeType": "YulBlock", + "src": "14732:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14741:1:31", + "nodeType": "YulLiteral", + "src": "14741:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14744:1:31", + "nodeType": "YulLiteral", + "src": "14744:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14734:6:31", + "nodeType": "YulIdentifier", + "src": "14734:6:31" + }, + "nativeSrc": "14734:12:31", + "nodeType": "YulFunctionCall", + "src": "14734:12:31" + }, + "nativeSrc": "14734:12:31", + "nodeType": "YulExpressionStatement", + "src": "14734:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "14720:6:31", + "nodeType": "YulIdentifier", + "src": "14720:6:31" + }, + { + "name": "_1", + "nativeSrc": "14728:2:31", + "nodeType": "YulIdentifier", + "src": "14728:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14717:2:31", + "nodeType": "YulIdentifier", + "src": "14717:2:31" + }, + "nativeSrc": "14717:14:31", + "nodeType": "YulFunctionCall", + "src": "14717:14:31" + }, + "nativeSrc": "14714:34:31", + "nodeType": "YulIf", + "src": "14714:34:31" + }, + { + "nativeSrc": "14757:59:31", + "nodeType": "YulAssignment", + "src": "14757:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14788:9:31", + "nodeType": "YulIdentifier", + "src": "14788:9:31" + }, + { + "name": "offset", + "nativeSrc": "14799:6:31", + "nodeType": "YulIdentifier", + "src": "14799:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14784:3:31", + "nodeType": "YulIdentifier", + "src": "14784:3:31" + }, + "nativeSrc": "14784:22:31", + "nodeType": "YulFunctionCall", + "src": "14784:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "14808:7:31", + "nodeType": "YulIdentifier", + "src": "14808:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "14767:16:31", + "nodeType": "YulIdentifier", + "src": "14767:16:31" + }, + "nativeSrc": "14767:49:31", + "nodeType": "YulFunctionCall", + "src": "14767:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14757:6:31", + "nodeType": "YulIdentifier", + "src": "14757:6:31" + } + ] + }, + { + "nativeSrc": "14825:48:31", + "nodeType": "YulVariableDeclaration", + "src": "14825:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14858:9:31", + "nodeType": "YulIdentifier", + "src": "14858:9:31" + }, + { + "kind": "number", + "nativeSrc": "14869:2:31", + "nodeType": "YulLiteral", + "src": "14869:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14854:3:31", + "nodeType": "YulIdentifier", + "src": "14854:3:31" + }, + "nativeSrc": "14854:18:31", + "nodeType": "YulFunctionCall", + "src": "14854:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14841:12:31", + "nodeType": "YulIdentifier", + "src": "14841:12:31" + }, + "nativeSrc": "14841:32:31", + "nodeType": "YulFunctionCall", + "src": "14841:32:31" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "14829:8:31", + "nodeType": "YulTypedName", + "src": "14829:8:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14902:16:31", + "nodeType": "YulBlock", + "src": "14902:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14911:1:31", + "nodeType": "YulLiteral", + "src": "14911:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14914:1:31", + "nodeType": "YulLiteral", + "src": "14914:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14904:6:31", + "nodeType": "YulIdentifier", + "src": "14904:6:31" + }, + "nativeSrc": "14904:12:31", + "nodeType": "YulFunctionCall", + "src": "14904:12:31" + }, + "nativeSrc": "14904:12:31", + "nodeType": "YulExpressionStatement", + "src": "14904:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "14888:8:31", + "nodeType": "YulIdentifier", + "src": "14888:8:31" + }, + { + "name": "_1", + "nativeSrc": "14898:2:31", + "nodeType": "YulIdentifier", + "src": "14898:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14885:2:31", + "nodeType": "YulIdentifier", + "src": "14885:2:31" + }, + "nativeSrc": "14885:16:31", + "nodeType": "YulFunctionCall", + "src": "14885:16:31" + }, + "nativeSrc": "14882:36:31", + "nodeType": "YulIf", + "src": "14882:36:31" + }, + { + "nativeSrc": "14927:61:31", + "nodeType": "YulAssignment", + "src": "14927:61:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14958:9:31", + "nodeType": "YulIdentifier", + "src": "14958:9:31" + }, + { + "name": "offset_1", + "nativeSrc": "14969:8:31", + "nodeType": "YulIdentifier", + "src": "14969:8:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14954:3:31", + "nodeType": "YulIdentifier", + "src": "14954:3:31" + }, + "nativeSrc": "14954:24:31", + "nodeType": "YulFunctionCall", + "src": "14954:24:31" + }, + { + "name": "dataEnd", + "nativeSrc": "14980:7:31", + "nodeType": "YulIdentifier", + "src": "14980:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "14937:16:31", + "nodeType": "YulIdentifier", + "src": "14937:16:31" + }, + "nativeSrc": "14937:51:31", + "nodeType": "YulFunctionCall", + "src": "14937:51:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "14927:6:31", + "nodeType": "YulIdentifier", + "src": "14927:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nativeSrc": "14453:541:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14518:9:31", + "nodeType": "YulTypedName", + "src": "14518:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14529:7:31", + "nodeType": "YulTypedName", + "src": "14529:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14541:6:31", + "nodeType": "YulTypedName", + "src": "14541:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14549:6:31", + "nodeType": "YulTypedName", + "src": "14549:6:31", + "type": "" + } + ], + "src": "14453:541:31" + }, + { + "body": { + "nativeSrc": "15057:797:31", + "nodeType": "YulBlock", + "src": "15057:797:31", + "statements": [ + { + "nativeSrc": "15067:26:31", + "nodeType": "YulVariableDeclaration", + "src": "15067:26:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15083:3:31", + "nodeType": "YulIdentifier", + "src": "15083:3:31" + }, + { + "kind": "number", + "nativeSrc": "15088:4:31", + "nodeType": "YulLiteral", + "src": "15088:4:31", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15079:3:31", + "nodeType": "YulIdentifier", + "src": "15079:3:31" + }, + "nativeSrc": "15079:14:31", + "nodeType": "YulFunctionCall", + "src": "15079:14:31" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "15071:4:31", + "nodeType": "YulTypedName", + "src": "15071:4:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15109:3:31", + "nodeType": "YulIdentifier", + "src": "15109:3:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15120:5:31", + "nodeType": "YulIdentifier", + "src": "15120:5:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15114:5:31", + "nodeType": "YulIdentifier", + "src": "15114:5:31" + }, + "nativeSrc": "15114:12:31", + "nodeType": "YulFunctionCall", + "src": "15114:12:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15102:6:31", + "nodeType": "YulIdentifier", + "src": "15102:6:31" + }, + "nativeSrc": "15102:25:31", + "nodeType": "YulFunctionCall", + "src": "15102:25:31" + }, + "nativeSrc": "15102:25:31", + "nodeType": "YulExpressionStatement", + "src": "15102:25:31" + }, + { + "nativeSrc": "15136:14:31", + "nodeType": "YulVariableDeclaration", + "src": "15136:14:31", + "value": { + "kind": "number", + "nativeSrc": "15146:4:31", + "nodeType": "YulLiteral", + "src": "15146:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "15140:2:31", + "nodeType": "YulTypedName", + "src": "15140:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15170:3:31", + "nodeType": "YulIdentifier", + "src": "15170:3:31" + }, + { + "kind": "number", + "nativeSrc": "15175:4:31", + "nodeType": "YulLiteral", + "src": "15175:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15166:3:31", + "nodeType": "YulIdentifier", + "src": "15166:3:31" + }, + "nativeSrc": "15166:14:31", + "nodeType": "YulFunctionCall", + "src": "15166:14:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15206:5:31", + "nodeType": "YulIdentifier", + "src": "15206:5:31" + }, + { + "kind": "number", + "nativeSrc": "15213:4:31", + "nodeType": "YulLiteral", + "src": "15213:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15202:3:31", + "nodeType": "YulIdentifier", + "src": "15202:3:31" + }, + "nativeSrc": "15202:16:31", + "nodeType": "YulFunctionCall", + "src": "15202:16:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15196:5:31", + "nodeType": "YulIdentifier", + "src": "15196:5:31" + }, + "nativeSrc": "15196:23:31", + "nodeType": "YulFunctionCall", + "src": "15196:23:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15189:6:31", + "nodeType": "YulIdentifier", + "src": "15189:6:31" + }, + "nativeSrc": "15189:31:31", + "nodeType": "YulFunctionCall", + "src": "15189:31:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15182:6:31", + "nodeType": "YulIdentifier", + "src": "15182:6:31" + }, + "nativeSrc": "15182:39:31", + "nodeType": "YulFunctionCall", + "src": "15182:39:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15159:6:31", + "nodeType": "YulIdentifier", + "src": "15159:6:31" + }, + "nativeSrc": "15159:63:31", + "nodeType": "YulFunctionCall", + "src": "15159:63:31" + }, + "nativeSrc": "15159:63:31", + "nodeType": "YulExpressionStatement", + "src": "15159:63:31" + }, + { + "nativeSrc": "15231:43:31", + "nodeType": "YulVariableDeclaration", + "src": "15231:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15261:5:31", + "nodeType": "YulIdentifier", + "src": "15261:5:31" + }, + { + "kind": "number", + "nativeSrc": "15268:4:31", + "nodeType": "YulLiteral", + "src": "15268:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15257:3:31", + "nodeType": "YulIdentifier", + "src": "15257:3:31" + }, + "nativeSrc": "15257:16:31", + "nodeType": "YulFunctionCall", + "src": "15257:16:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15251:5:31", + "nodeType": "YulIdentifier", + "src": "15251:5:31" + }, + "nativeSrc": "15251:23:31", + "nodeType": "YulFunctionCall", + "src": "15251:23:31" + }, + "variables": [ + { + "name": "memberValue0", + "nativeSrc": "15235:12:31", + "nodeType": "YulTypedName", + "src": "15235:12:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15294:3:31", + "nodeType": "YulIdentifier", + "src": "15294:3:31" + }, + { + "kind": "number", + "nativeSrc": "15299:4:31", + "nodeType": "YulLiteral", + "src": "15299:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15290:3:31", + "nodeType": "YulIdentifier", + "src": "15290:3:31" + }, + "nativeSrc": "15290:14:31", + "nodeType": "YulFunctionCall", + "src": "15290:14:31" + }, + { + "kind": "number", + "nativeSrc": "15306:4:31", + "nodeType": "YulLiteral", + "src": "15306:4:31", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15283:6:31", + "nodeType": "YulIdentifier", + "src": "15283:6:31" + }, + "nativeSrc": "15283:28:31", + "nodeType": "YulFunctionCall", + "src": "15283:28:31" + }, + "nativeSrc": "15283:28:31", + "nodeType": "YulExpressionStatement", + "src": "15283:28:31" + }, + { + "nativeSrc": "15320:17:31", + "nodeType": "YulVariableDeclaration", + "src": "15320:17:31", + "value": { + "name": "tail", + "nativeSrc": "15333:4:31", + "nodeType": "YulIdentifier", + "src": "15333:4:31" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "15324:5:31", + "nodeType": "YulTypedName", + "src": "15324:5:31", + "type": "" + } + ] + }, + { + "nativeSrc": "15346:33:31", + "nodeType": "YulVariableDeclaration", + "src": "15346:33:31", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15366:12:31", + "nodeType": "YulIdentifier", + "src": "15366:12:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15360:5:31", + "nodeType": "YulIdentifier", + "src": "15360:5:31" + }, + "nativeSrc": "15360:19:31", + "nodeType": "YulFunctionCall", + "src": "15360:19:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "15350:6:31", + "nodeType": "YulTypedName", + "src": "15350:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "15395:4:31", + "nodeType": "YulIdentifier", + "src": "15395:4:31" + }, + { + "name": "length", + "nativeSrc": "15401:6:31", + "nodeType": "YulIdentifier", + "src": "15401:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15388:6:31", + "nodeType": "YulIdentifier", + "src": "15388:6:31" + }, + "nativeSrc": "15388:20:31", + "nodeType": "YulFunctionCall", + "src": "15388:20:31" + }, + "nativeSrc": "15388:20:31", + "nodeType": "YulExpressionStatement", + "src": "15388:20:31" + }, + { + "nativeSrc": "15417:22:31", + "nodeType": "YulAssignment", + "src": "15417:22:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15430:3:31", + "nodeType": "YulIdentifier", + "src": "15430:3:31" + }, + { + "kind": "number", + "nativeSrc": "15435:3:31", + "nodeType": "YulLiteral", + "src": "15435:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15426:3:31", + "nodeType": "YulIdentifier", + "src": "15426:3:31" + }, + "nativeSrc": "15426:13:31", + "nodeType": "YulFunctionCall", + "src": "15426:13:31" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15417:5:31", + "nodeType": "YulIdentifier", + "src": "15417:5:31" + } + ] + }, + { + "nativeSrc": "15448:48:31", + "nodeType": "YulVariableDeclaration", + "src": "15448:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15470:3:31", + "nodeType": "YulIdentifier", + "src": "15470:3:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15479:1:31", + "nodeType": "YulLiteral", + "src": "15479:1:31", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "15482:6:31", + "nodeType": "YulIdentifier", + "src": "15482:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15475:3:31", + "nodeType": "YulIdentifier", + "src": "15475:3:31" + }, + "nativeSrc": "15475:14:31", + "nodeType": "YulFunctionCall", + "src": "15475:14:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15466:3:31", + "nodeType": "YulIdentifier", + "src": "15466:3:31" + }, + "nativeSrc": "15466:24:31", + "nodeType": "YulFunctionCall", + "src": "15466:24:31" + }, + { + "kind": "number", + "nativeSrc": "15492:3:31", + "nodeType": "YulLiteral", + "src": "15492:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15462:3:31", + "nodeType": "YulIdentifier", + "src": "15462:3:31" + }, + "nativeSrc": "15462:34:31", + "nodeType": "YulFunctionCall", + "src": "15462:34:31" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "15452:6:31", + "nodeType": "YulTypedName", + "src": "15452:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "15505:37:31", + "nodeType": "YulVariableDeclaration", + "src": "15505:37:31", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15523:12:31", + "nodeType": "YulIdentifier", + "src": "15523:12:31" + }, + { + "kind": "number", + "nativeSrc": "15537:4:31", + "nodeType": "YulLiteral", + "src": "15537:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15519:3:31", + "nodeType": "YulIdentifier", + "src": "15519:3:31" + }, + "nativeSrc": "15519:23:31", + "nodeType": "YulFunctionCall", + "src": "15519:23:31" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "15509:6:31", + "nodeType": "YulTypedName", + "src": "15509:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "15551:10:31", + "nodeType": "YulVariableDeclaration", + "src": "15551:10:31", + "value": { + "kind": "number", + "nativeSrc": "15560:1:31", + "nodeType": "YulLiteral", + "src": "15560:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "15555:1:31", + "nodeType": "YulTypedName", + "src": "15555:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15619:207:31", + "nodeType": "YulBlock", + "src": "15619:207:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15640:5:31", + "nodeType": "YulIdentifier", + "src": "15640:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "15655:6:31", + "nodeType": "YulIdentifier", + "src": "15655:6:31" + }, + { + "name": "pos", + "nativeSrc": "15663:3:31", + "nodeType": "YulIdentifier", + "src": "15663:3:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15651:3:31", + "nodeType": "YulIdentifier", + "src": "15651:3:31" + }, + "nativeSrc": "15651:16:31", + "nodeType": "YulFunctionCall", + "src": "15651:16:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15673:3:31", + "nodeType": "YulLiteral", + "src": "15673:3:31", + "type": "", + "value": "127" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15669:3:31", + "nodeType": "YulIdentifier", + "src": "15669:3:31" + }, + "nativeSrc": "15669:8:31", + "nodeType": "YulFunctionCall", + "src": "15669:8:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15647:3:31", + "nodeType": "YulIdentifier", + "src": "15647:3:31" + }, + "nativeSrc": "15647:31:31", + "nodeType": "YulFunctionCall", + "src": "15647:31:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15633:6:31", + "nodeType": "YulIdentifier", + "src": "15633:6:31" + }, + "nativeSrc": "15633:46:31", + "nodeType": "YulFunctionCall", + "src": "15633:46:31" + }, + "nativeSrc": "15633:46:31", + "nodeType": "YulExpressionStatement", + "src": "15633:46:31" + }, + { + "nativeSrc": "15692:50:31", + "nodeType": "YulAssignment", + "src": "15692:50:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15726:6:31", + "nodeType": "YulIdentifier", + "src": "15726:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15720:5:31", + "nodeType": "YulIdentifier", + "src": "15720:5:31" + }, + "nativeSrc": "15720:13:31", + "nodeType": "YulFunctionCall", + "src": "15720:13:31" + }, + { + "name": "tail_1", + "nativeSrc": "15735:6:31", + "nodeType": "YulIdentifier", + "src": "15735:6:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "15702:17:31", + "nodeType": "YulIdentifier", + "src": "15702:17:31" + }, + "nativeSrc": "15702:40:31", + "nodeType": "YulFunctionCall", + "src": "15702:40:31" + }, + "variableNames": [ + { + "name": "tail_1", + "nativeSrc": "15692:6:31", + "nodeType": "YulIdentifier", + "src": "15692:6:31" + } + ] + }, + { + "nativeSrc": "15755:25:31", + "nodeType": "YulAssignment", + "src": "15755:25:31", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15769:6:31", + "nodeType": "YulIdentifier", + "src": "15769:6:31" + }, + { + "name": "_1", + "nativeSrc": "15777:2:31", + "nodeType": "YulIdentifier", + "src": "15777:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15765:3:31", + "nodeType": "YulIdentifier", + "src": "15765:3:31" + }, + "nativeSrc": "15765:15:31", + "nodeType": "YulFunctionCall", + "src": "15765:15:31" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "15755:6:31", + "nodeType": "YulIdentifier", + "src": "15755:6:31" + } + ] + }, + { + "nativeSrc": "15793:23:31", + "nodeType": "YulAssignment", + "src": "15793:23:31", + "value": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15806:5:31", + "nodeType": "YulIdentifier", + "src": "15806:5:31" + }, + { + "name": "_1", + "nativeSrc": "15813:2:31", + "nodeType": "YulIdentifier", + "src": "15813:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15802:3:31", + "nodeType": "YulIdentifier", + "src": "15802:3:31" + }, + "nativeSrc": "15802:14:31", + "nodeType": "YulFunctionCall", + "src": "15802:14:31" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15793:5:31", + "nodeType": "YulIdentifier", + "src": "15793:5:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15581:1:31", + "nodeType": "YulIdentifier", + "src": "15581:1:31" + }, + { + "name": "length", + "nativeSrc": "15584:6:31", + "nodeType": "YulIdentifier", + "src": "15584:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "15578:2:31", + "nodeType": "YulIdentifier", + "src": "15578:2:31" + }, + "nativeSrc": "15578:13:31", + "nodeType": "YulFunctionCall", + "src": "15578:13:31" + }, + "nativeSrc": "15570:256:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15592:18:31", + "nodeType": "YulBlock", + "src": "15592:18:31", + "statements": [ + { + "nativeSrc": "15594:14:31", + "nodeType": "YulAssignment", + "src": "15594:14:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15603:1:31", + "nodeType": "YulIdentifier", + "src": "15603:1:31" + }, + { + "kind": "number", + "nativeSrc": "15606:1:31", + "nodeType": "YulLiteral", + "src": "15606:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15599:3:31", + "nodeType": "YulIdentifier", + "src": "15599:3:31" + }, + "nativeSrc": "15599:9:31", + "nodeType": "YulFunctionCall", + "src": "15599:9:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "15594:1:31", + "nodeType": "YulIdentifier", + "src": "15594:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "15574:3:31", + "nodeType": "YulBlock", + "src": "15574:3:31", + "statements": [] + }, + "src": "15570:256:31" + }, + { + "nativeSrc": "15835:13:31", + "nodeType": "YulAssignment", + "src": "15835:13:31", + "value": { + "name": "tail_1", + "nativeSrc": "15842:6:31", + "nodeType": "YulIdentifier", + "src": "15842:6:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "15835:3:31", + "nodeType": "YulIdentifier", + "src": "15835:3:31" + } + ] + } + ] + }, + "name": "abi_encode_struct_Service", + "nativeSrc": "14999:855:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "15034:5:31", + "nodeType": "YulTypedName", + "src": "15034:5:31", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "15041:3:31", + "nodeType": "YulTypedName", + "src": "15041:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "15049:3:31", + "nodeType": "YulTypedName", + "src": "15049:3:31", + "type": "" + } + ], + "src": "14999:855:31" + }, + { + "body": { + "nativeSrc": "16158:727:31", + "nodeType": "YulBlock", + "src": "16158:727:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16175:9:31", + "nodeType": "YulIdentifier", + "src": "16175:9:31" + }, + { + "kind": "number", + "nativeSrc": "16186:2:31", + "nodeType": "YulLiteral", + "src": "16186:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16168:6:31", + "nodeType": "YulIdentifier", + "src": "16168:6:31" + }, + "nativeSrc": "16168:21:31", + "nodeType": "YulFunctionCall", + "src": "16168:21:31" + }, + "nativeSrc": "16168:21:31", + "nodeType": "YulExpressionStatement", + "src": "16168:21:31" + }, + { + "nativeSrc": "16198:69:31", + "nodeType": "YulVariableDeclaration", + "src": "16198:69:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "16240:6:31", + "nodeType": "YulIdentifier", + "src": "16240:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16252:9:31", + "nodeType": "YulIdentifier", + "src": "16252:9:31" + }, + { + "kind": "number", + "nativeSrc": "16263:2:31", + "nodeType": "YulLiteral", + "src": "16263:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16248:3:31", + "nodeType": "YulIdentifier", + "src": "16248:3:31" + }, + "nativeSrc": "16248:18:31", + "nodeType": "YulFunctionCall", + "src": "16248:18:31" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "16212:27:31", + "nodeType": "YulIdentifier", + "src": "16212:27:31" + }, + "nativeSrc": "16212:55:31", + "nodeType": "YulFunctionCall", + "src": "16212:55:31" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "16202:6:31", + "nodeType": "YulTypedName", + "src": "16202:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "16276:12:31", + "nodeType": "YulVariableDeclaration", + "src": "16276:12:31", + "value": { + "kind": "number", + "nativeSrc": "16286:2:31", + "nodeType": "YulLiteral", + "src": "16286:2:31", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "16280:2:31", + "nodeType": "YulTypedName", + "src": "16280:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16308:9:31", + "nodeType": "YulIdentifier", + "src": "16308:9:31" + }, + { + "name": "_1", + "nativeSrc": "16319:2:31", + "nodeType": "YulIdentifier", + "src": "16319:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16304:3:31", + "nodeType": "YulIdentifier", + "src": "16304:3:31" + }, + "nativeSrc": "16304:18:31", + "nodeType": "YulFunctionCall", + "src": "16304:18:31" + }, + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16328:6:31", + "nodeType": "YulIdentifier", + "src": "16328:6:31" + }, + { + "name": "headStart", + "nativeSrc": "16336:9:31", + "nodeType": "YulIdentifier", + "src": "16336:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16324:3:31", + "nodeType": "YulIdentifier", + "src": "16324:3:31" + }, + "nativeSrc": "16324:22:31", + "nodeType": "YulFunctionCall", + "src": "16324:22:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16297:6:31", + "nodeType": "YulIdentifier", + "src": "16297:6:31" + }, + "nativeSrc": "16297:50:31", + "nodeType": "YulFunctionCall", + "src": "16297:50:31" + }, + "nativeSrc": "16297:50:31", + "nodeType": "YulExpressionStatement", + "src": "16297:50:31" + }, + { + "nativeSrc": "16356:17:31", + "nodeType": "YulVariableDeclaration", + "src": "16356:17:31", + "value": { + "name": "tail_1", + "nativeSrc": "16367:6:31", + "nodeType": "YulIdentifier", + "src": "16367:6:31" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "16360:3:31", + "nodeType": "YulTypedName", + "src": "16360:3:31", + "type": "" + } + ] + }, + { + "nativeSrc": "16382:27:31", + "nodeType": "YulVariableDeclaration", + "src": "16382:27:31", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16402:6:31", + "nodeType": "YulIdentifier", + "src": "16402:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16396:5:31", + "nodeType": "YulIdentifier", + "src": "16396:5:31" + }, + "nativeSrc": "16396:13:31", + "nodeType": "YulFunctionCall", + "src": "16396:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "16386:6:31", + "nodeType": "YulTypedName", + "src": "16386:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16425:6:31", + "nodeType": "YulIdentifier", + "src": "16425:6:31" + }, + { + "name": "length", + "nativeSrc": "16433:6:31", + "nodeType": "YulIdentifier", + "src": "16433:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16418:6:31", + "nodeType": "YulIdentifier", + "src": "16418:6:31" + }, + "nativeSrc": "16418:22:31", + "nodeType": "YulFunctionCall", + "src": "16418:22:31" + }, + "nativeSrc": "16418:22:31", + "nodeType": "YulExpressionStatement", + "src": "16418:22:31" + }, + { + "nativeSrc": "16449:22:31", + "nodeType": "YulAssignment", + "src": "16449:22:31", + "value": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16460:6:31", + "nodeType": "YulIdentifier", + "src": "16460:6:31" + }, + { + "name": "_1", + "nativeSrc": "16468:2:31", + "nodeType": "YulIdentifier", + "src": "16468:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16456:3:31", + "nodeType": "YulIdentifier", + "src": "16456:3:31" + }, + "nativeSrc": "16456:15:31", + "nodeType": "YulFunctionCall", + "src": "16456:15:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16449:3:31", + "nodeType": "YulIdentifier", + "src": "16449:3:31" + } + ] + }, + { + "nativeSrc": "16480:50:31", + "nodeType": "YulVariableDeclaration", + "src": "16480:50:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16502:6:31", + "nodeType": "YulIdentifier", + "src": "16502:6:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16514:1:31", + "nodeType": "YulLiteral", + "src": "16514:1:31", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "16517:6:31", + "nodeType": "YulIdentifier", + "src": "16517:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16510:3:31", + "nodeType": "YulIdentifier", + "src": "16510:3:31" + }, + "nativeSrc": "16510:14:31", + "nodeType": "YulFunctionCall", + "src": "16510:14:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16498:3:31", + "nodeType": "YulIdentifier", + "src": "16498:3:31" + }, + "nativeSrc": "16498:27:31", + "nodeType": "YulFunctionCall", + "src": "16498:27:31" + }, + { + "name": "_1", + "nativeSrc": "16527:2:31", + "nodeType": "YulIdentifier", + "src": "16527:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16494:3:31", + "nodeType": "YulIdentifier", + "src": "16494:3:31" + }, + "nativeSrc": "16494:36:31", + "nodeType": "YulFunctionCall", + "src": "16494:36:31" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "16484:6:31", + "nodeType": "YulTypedName", + "src": "16484:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "16539:29:31", + "nodeType": "YulVariableDeclaration", + "src": "16539:29:31", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16557:6:31", + "nodeType": "YulIdentifier", + "src": "16557:6:31" + }, + { + "name": "_1", + "nativeSrc": "16565:2:31", + "nodeType": "YulIdentifier", + "src": "16565:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16553:3:31", + "nodeType": "YulIdentifier", + "src": "16553:3:31" + }, + "nativeSrc": "16553:15:31", + "nodeType": "YulFunctionCall", + "src": "16553:15:31" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "16543:6:31", + "nodeType": "YulTypedName", + "src": "16543:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "16577:10:31", + "nodeType": "YulVariableDeclaration", + "src": "16577:10:31", + "value": { + "kind": "number", + "nativeSrc": "16586:1:31", + "nodeType": "YulLiteral", + "src": "16586:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "16581:1:31", + "nodeType": "YulTypedName", + "src": "16581:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16645:211:31", + "nodeType": "YulBlock", + "src": "16645:211:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16666:3:31", + "nodeType": "YulIdentifier", + "src": "16666:3:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "16679:6:31", + "nodeType": "YulIdentifier", + "src": "16679:6:31" + }, + { + "name": "tail_1", + "nativeSrc": "16687:6:31", + "nodeType": "YulIdentifier", + "src": "16687:6:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16675:3:31", + "nodeType": "YulIdentifier", + "src": "16675:3:31" + }, + "nativeSrc": "16675:19:31", + "nodeType": "YulFunctionCall", + "src": "16675:19:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16700:2:31", + "nodeType": "YulLiteral", + "src": "16700:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16696:3:31", + "nodeType": "YulIdentifier", + "src": "16696:3:31" + }, + "nativeSrc": "16696:7:31", + "nodeType": "YulFunctionCall", + "src": "16696:7:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16671:3:31", + "nodeType": "YulIdentifier", + "src": "16671:3:31" + }, + "nativeSrc": "16671:33:31", + "nodeType": "YulFunctionCall", + "src": "16671:33:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16659:6:31", + "nodeType": "YulIdentifier", + "src": "16659:6:31" + }, + "nativeSrc": "16659:46:31", + "nodeType": "YulFunctionCall", + "src": "16659:46:31" + }, + "nativeSrc": "16659:46:31", + "nodeType": "YulExpressionStatement", + "src": "16659:46:31" + }, + { + "nativeSrc": "16718:58:31", + "nodeType": "YulAssignment", + "src": "16718:58:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16760:6:31", + "nodeType": "YulIdentifier", + "src": "16760:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16754:5:31", + "nodeType": "YulIdentifier", + "src": "16754:5:31" + }, + "nativeSrc": "16754:13:31", + "nodeType": "YulFunctionCall", + "src": "16754:13:31" + }, + { + "name": "tail_2", + "nativeSrc": "16769:6:31", + "nodeType": "YulIdentifier", + "src": "16769:6:31" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "16728:25:31", + "nodeType": "YulIdentifier", + "src": "16728:25:31" + }, + "nativeSrc": "16728:48:31", + "nodeType": "YulFunctionCall", + "src": "16728:48:31" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "16718:6:31", + "nodeType": "YulIdentifier", + "src": "16718:6:31" + } + ] + }, + { + "nativeSrc": "16789:25:31", + "nodeType": "YulAssignment", + "src": "16789:25:31", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16803:6:31", + "nodeType": "YulIdentifier", + "src": "16803:6:31" + }, + { + "name": "_1", + "nativeSrc": "16811:2:31", + "nodeType": "YulIdentifier", + "src": "16811:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16799:3:31", + "nodeType": "YulIdentifier", + "src": "16799:3:31" + }, + "nativeSrc": "16799:15:31", + "nodeType": "YulFunctionCall", + "src": "16799:15:31" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "16789:6:31", + "nodeType": "YulIdentifier", + "src": "16789:6:31" + } + ] + }, + { + "nativeSrc": "16827:19:31", + "nodeType": "YulAssignment", + "src": "16827:19:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16838:3:31", + "nodeType": "YulIdentifier", + "src": "16838:3:31" + }, + { + "name": "_1", + "nativeSrc": "16843:2:31", + "nodeType": "YulIdentifier", + "src": "16843:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16834:3:31", + "nodeType": "YulIdentifier", + "src": "16834:3:31" + }, + "nativeSrc": "16834:12:31", + "nodeType": "YulFunctionCall", + "src": "16834:12:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16827:3:31", + "nodeType": "YulIdentifier", + "src": "16827:3:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16607:1:31", + "nodeType": "YulIdentifier", + "src": "16607:1:31" + }, + { + "name": "length", + "nativeSrc": "16610:6:31", + "nodeType": "YulIdentifier", + "src": "16610:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "16604:2:31", + "nodeType": "YulIdentifier", + "src": "16604:2:31" + }, + "nativeSrc": "16604:13:31", + "nodeType": "YulFunctionCall", + "src": "16604:13:31" + }, + "nativeSrc": "16596:260:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16618:18:31", + "nodeType": "YulBlock", + "src": "16618:18:31", + "statements": [ + { + "nativeSrc": "16620:14:31", + "nodeType": "YulAssignment", + "src": "16620:14:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16629:1:31", + "nodeType": "YulIdentifier", + "src": "16629:1:31" + }, + { + "kind": "number", + "nativeSrc": "16632:1:31", + "nodeType": "YulLiteral", + "src": "16632:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16625:3:31", + "nodeType": "YulIdentifier", + "src": "16625:3:31" + }, + "nativeSrc": "16625:9:31", + "nodeType": "YulFunctionCall", + "src": "16625:9:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "16620:1:31", + "nodeType": "YulIdentifier", + "src": "16620:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "16600:3:31", + "nodeType": "YulBlock", + "src": "16600:3:31", + "statements": [] + }, + "src": "16596:260:31" + }, + { + "nativeSrc": "16865:14:31", + "nodeType": "YulAssignment", + "src": "16865:14:31", + "value": { + "name": "tail_2", + "nativeSrc": "16873:6:31", + "nodeType": "YulIdentifier", + "src": "16873:6:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16865:4:31", + "nodeType": "YulIdentifier", + "src": "16865:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "15859:1026:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16119:9:31", + "nodeType": "YulTypedName", + "src": "16119:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16130:6:31", + "nodeType": "YulTypedName", + "src": "16130:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16138:6:31", + "nodeType": "YulTypedName", + "src": "16138:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16149:4:31", + "nodeType": "YulTypedName", + "src": "16149:4:31", + "type": "" + } + ], + "src": "15859:1026:31" + }, + { + "body": { + "nativeSrc": "17009:99:31", + "nodeType": "YulBlock", + "src": "17009:99:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17026:9:31", + "nodeType": "YulIdentifier", + "src": "17026:9:31" + }, + { + "kind": "number", + "nativeSrc": "17037:2:31", + "nodeType": "YulLiteral", + "src": "17037:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17019:6:31", + "nodeType": "YulIdentifier", + "src": "17019:6:31" + }, + "nativeSrc": "17019:21:31", + "nodeType": "YulFunctionCall", + "src": "17019:21:31" + }, + "nativeSrc": "17019:21:31", + "nodeType": "YulExpressionStatement", + "src": "17019:21:31" + }, + { + "nativeSrc": "17049:53:31", + "nodeType": "YulAssignment", + "src": "17049:53:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17075:6:31", + "nodeType": "YulIdentifier", + "src": "17075:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17087:9:31", + "nodeType": "YulIdentifier", + "src": "17087:9:31" + }, + { + "kind": "number", + "nativeSrc": "17098:2:31", + "nodeType": "YulLiteral", + "src": "17098:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17083:3:31", + "nodeType": "YulIdentifier", + "src": "17083:3:31" + }, + "nativeSrc": "17083:18:31", + "nodeType": "YulFunctionCall", + "src": "17083:18:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "17057:17:31", + "nodeType": "YulIdentifier", + "src": "17057:17:31" + }, + "nativeSrc": "17057:45:31", + "nodeType": "YulFunctionCall", + "src": "17057:45:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17049:4:31", + "nodeType": "YulIdentifier", + "src": "17049:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "16890:218:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16978:9:31", + "nodeType": "YulTypedName", + "src": "16978:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16989:6:31", + "nodeType": "YulTypedName", + "src": "16989:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17000:4:31", + "nodeType": "YulTypedName", + "src": "17000:4:31", + "type": "" + } + ], + "src": "16890:218:31" + }, + { + "body": { + "nativeSrc": "17200:161:31", + "nodeType": "YulBlock", + "src": "17200:161:31", + "statements": [ + { + "body": { + "nativeSrc": "17246:16:31", + "nodeType": "YulBlock", + "src": "17246:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17255:1:31", + "nodeType": "YulLiteral", + "src": "17255:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17258:1:31", + "nodeType": "YulLiteral", + "src": "17258:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17248:6:31", + "nodeType": "YulIdentifier", + "src": "17248:6:31" + }, + "nativeSrc": "17248:12:31", + "nodeType": "YulFunctionCall", + "src": "17248:12:31" + }, + "nativeSrc": "17248:12:31", + "nodeType": "YulExpressionStatement", + "src": "17248:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17221:7:31", + "nodeType": "YulIdentifier", + "src": "17221:7:31" + }, + { + "name": "headStart", + "nativeSrc": "17230:9:31", + "nodeType": "YulIdentifier", + "src": "17230:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17217:3:31", + "nodeType": "YulIdentifier", + "src": "17217:3:31" + }, + "nativeSrc": "17217:23:31", + "nodeType": "YulFunctionCall", + "src": "17217:23:31" + }, + { + "kind": "number", + "nativeSrc": "17242:2:31", + "nodeType": "YulLiteral", + "src": "17242:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17213:3:31", + "nodeType": "YulIdentifier", + "src": "17213:3:31" + }, + "nativeSrc": "17213:32:31", + "nodeType": "YulFunctionCall", + "src": "17213:32:31" + }, + "nativeSrc": "17210:52:31", + "nodeType": "YulIf", + "src": "17210:52:31" + }, + { + "nativeSrc": "17271:33:31", + "nodeType": "YulAssignment", + "src": "17271:33:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17294:9:31", + "nodeType": "YulIdentifier", + "src": "17294:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17281:12:31", + "nodeType": "YulIdentifier", + "src": "17281:12:31" + }, + "nativeSrc": "17281:23:31", + "nodeType": "YulFunctionCall", + "src": "17281:23:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17271:6:31", + "nodeType": "YulIdentifier", + "src": "17271:6:31" + } + ] + }, + { + "nativeSrc": "17313:42:31", + "nodeType": "YulAssignment", + "src": "17313:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17340:9:31", + "nodeType": "YulIdentifier", + "src": "17340:9:31" + }, + { + "kind": "number", + "nativeSrc": "17351:2:31", + "nodeType": "YulLiteral", + "src": "17351:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17336:3:31", + "nodeType": "YulIdentifier", + "src": "17336:3:31" + }, + "nativeSrc": "17336:18:31", + "nodeType": "YulFunctionCall", + "src": "17336:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17323:12:31", + "nodeType": "YulIdentifier", + "src": "17323:12:31" + }, + "nativeSrc": "17323:32:31", + "nodeType": "YulFunctionCall", + "src": "17323:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17313:6:31", + "nodeType": "YulIdentifier", + "src": "17313:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "17113:248:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17158:9:31", + "nodeType": "YulTypedName", + "src": "17158:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17169:7:31", + "nodeType": "YulTypedName", + "src": "17169:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17181:6:31", + "nodeType": "YulTypedName", + "src": "17181:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17189:6:31", + "nodeType": "YulTypedName", + "src": "17189:6:31", + "type": "" + } + ], + "src": "17113:248:31" + }, + { + "body": { + "nativeSrc": "17453:301:31", + "nodeType": "YulBlock", + "src": "17453:301:31", + "statements": [ + { + "body": { + "nativeSrc": "17499:16:31", + "nodeType": "YulBlock", + "src": "17499:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17508:1:31", + "nodeType": "YulLiteral", + "src": "17508:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17511:1:31", + "nodeType": "YulLiteral", + "src": "17511:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17501:6:31", + "nodeType": "YulIdentifier", + "src": "17501:6:31" + }, + "nativeSrc": "17501:12:31", + "nodeType": "YulFunctionCall", + "src": "17501:12:31" + }, + "nativeSrc": "17501:12:31", + "nodeType": "YulExpressionStatement", + "src": "17501:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17474:7:31", + "nodeType": "YulIdentifier", + "src": "17474:7:31" + }, + { + "name": "headStart", + "nativeSrc": "17483:9:31", + "nodeType": "YulIdentifier", + "src": "17483:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17470:3:31", + "nodeType": "YulIdentifier", + "src": "17470:3:31" + }, + "nativeSrc": "17470:23:31", + "nodeType": "YulFunctionCall", + "src": "17470:23:31" + }, + { + "kind": "number", + "nativeSrc": "17495:2:31", + "nodeType": "YulLiteral", + "src": "17495:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17466:3:31", + "nodeType": "YulIdentifier", + "src": "17466:3:31" + }, + "nativeSrc": "17466:32:31", + "nodeType": "YulFunctionCall", + "src": "17466:32:31" + }, + "nativeSrc": "17463:52:31", + "nodeType": "YulIf", + "src": "17463:52:31" + }, + { + "nativeSrc": "17524:36:31", + "nodeType": "YulVariableDeclaration", + "src": "17524:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17550:9:31", + "nodeType": "YulIdentifier", + "src": "17550:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17537:12:31", + "nodeType": "YulIdentifier", + "src": "17537:12:31" + }, + "nativeSrc": "17537:23:31", + "nodeType": "YulFunctionCall", + "src": "17537:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "17528:5:31", + "nodeType": "YulTypedName", + "src": "17528:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "17594:5:31", + "nodeType": "YulIdentifier", + "src": "17594:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17569:24:31", + "nodeType": "YulIdentifier", + "src": "17569:24:31" + }, + "nativeSrc": "17569:31:31", + "nodeType": "YulFunctionCall", + "src": "17569:31:31" + }, + "nativeSrc": "17569:31:31", + "nodeType": "YulExpressionStatement", + "src": "17569:31:31" + }, + { + "nativeSrc": "17609:15:31", + "nodeType": "YulAssignment", + "src": "17609:15:31", + "value": { + "name": "value", + "nativeSrc": "17619:5:31", + "nodeType": "YulIdentifier", + "src": "17619:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17609:6:31", + "nodeType": "YulIdentifier", + "src": "17609:6:31" + } + ] + }, + { + "nativeSrc": "17633:47:31", + "nodeType": "YulVariableDeclaration", + "src": "17633:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17665:9:31", + "nodeType": "YulIdentifier", + "src": "17665:9:31" + }, + { + "kind": "number", + "nativeSrc": "17676:2:31", + "nodeType": "YulLiteral", + "src": "17676:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17661:3:31", + "nodeType": "YulIdentifier", + "src": "17661:3:31" + }, + "nativeSrc": "17661:18:31", + "nodeType": "YulFunctionCall", + "src": "17661:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17648:12:31", + "nodeType": "YulIdentifier", + "src": "17648:12:31" + }, + "nativeSrc": "17648:32:31", + "nodeType": "YulFunctionCall", + "src": "17648:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "17637:7:31", + "nodeType": "YulTypedName", + "src": "17637:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "17714:7:31", + "nodeType": "YulIdentifier", + "src": "17714:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17689:24:31", + "nodeType": "YulIdentifier", + "src": "17689:24:31" + }, + "nativeSrc": "17689:33:31", + "nodeType": "YulFunctionCall", + "src": "17689:33:31" + }, + "nativeSrc": "17689:33:31", + "nodeType": "YulExpressionStatement", + "src": "17689:33:31" + }, + { + "nativeSrc": "17731:17:31", + "nodeType": "YulAssignment", + "src": "17731:17:31", + "value": { + "name": "value_1", + "nativeSrc": "17741:7:31", + "nodeType": "YulIdentifier", + "src": "17741:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17731:6:31", + "nodeType": "YulIdentifier", + "src": "17731:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "17366:388:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17411:9:31", + "nodeType": "YulTypedName", + "src": "17411:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17422:7:31", + "nodeType": "YulTypedName", + "src": "17422:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17434:6:31", + "nodeType": "YulTypedName", + "src": "17434:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17442:6:31", + "nodeType": "YulTypedName", + "src": "17442:6:31", + "type": "" + } + ], + "src": "17366:388:31" + }, + { + "body": { + "nativeSrc": "17944:206:31", + "nodeType": "YulBlock", + "src": "17944:206:31", + "statements": [ + { + "nativeSrc": "17954:27:31", + "nodeType": "YulAssignment", + "src": "17954:27:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17966:9:31", + "nodeType": "YulIdentifier", + "src": "17966:9:31" + }, + { + "kind": "number", + "nativeSrc": "17977:3:31", + "nodeType": "YulLiteral", + "src": "17977:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17962:3:31", + "nodeType": "YulIdentifier", + "src": "17962:3:31" + }, + "nativeSrc": "17962:19:31", + "nodeType": "YulFunctionCall", + "src": "17962:19:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17954:4:31", + "nodeType": "YulIdentifier", + "src": "17954:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17997:9:31", + "nodeType": "YulIdentifier", + "src": "17997:9:31" + }, + { + "name": "value0", + "nativeSrc": "18008:6:31", + "nodeType": "YulIdentifier", + "src": "18008:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17990:6:31", + "nodeType": "YulIdentifier", + "src": "17990:6:31" + }, + "nativeSrc": "17990:25:31", + "nodeType": "YulFunctionCall", + "src": "17990:25:31" + }, + "nativeSrc": "17990:25:31", + "nodeType": "YulExpressionStatement", + "src": "17990:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18035:9:31", + "nodeType": "YulIdentifier", + "src": "18035:9:31" + }, + { + "kind": "number", + "nativeSrc": "18046:2:31", + "nodeType": "YulLiteral", + "src": "18046:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18031:3:31", + "nodeType": "YulIdentifier", + "src": "18031:3:31" + }, + "nativeSrc": "18031:18:31", + "nodeType": "YulFunctionCall", + "src": "18031:18:31" + }, + { + "name": "value1", + "nativeSrc": "18051:6:31", + "nodeType": "YulIdentifier", + "src": "18051:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18024:6:31", + "nodeType": "YulIdentifier", + "src": "18024:6:31" + }, + "nativeSrc": "18024:34:31", + "nodeType": "YulFunctionCall", + "src": "18024:34:31" + }, + "nativeSrc": "18024:34:31", + "nodeType": "YulExpressionStatement", + "src": "18024:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18078:9:31", + "nodeType": "YulIdentifier", + "src": "18078:9:31" + }, + { + "kind": "number", + "nativeSrc": "18089:2:31", + "nodeType": "YulLiteral", + "src": "18089:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18074:3:31", + "nodeType": "YulIdentifier", + "src": "18074:3:31" + }, + "nativeSrc": "18074:18:31", + "nodeType": "YulFunctionCall", + "src": "18074:18:31" + }, + { + "name": "value2", + "nativeSrc": "18094:6:31", + "nodeType": "YulIdentifier", + "src": "18094:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18067:6:31", + "nodeType": "YulIdentifier", + "src": "18067:6:31" + }, + "nativeSrc": "18067:34:31", + "nodeType": "YulFunctionCall", + "src": "18067:34:31" + }, + "nativeSrc": "18067:34:31", + "nodeType": "YulExpressionStatement", + "src": "18067:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18121:9:31", + "nodeType": "YulIdentifier", + "src": "18121:9:31" + }, + { + "kind": "number", + "nativeSrc": "18132:2:31", + "nodeType": "YulLiteral", + "src": "18132:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18117:3:31", + "nodeType": "YulIdentifier", + "src": "18117:3:31" + }, + "nativeSrc": "18117:18:31", + "nodeType": "YulFunctionCall", + "src": "18117:18:31" + }, + { + "name": "value3", + "nativeSrc": "18137:6:31", + "nodeType": "YulIdentifier", + "src": "18137:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18110:6:31", + "nodeType": "YulIdentifier", + "src": "18110:6:31" + }, + "nativeSrc": "18110:34:31", + "nodeType": "YulFunctionCall", + "src": "18110:34:31" + }, + "nativeSrc": "18110:34:31", + "nodeType": "YulExpressionStatement", + "src": "18110:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "17759:391:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17889:9:31", + "nodeType": "YulTypedName", + "src": "17889:9:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "17900:6:31", + "nodeType": "YulTypedName", + "src": "17900:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "17908:6:31", + "nodeType": "YulTypedName", + "src": "17908:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17916:6:31", + "nodeType": "YulTypedName", + "src": "17916:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17924:6:31", + "nodeType": "YulTypedName", + "src": "17924:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17935:4:31", + "nodeType": "YulTypedName", + "src": "17935:4:31", + "type": "" + } + ], + "src": "17759:391:31" + }, + { + "body": { + "nativeSrc": "18274:352:31", + "nodeType": "YulBlock", + "src": "18274:352:31", + "statements": [ + { + "body": { + "nativeSrc": "18320:16:31", + "nodeType": "YulBlock", + "src": "18320:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18329:1:31", + "nodeType": "YulLiteral", + "src": "18329:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18332:1:31", + "nodeType": "YulLiteral", + "src": "18332:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18322:6:31", + "nodeType": "YulIdentifier", + "src": "18322:6:31" + }, + "nativeSrc": "18322:12:31", + "nodeType": "YulFunctionCall", + "src": "18322:12:31" + }, + "nativeSrc": "18322:12:31", + "nodeType": "YulExpressionStatement", + "src": "18322:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18295:7:31", + "nodeType": "YulIdentifier", + "src": "18295:7:31" + }, + { + "name": "headStart", + "nativeSrc": "18304:9:31", + "nodeType": "YulIdentifier", + "src": "18304:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18291:3:31", + "nodeType": "YulIdentifier", + "src": "18291:3:31" + }, + "nativeSrc": "18291:23:31", + "nodeType": "YulFunctionCall", + "src": "18291:23:31" + }, + { + "kind": "number", + "nativeSrc": "18316:2:31", + "nodeType": "YulLiteral", + "src": "18316:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18287:3:31", + "nodeType": "YulIdentifier", + "src": "18287:3:31" + }, + "nativeSrc": "18287:32:31", + "nodeType": "YulFunctionCall", + "src": "18287:32:31" + }, + "nativeSrc": "18284:52:31", + "nodeType": "YulIf", + "src": "18284:52:31" + }, + { + "nativeSrc": "18345:36:31", + "nodeType": "YulVariableDeclaration", + "src": "18345:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18371:9:31", + "nodeType": "YulIdentifier", + "src": "18371:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18358:12:31", + "nodeType": "YulIdentifier", + "src": "18358:12:31" + }, + "nativeSrc": "18358:23:31", + "nodeType": "YulFunctionCall", + "src": "18358:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18349:5:31", + "nodeType": "YulTypedName", + "src": "18349:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18415:5:31", + "nodeType": "YulIdentifier", + "src": "18415:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18390:24:31", + "nodeType": "YulIdentifier", + "src": "18390:24:31" + }, + "nativeSrc": "18390:31:31", + "nodeType": "YulFunctionCall", + "src": "18390:31:31" + }, + "nativeSrc": "18390:31:31", + "nodeType": "YulExpressionStatement", + "src": "18390:31:31" + }, + { + "nativeSrc": "18430:15:31", + "nodeType": "YulAssignment", + "src": "18430:15:31", + "value": { + "name": "value", + "nativeSrc": "18440:5:31", + "nodeType": "YulIdentifier", + "src": "18440:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18430:6:31", + "nodeType": "YulIdentifier", + "src": "18430:6:31" + } + ] + }, + { + "nativeSrc": "18454:47:31", + "nodeType": "YulVariableDeclaration", + "src": "18454:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18486:9:31", + "nodeType": "YulIdentifier", + "src": "18486:9:31" + }, + { + "kind": "number", + "nativeSrc": "18497:2:31", + "nodeType": "YulLiteral", + "src": "18497:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18482:3:31", + "nodeType": "YulIdentifier", + "src": "18482:3:31" + }, + "nativeSrc": "18482:18:31", + "nodeType": "YulFunctionCall", + "src": "18482:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18469:12:31", + "nodeType": "YulIdentifier", + "src": "18469:12:31" + }, + "nativeSrc": "18469:32:31", + "nodeType": "YulFunctionCall", + "src": "18469:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "18458:7:31", + "nodeType": "YulTypedName", + "src": "18458:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "18535:7:31", + "nodeType": "YulIdentifier", + "src": "18535:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18510:24:31", + "nodeType": "YulIdentifier", + "src": "18510:24:31" + }, + "nativeSrc": "18510:33:31", + "nodeType": "YulFunctionCall", + "src": "18510:33:31" + }, + "nativeSrc": "18510:33:31", + "nodeType": "YulExpressionStatement", + "src": "18510:33:31" + }, + { + "nativeSrc": "18552:17:31", + "nodeType": "YulAssignment", + "src": "18552:17:31", + "value": { + "name": "value_1", + "nativeSrc": "18562:7:31", + "nodeType": "YulIdentifier", + "src": "18562:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "18552:6:31", + "nodeType": "YulIdentifier", + "src": "18552:6:31" + } + ] + }, + { + "nativeSrc": "18578:42:31", + "nodeType": "YulAssignment", + "src": "18578:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18605:9:31", + "nodeType": "YulIdentifier", + "src": "18605:9:31" + }, + { + "kind": "number", + "nativeSrc": "18616:2:31", + "nodeType": "YulLiteral", + "src": "18616:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18601:3:31", + "nodeType": "YulIdentifier", + "src": "18601:3:31" + }, + "nativeSrc": "18601:18:31", + "nodeType": "YulFunctionCall", + "src": "18601:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18588:12:31", + "nodeType": "YulIdentifier", + "src": "18588:12:31" + }, + "nativeSrc": "18588:32:31", + "nodeType": "YulFunctionCall", + "src": "18588:32:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "18578:6:31", + "nodeType": "YulIdentifier", + "src": "18578:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1798t_addresst_uint256", + "nativeSrc": "18155:471:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18224:9:31", + "nodeType": "YulTypedName", + "src": "18224:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18235:7:31", + "nodeType": "YulTypedName", + "src": "18235:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18247:6:31", + "nodeType": "YulTypedName", + "src": "18247:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18255:6:31", + "nodeType": "YulTypedName", + "src": "18255:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18263:6:31", + "nodeType": "YulTypedName", + "src": "18263:6:31", + "type": "" + } + ], + "src": "18155:471:31" + }, + { + "body": { + "nativeSrc": "18698:174:31", + "nodeType": "YulBlock", + "src": "18698:174:31", + "statements": [ + { + "body": { + "nativeSrc": "18744:16:31", + "nodeType": "YulBlock", + "src": "18744:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18753:1:31", + "nodeType": "YulLiteral", + "src": "18753:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18756:1:31", + "nodeType": "YulLiteral", + "src": "18756:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18746:6:31", + "nodeType": "YulIdentifier", + "src": "18746:6:31" + }, + "nativeSrc": "18746:12:31", + "nodeType": "YulFunctionCall", + "src": "18746:12:31" + }, + "nativeSrc": "18746:12:31", + "nodeType": "YulExpressionStatement", + "src": "18746:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18719:7:31", + "nodeType": "YulIdentifier", + "src": "18719:7:31" + }, + { + "name": "headStart", + "nativeSrc": "18728:9:31", + "nodeType": "YulIdentifier", + "src": "18728:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18715:3:31", + "nodeType": "YulIdentifier", + "src": "18715:3:31" + }, + "nativeSrc": "18715:23:31", + "nodeType": "YulFunctionCall", + "src": "18715:23:31" + }, + { + "kind": "number", + "nativeSrc": "18740:2:31", + "nodeType": "YulLiteral", + "src": "18740:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18711:3:31", + "nodeType": "YulIdentifier", + "src": "18711:3:31" + }, + "nativeSrc": "18711:32:31", + "nodeType": "YulFunctionCall", + "src": "18711:32:31" + }, + "nativeSrc": "18708:52:31", + "nodeType": "YulIf", + "src": "18708:52:31" + }, + { + "nativeSrc": "18769:36:31", + "nodeType": "YulVariableDeclaration", + "src": "18769:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18795:9:31", + "nodeType": "YulIdentifier", + "src": "18795:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18782:12:31", + "nodeType": "YulIdentifier", + "src": "18782:12:31" + }, + "nativeSrc": "18782:23:31", + "nodeType": "YulFunctionCall", + "src": "18782:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18773:5:31", + "nodeType": "YulTypedName", + "src": "18773:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18836:5:31", + "nodeType": "YulIdentifier", + "src": "18836:5:31" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "18814:21:31", + "nodeType": "YulIdentifier", + "src": "18814:21:31" + }, + "nativeSrc": "18814:28:31", + "nodeType": "YulFunctionCall", + "src": "18814:28:31" + }, + "nativeSrc": "18814:28:31", + "nodeType": "YulExpressionStatement", + "src": "18814:28:31" + }, + { + "nativeSrc": "18851:15:31", + "nodeType": "YulAssignment", + "src": "18851:15:31", + "value": { + "name": "value", + "nativeSrc": "18861:5:31", + "nodeType": "YulIdentifier", + "src": "18861:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18851:6:31", + "nodeType": "YulIdentifier", + "src": "18851:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool", + "nativeSrc": "18631:241:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18664:9:31", + "nodeType": "YulTypedName", + "src": "18664:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18675:7:31", + "nodeType": "YulTypedName", + "src": "18675:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18687:6:31", + "nodeType": "YulTypedName", + "src": "18687:6:31", + "type": "" + } + ], + "src": "18631:241:31" + }, + { + "body": { + "nativeSrc": "18971:356:31", + "nodeType": "YulBlock", + "src": "18971:356:31", + "statements": [ + { + "body": { + "nativeSrc": "19017:16:31", + "nodeType": "YulBlock", + "src": "19017:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19026:1:31", + "nodeType": "YulLiteral", + "src": "19026:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19029:1:31", + "nodeType": "YulLiteral", + "src": "19029:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19019:6:31", + "nodeType": "YulIdentifier", + "src": "19019:6:31" + }, + "nativeSrc": "19019:12:31", + "nodeType": "YulFunctionCall", + "src": "19019:12:31" + }, + "nativeSrc": "19019:12:31", + "nodeType": "YulExpressionStatement", + "src": "19019:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18992:7:31", + "nodeType": "YulIdentifier", + "src": "18992:7:31" + }, + { + "name": "headStart", + "nativeSrc": "19001:9:31", + "nodeType": "YulIdentifier", + "src": "19001:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18988:3:31", + "nodeType": "YulIdentifier", + "src": "18988:3:31" + }, + "nativeSrc": "18988:23:31", + "nodeType": "YulFunctionCall", + "src": "18988:23:31" + }, + { + "kind": "number", + "nativeSrc": "19013:2:31", + "nodeType": "YulLiteral", + "src": "19013:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18984:3:31", + "nodeType": "YulIdentifier", + "src": "18984:3:31" + }, + "nativeSrc": "18984:32:31", + "nodeType": "YulFunctionCall", + "src": "18984:32:31" + }, + "nativeSrc": "18981:52:31", + "nodeType": "YulIf", + "src": "18981:52:31" + }, + { + "nativeSrc": "19042:37:31", + "nodeType": "YulVariableDeclaration", + "src": "19042:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19069:9:31", + "nodeType": "YulIdentifier", + "src": "19069:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "19056:12:31", + "nodeType": "YulIdentifier", + "src": "19056:12:31" + }, + "nativeSrc": "19056:23:31", + "nodeType": "YulFunctionCall", + "src": "19056:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "19046:6:31", + "nodeType": "YulTypedName", + "src": "19046:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "19122:16:31", + "nodeType": "YulBlock", + "src": "19122:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19131:1:31", + "nodeType": "YulLiteral", + "src": "19131:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19134:1:31", + "nodeType": "YulLiteral", + "src": "19134:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19124:6:31", + "nodeType": "YulIdentifier", + "src": "19124:6:31" + }, + "nativeSrc": "19124:12:31", + "nodeType": "YulFunctionCall", + "src": "19124:12:31" + }, + "nativeSrc": "19124:12:31", + "nodeType": "YulExpressionStatement", + "src": "19124:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "19094:6:31", + "nodeType": "YulIdentifier", + "src": "19094:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19110:2:31", + "nodeType": "YulLiteral", + "src": "19110:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "19114:1:31", + "nodeType": "YulLiteral", + "src": "19114:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19106:3:31", + "nodeType": "YulIdentifier", + "src": "19106:3:31" + }, + "nativeSrc": "19106:10:31", + "nodeType": "YulFunctionCall", + "src": "19106:10:31" + }, + { + "kind": "number", + "nativeSrc": "19118:1:31", + "nodeType": "YulLiteral", + "src": "19118:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19102:3:31", + "nodeType": "YulIdentifier", + "src": "19102:3:31" + }, + "nativeSrc": "19102:18:31", + "nodeType": "YulFunctionCall", + "src": "19102:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "19091:2:31", + "nodeType": "YulIdentifier", + "src": "19091:2:31" + }, + "nativeSrc": "19091:30:31", + "nodeType": "YulFunctionCall", + "src": "19091:30:31" + }, + "nativeSrc": "19088:50:31", + "nodeType": "YulIf", + "src": "19088:50:31" + }, + { + "nativeSrc": "19147:59:31", + "nodeType": "YulAssignment", + "src": "19147:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19178:9:31", + "nodeType": "YulIdentifier", + "src": "19178:9:31" + }, + { + "name": "offset", + "nativeSrc": "19189:6:31", + "nodeType": "YulIdentifier", + "src": "19189:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19174:3:31", + "nodeType": "YulIdentifier", + "src": "19174:3:31" + }, + "nativeSrc": "19174:22:31", + "nodeType": "YulFunctionCall", + "src": "19174:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "19198:7:31", + "nodeType": "YulIdentifier", + "src": "19198:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "19157:16:31", + "nodeType": "YulIdentifier", + "src": "19157:16:31" + }, + "nativeSrc": "19157:49:31", + "nodeType": "YulFunctionCall", + "src": "19157:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "19147:6:31", + "nodeType": "YulIdentifier", + "src": "19147:6:31" + } + ] + }, + { + "nativeSrc": "19215:45:31", + "nodeType": "YulVariableDeclaration", + "src": "19215:45:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19245:9:31", + "nodeType": "YulIdentifier", + "src": "19245:9:31" + }, + { + "kind": "number", + "nativeSrc": "19256:2:31", + "nodeType": "YulLiteral", + "src": "19256:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19241:3:31", + "nodeType": "YulIdentifier", + "src": "19241:3:31" + }, + "nativeSrc": "19241:18:31", + "nodeType": "YulFunctionCall", + "src": "19241:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "19228:12:31", + "nodeType": "YulIdentifier", + "src": "19228:12:31" + }, + "nativeSrc": "19228:32:31", + "nodeType": "YulFunctionCall", + "src": "19228:32:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "19219:5:31", + "nodeType": "YulTypedName", + "src": "19219:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "19291:5:31", + "nodeType": "YulIdentifier", + "src": "19291:5:31" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "19269:21:31", + "nodeType": "YulIdentifier", + "src": "19269:21:31" + }, + "nativeSrc": "19269:28:31", + "nodeType": "YulFunctionCall", + "src": "19269:28:31" + }, + "nativeSrc": "19269:28:31", + "nodeType": "YulExpressionStatement", + "src": "19269:28:31" + }, + { + "nativeSrc": "19306:15:31", + "nodeType": "YulAssignment", + "src": "19306:15:31", + "value": { + "name": "value", + "nativeSrc": "19316:5:31", + "nodeType": "YulIdentifier", + "src": "19316:5:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "19306:6:31", + "nodeType": "YulIdentifier", + "src": "19306:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_bool", + "nativeSrc": "18877:450:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18929:9:31", + "nodeType": "YulTypedName", + "src": "18929:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18940:7:31", + "nodeType": "YulTypedName", + "src": "18940:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18952:6:31", + "nodeType": "YulTypedName", + "src": "18952:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18960:6:31", + "nodeType": "YulTypedName", + "src": "18960:6:31", + "type": "" + } + ], + "src": "18877:450:31" + }, + { + "body": { + "nativeSrc": "19453:99:31", + "nodeType": "YulBlock", + "src": "19453:99:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19470:9:31", + "nodeType": "YulIdentifier", + "src": "19470:9:31" + }, + { + "kind": "number", + "nativeSrc": "19481:2:31", + "nodeType": "YulLiteral", + "src": "19481:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19463:6:31", + "nodeType": "YulIdentifier", + "src": "19463:6:31" + }, + "nativeSrc": "19463:21:31", + "nodeType": "YulFunctionCall", + "src": "19463:21:31" + }, + "nativeSrc": "19463:21:31", + "nodeType": "YulExpressionStatement", + "src": "19463:21:31" + }, + { + "nativeSrc": "19493:53:31", + "nodeType": "YulAssignment", + "src": "19493:53:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19519:6:31", + "nodeType": "YulIdentifier", + "src": "19519:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19531:9:31", + "nodeType": "YulIdentifier", + "src": "19531:9:31" + }, + { + "kind": "number", + "nativeSrc": "19542:2:31", + "nodeType": "YulLiteral", + "src": "19542:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19527:3:31", + "nodeType": "YulIdentifier", + "src": "19527:3:31" + }, + "nativeSrc": "19527:18:31", + "nodeType": "YulFunctionCall", + "src": "19527:18:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "19501:17:31", + "nodeType": "YulIdentifier", + "src": "19501:17:31" + }, + "nativeSrc": "19501:45:31", + "nodeType": "YulFunctionCall", + "src": "19501:45:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "19493:4:31", + "nodeType": "YulIdentifier", + "src": "19493:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "19332:220:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19422:9:31", + "nodeType": "YulTypedName", + "src": "19422:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19433:6:31", + "nodeType": "YulTypedName", + "src": "19433:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "19444:4:31", + "nodeType": "YulTypedName", + "src": "19444:4:31", + "type": "" + } + ], + "src": "19332:220:31" + }, + { + "body": { + "nativeSrc": "19708:507:31", + "nodeType": "YulBlock", + "src": "19708:507:31", + "statements": [ + { + "nativeSrc": "19718:12:31", + "nodeType": "YulVariableDeclaration", + "src": "19718:12:31", + "value": { + "kind": "number", + "nativeSrc": "19728:2:31", + "nodeType": "YulLiteral", + "src": "19728:2:31", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "19722:2:31", + "nodeType": "YulTypedName", + "src": "19722:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "19739:32:31", + "nodeType": "YulVariableDeclaration", + "src": "19739:32:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19757:9:31", + "nodeType": "YulIdentifier", + "src": "19757:9:31" + }, + { + "kind": "number", + "nativeSrc": "19768:2:31", + "nodeType": "YulLiteral", + "src": "19768:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19753:3:31", + "nodeType": "YulIdentifier", + "src": "19753:3:31" + }, + "nativeSrc": "19753:18:31", + "nodeType": "YulFunctionCall", + "src": "19753:18:31" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "19743:6:31", + "nodeType": "YulTypedName", + "src": "19743:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19787:9:31", + "nodeType": "YulIdentifier", + "src": "19787:9:31" + }, + { + "kind": "number", + "nativeSrc": "19798:2:31", + "nodeType": "YulLiteral", + "src": "19798:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19780:6:31", + "nodeType": "YulIdentifier", + "src": "19780:6:31" + }, + "nativeSrc": "19780:21:31", + "nodeType": "YulFunctionCall", + "src": "19780:21:31" + }, + "nativeSrc": "19780:21:31", + "nodeType": "YulExpressionStatement", + "src": "19780:21:31" + }, + { + "nativeSrc": "19810:17:31", + "nodeType": "YulVariableDeclaration", + "src": "19810:17:31", + "value": { + "name": "tail_1", + "nativeSrc": "19821:6:31", + "nodeType": "YulIdentifier", + "src": "19821:6:31" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "19814:3:31", + "nodeType": "YulTypedName", + "src": "19814:3:31", + "type": "" + } + ] + }, + { + "nativeSrc": "19836:27:31", + "nodeType": "YulVariableDeclaration", + "src": "19836:27:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19856:6:31", + "nodeType": "YulIdentifier", + "src": "19856:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19850:5:31", + "nodeType": "YulIdentifier", + "src": "19850:5:31" + }, + "nativeSrc": "19850:13:31", + "nodeType": "YulFunctionCall", + "src": "19850:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "19840:6:31", + "nodeType": "YulTypedName", + "src": "19840:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "19879:6:31", + "nodeType": "YulIdentifier", + "src": "19879:6:31" + }, + { + "name": "length", + "nativeSrc": "19887:6:31", + "nodeType": "YulIdentifier", + "src": "19887:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19872:6:31", + "nodeType": "YulIdentifier", + "src": "19872:6:31" + }, + "nativeSrc": "19872:22:31", + "nodeType": "YulFunctionCall", + "src": "19872:22:31" + }, + "nativeSrc": "19872:22:31", + "nodeType": "YulExpressionStatement", + "src": "19872:22:31" + }, + { + "nativeSrc": "19903:25:31", + "nodeType": "YulAssignment", + "src": "19903:25:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19914:9:31", + "nodeType": "YulIdentifier", + "src": "19914:9:31" + }, + { + "kind": "number", + "nativeSrc": "19925:2:31", + "nodeType": "YulLiteral", + "src": "19925:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19910:3:31", + "nodeType": "YulIdentifier", + "src": "19910:3:31" + }, + "nativeSrc": "19910:18:31", + "nodeType": "YulFunctionCall", + "src": "19910:18:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "19903:3:31", + "nodeType": "YulIdentifier", + "src": "19903:3:31" + } + ] + }, + { + "nativeSrc": "19937:29:31", + "nodeType": "YulVariableDeclaration", + "src": "19937:29:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19955:6:31", + "nodeType": "YulIdentifier", + "src": "19955:6:31" + }, + { + "kind": "number", + "nativeSrc": "19963:2:31", + "nodeType": "YulLiteral", + "src": "19963:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19951:3:31", + "nodeType": "YulIdentifier", + "src": "19951:3:31" + }, + "nativeSrc": "19951:15:31", + "nodeType": "YulFunctionCall", + "src": "19951:15:31" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "19941:6:31", + "nodeType": "YulTypedName", + "src": "19941:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "19975:10:31", + "nodeType": "YulVariableDeclaration", + "src": "19975:10:31", + "value": { + "kind": "number", + "nativeSrc": "19984:1:31", + "nodeType": "YulLiteral", + "src": "19984:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "19979:1:31", + "nodeType": "YulTypedName", + "src": "19979:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20043:146:31", + "nodeType": "YulBlock", + "src": "20043:146:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "20064:3:31", + "nodeType": "YulIdentifier", + "src": "20064:3:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "20079:6:31", + "nodeType": "YulIdentifier", + "src": "20079:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20073:5:31", + "nodeType": "YulIdentifier", + "src": "20073:5:31" + }, + "nativeSrc": "20073:13:31", + "nodeType": "YulFunctionCall", + "src": "20073:13:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20096:3:31", + "nodeType": "YulLiteral", + "src": "20096:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "20101:1:31", + "nodeType": "YulLiteral", + "src": "20101:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20092:3:31", + "nodeType": "YulIdentifier", + "src": "20092:3:31" + }, + "nativeSrc": "20092:11:31", + "nodeType": "YulFunctionCall", + "src": "20092:11:31" + }, + { + "kind": "number", + "nativeSrc": "20105:1:31", + "nodeType": "YulLiteral", + "src": "20105:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20088:3:31", + "nodeType": "YulIdentifier", + "src": "20088:3:31" + }, + "nativeSrc": "20088:19:31", + "nodeType": "YulFunctionCall", + "src": "20088:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20069:3:31", + "nodeType": "YulIdentifier", + "src": "20069:3:31" + }, + "nativeSrc": "20069:39:31", + "nodeType": "YulFunctionCall", + "src": "20069:39:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20057:6:31", + "nodeType": "YulIdentifier", + "src": "20057:6:31" + }, + "nativeSrc": "20057:52:31", + "nodeType": "YulFunctionCall", + "src": "20057:52:31" + }, + "nativeSrc": "20057:52:31", + "nodeType": "YulExpressionStatement", + "src": "20057:52:31" + }, + { + "nativeSrc": "20122:19:31", + "nodeType": "YulAssignment", + "src": "20122:19:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "20133:3:31", + "nodeType": "YulIdentifier", + "src": "20133:3:31" + }, + { + "name": "_1", + "nativeSrc": "20138:2:31", + "nodeType": "YulIdentifier", + "src": "20138:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20129:3:31", + "nodeType": "YulIdentifier", + "src": "20129:3:31" + }, + "nativeSrc": "20129:12:31", + "nodeType": "YulFunctionCall", + "src": "20129:12:31" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "20122:3:31", + "nodeType": "YulIdentifier", + "src": "20122:3:31" + } + ] + }, + { + "nativeSrc": "20154:25:31", + "nodeType": "YulAssignment", + "src": "20154:25:31", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "20168:6:31", + "nodeType": "YulIdentifier", + "src": "20168:6:31" + }, + { + "name": "_1", + "nativeSrc": "20176:2:31", + "nodeType": "YulIdentifier", + "src": "20176:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20164:3:31", + "nodeType": "YulIdentifier", + "src": "20164:3:31" + }, + "nativeSrc": "20164:15:31", + "nodeType": "YulFunctionCall", + "src": "20164:15:31" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "20154:6:31", + "nodeType": "YulIdentifier", + "src": "20154:6:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "20005:1:31", + "nodeType": "YulIdentifier", + "src": "20005:1:31" + }, + { + "name": "length", + "nativeSrc": "20008:6:31", + "nodeType": "YulIdentifier", + "src": "20008:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20002:2:31", + "nodeType": "YulIdentifier", + "src": "20002:2:31" + }, + "nativeSrc": "20002:13:31", + "nodeType": "YulFunctionCall", + "src": "20002:13:31" + }, + "nativeSrc": "19994:195:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20016:18:31", + "nodeType": "YulBlock", + "src": "20016:18:31", + "statements": [ + { + "nativeSrc": "20018:14:31", + "nodeType": "YulAssignment", + "src": "20018:14:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "20027:1:31", + "nodeType": "YulIdentifier", + "src": "20027:1:31" + }, + { + "kind": "number", + "nativeSrc": "20030:1:31", + "nodeType": "YulLiteral", + "src": "20030:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20023:3:31", + "nodeType": "YulIdentifier", + "src": "20023:3:31" + }, + "nativeSrc": "20023:9:31", + "nodeType": "YulFunctionCall", + "src": "20023:9:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "20018:1:31", + "nodeType": "YulIdentifier", + "src": "20018:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "19998:3:31", + "nodeType": "YulBlock", + "src": "19998:3:31", + "statements": [] + }, + "src": "19994:195:31" + }, + { + "nativeSrc": "20198:11:31", + "nodeType": "YulAssignment", + "src": "20198:11:31", + "value": { + "name": "pos", + "nativeSrc": "20206:3:31", + "nodeType": "YulIdentifier", + "src": "20206:3:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20198:4:31", + "nodeType": "YulIdentifier", + "src": "20198:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "19557:658:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19677:9:31", + "nodeType": "YulTypedName", + "src": "19677:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19688:6:31", + "nodeType": "YulTypedName", + "src": "19688:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "19699:4:31", + "nodeType": "YulTypedName", + "src": "19699:4:31", + "type": "" + } + ], + "src": "19557:658:31" + }, + { + "body": { + "nativeSrc": "20371:107:31", + "nodeType": "YulBlock", + "src": "20371:107:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20388:9:31", + "nodeType": "YulIdentifier", + "src": "20388:9:31" + }, + { + "kind": "number", + "nativeSrc": "20399:2:31", + "nodeType": "YulLiteral", + "src": "20399:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20381:6:31", + "nodeType": "YulIdentifier", + "src": "20381:6:31" + }, + "nativeSrc": "20381:21:31", + "nodeType": "YulFunctionCall", + "src": "20381:21:31" + }, + "nativeSrc": "20381:21:31", + "nodeType": "YulExpressionStatement", + "src": "20381:21:31" + }, + { + "nativeSrc": "20411:61:31", + "nodeType": "YulAssignment", + "src": "20411:61:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "20445:6:31", + "nodeType": "YulIdentifier", + "src": "20445:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20457:9:31", + "nodeType": "YulIdentifier", + "src": "20457:9:31" + }, + { + "kind": "number", + "nativeSrc": "20468:2:31", + "nodeType": "YulLiteral", + "src": "20468:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20453:3:31", + "nodeType": "YulIdentifier", + "src": "20453:3:31" + }, + "nativeSrc": "20453:18:31", + "nodeType": "YulFunctionCall", + "src": "20453:18:31" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "20419:25:31", + "nodeType": "YulIdentifier", + "src": "20419:25:31" + }, + "nativeSrc": "20419:53:31", + "nodeType": "YulFunctionCall", + "src": "20419:53:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20411:4:31", + "nodeType": "YulIdentifier", + "src": "20411:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_Service_$5968_memory_ptr__to_t_struct$_Service_$5968_memory_ptr__fromStack_reversed", + "nativeSrc": "20220:258:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20340:9:31", + "nodeType": "YulTypedName", + "src": "20340:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "20351:6:31", + "nodeType": "YulTypedName", + "src": "20351:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "20362:4:31", + "nodeType": "YulTypedName", + "src": "20362:4:31", + "type": "" + } + ], + "src": "20220:258:31" + }, + { + "body": { + "nativeSrc": "20615:445:31", + "nodeType": "YulBlock", + "src": "20615:445:31", + "statements": [ + { + "body": { + "nativeSrc": "20661:16:31", + "nodeType": "YulBlock", + "src": "20661:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20670:1:31", + "nodeType": "YulLiteral", + "src": "20670:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20673:1:31", + "nodeType": "YulLiteral", + "src": "20673:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20663:6:31", + "nodeType": "YulIdentifier", + "src": "20663:6:31" + }, + "nativeSrc": "20663:12:31", + "nodeType": "YulFunctionCall", + "src": "20663:12:31" + }, + "nativeSrc": "20663:12:31", + "nodeType": "YulExpressionStatement", + "src": "20663:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "20636:7:31", + "nodeType": "YulIdentifier", + "src": "20636:7:31" + }, + { + "name": "headStart", + "nativeSrc": "20645:9:31", + "nodeType": "YulIdentifier", + "src": "20645:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20632:3:31", + "nodeType": "YulIdentifier", + "src": "20632:3:31" + }, + "nativeSrc": "20632:23:31", + "nodeType": "YulFunctionCall", + "src": "20632:23:31" + }, + { + "kind": "number", + "nativeSrc": "20657:2:31", + "nodeType": "YulLiteral", + "src": "20657:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "20628:3:31", + "nodeType": "YulIdentifier", + "src": "20628:3:31" + }, + "nativeSrc": "20628:32:31", + "nodeType": "YulFunctionCall", + "src": "20628:32:31" + }, + "nativeSrc": "20625:52:31", + "nodeType": "YulIf", + "src": "20625:52:31" + }, + { + "nativeSrc": "20686:37:31", + "nodeType": "YulVariableDeclaration", + "src": "20686:37:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20713:9:31", + "nodeType": "YulIdentifier", + "src": "20713:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20700:12:31", + "nodeType": "YulIdentifier", + "src": "20700:12:31" + }, + "nativeSrc": "20700:23:31", + "nodeType": "YulFunctionCall", + "src": "20700:23:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "20690:6:31", + "nodeType": "YulTypedName", + "src": "20690:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "20732:28:31", + "nodeType": "YulVariableDeclaration", + "src": "20732:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20750:2:31", + "nodeType": "YulLiteral", + "src": "20750:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "20754:1:31", + "nodeType": "YulLiteral", + "src": "20754:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20746:3:31", + "nodeType": "YulIdentifier", + "src": "20746:3:31" + }, + "nativeSrc": "20746:10:31", + "nodeType": "YulFunctionCall", + "src": "20746:10:31" + }, + { + "kind": "number", + "nativeSrc": "20758:1:31", + "nodeType": "YulLiteral", + "src": "20758:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20742:3:31", + "nodeType": "YulIdentifier", + "src": "20742:3:31" + }, + "nativeSrc": "20742:18:31", + "nodeType": "YulFunctionCall", + "src": "20742:18:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "20736:2:31", + "nodeType": "YulTypedName", + "src": "20736:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20787:16:31", + "nodeType": "YulBlock", + "src": "20787:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20796:1:31", + "nodeType": "YulLiteral", + "src": "20796:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20799:1:31", + "nodeType": "YulLiteral", + "src": "20799:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20789:6:31", + "nodeType": "YulIdentifier", + "src": "20789:6:31" + }, + "nativeSrc": "20789:12:31", + "nodeType": "YulFunctionCall", + "src": "20789:12:31" + }, + "nativeSrc": "20789:12:31", + "nodeType": "YulExpressionStatement", + "src": "20789:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "20775:6:31", + "nodeType": "YulIdentifier", + "src": "20775:6:31" + }, + { + "name": "_1", + "nativeSrc": "20783:2:31", + "nodeType": "YulIdentifier", + "src": "20783:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20772:2:31", + "nodeType": "YulIdentifier", + "src": "20772:2:31" + }, + "nativeSrc": "20772:14:31", + "nodeType": "YulFunctionCall", + "src": "20772:14:31" + }, + "nativeSrc": "20769:34:31", + "nodeType": "YulIf", + "src": "20769:34:31" + }, + { + "nativeSrc": "20812:59:31", + "nodeType": "YulAssignment", + "src": "20812:59:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20843:9:31", + "nodeType": "YulIdentifier", + "src": "20843:9:31" + }, + { + "name": "offset", + "nativeSrc": "20854:6:31", + "nodeType": "YulIdentifier", + "src": "20854:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20839:3:31", + "nodeType": "YulIdentifier", + "src": "20839:3:31" + }, + "nativeSrc": "20839:22:31", + "nodeType": "YulFunctionCall", + "src": "20839:22:31" + }, + { + "name": "dataEnd", + "nativeSrc": "20863:7:31", + "nodeType": "YulIdentifier", + "src": "20863:7:31" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "20822:16:31", + "nodeType": "YulIdentifier", + "src": "20822:16:31" + }, + "nativeSrc": "20822:49:31", + "nodeType": "YulFunctionCall", + "src": "20822:49:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "20812:6:31", + "nodeType": "YulIdentifier", + "src": "20812:6:31" + } + ] + }, + { + "nativeSrc": "20880:48:31", + "nodeType": "YulVariableDeclaration", + "src": "20880:48:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20913:9:31", + "nodeType": "YulIdentifier", + "src": "20913:9:31" + }, + { + "kind": "number", + "nativeSrc": "20924:2:31", + "nodeType": "YulLiteral", + "src": "20924:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20909:3:31", + "nodeType": "YulIdentifier", + "src": "20909:3:31" + }, + "nativeSrc": "20909:18:31", + "nodeType": "YulFunctionCall", + "src": "20909:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20896:12:31", + "nodeType": "YulIdentifier", + "src": "20896:12:31" + }, + "nativeSrc": "20896:32:31", + "nodeType": "YulFunctionCall", + "src": "20896:32:31" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "20884:8:31", + "nodeType": "YulTypedName", + "src": "20884:8:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20957:16:31", + "nodeType": "YulBlock", + "src": "20957:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20966:1:31", + "nodeType": "YulLiteral", + "src": "20966:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20969:1:31", + "nodeType": "YulLiteral", + "src": "20969:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20959:6:31", + "nodeType": "YulIdentifier", + "src": "20959:6:31" + }, + "nativeSrc": "20959:12:31", + "nodeType": "YulFunctionCall", + "src": "20959:12:31" + }, + "nativeSrc": "20959:12:31", + "nodeType": "YulExpressionStatement", + "src": "20959:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "20943:8:31", + "nodeType": "YulIdentifier", + "src": "20943:8:31" + }, + { + "name": "_1", + "nativeSrc": "20953:2:31", + "nodeType": "YulIdentifier", + "src": "20953:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20940:2:31", + "nodeType": "YulIdentifier", + "src": "20940:2:31" + }, + "nativeSrc": "20940:16:31", + "nodeType": "YulFunctionCall", + "src": "20940:16:31" + }, + "nativeSrc": "20937:36:31", + "nodeType": "YulIf", + "src": "20937:36:31" + }, + { + "nativeSrc": "20982:72:31", + "nodeType": "YulAssignment", + "src": "20982:72:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21024:9:31", + "nodeType": "YulIdentifier", + "src": "21024:9:31" + }, + { + "name": "offset_1", + "nativeSrc": "21035:8:31", + "nodeType": "YulIdentifier", + "src": "21035:8:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21020:3:31", + "nodeType": "YulIdentifier", + "src": "21020:3:31" + }, + "nativeSrc": "21020:24:31", + "nodeType": "YulFunctionCall", + "src": "21020:24:31" + }, + { + "name": "dataEnd", + "nativeSrc": "21046:7:31", + "nodeType": "YulIdentifier", + "src": "21046:7:31" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "20992:27:31", + "nodeType": "YulIdentifier", + "src": "20992:27:31" + }, + "nativeSrc": "20992:62:31", + "nodeType": "YulFunctionCall", + "src": "20992:62:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "20982:6:31", + "nodeType": "YulIdentifier", + "src": "20982:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "20483:577:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20573:9:31", + "nodeType": "YulTypedName", + "src": "20573:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "20584:7:31", + "nodeType": "YulTypedName", + "src": "20584:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "20596:6:31", + "nodeType": "YulTypedName", + "src": "20596:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "20604:6:31", + "nodeType": "YulTypedName", + "src": "20604:6:31", + "type": "" + } + ], + "src": "20483:577:31" + }, + { + "body": { + "nativeSrc": "21160:228:31", + "nodeType": "YulBlock", + "src": "21160:228:31", + "statements": [ + { + "body": { + "nativeSrc": "21206:16:31", + "nodeType": "YulBlock", + "src": "21206:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21215:1:31", + "nodeType": "YulLiteral", + "src": "21215:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21218:1:31", + "nodeType": "YulLiteral", + "src": "21218:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21208:6:31", + "nodeType": "YulIdentifier", + "src": "21208:6:31" + }, + "nativeSrc": "21208:12:31", + "nodeType": "YulFunctionCall", + "src": "21208:12:31" + }, + "nativeSrc": "21208:12:31", + "nodeType": "YulExpressionStatement", + "src": "21208:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "21181:7:31", + "nodeType": "YulIdentifier", + "src": "21181:7:31" + }, + { + "name": "headStart", + "nativeSrc": "21190:9:31", + "nodeType": "YulIdentifier", + "src": "21190:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21177:3:31", + "nodeType": "YulIdentifier", + "src": "21177:3:31" + }, + "nativeSrc": "21177:23:31", + "nodeType": "YulFunctionCall", + "src": "21177:23:31" + }, + { + "kind": "number", + "nativeSrc": "21202:2:31", + "nodeType": "YulLiteral", + "src": "21202:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21173:3:31", + "nodeType": "YulIdentifier", + "src": "21173:3:31" + }, + "nativeSrc": "21173:32:31", + "nodeType": "YulFunctionCall", + "src": "21173:32:31" + }, + "nativeSrc": "21170:52:31", + "nodeType": "YulIf", + "src": "21170:52:31" + }, + { + "nativeSrc": "21231:36:31", + "nodeType": "YulVariableDeclaration", + "src": "21231:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21257:9:31", + "nodeType": "YulIdentifier", + "src": "21257:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21244:12:31", + "nodeType": "YulIdentifier", + "src": "21244:12:31" + }, + "nativeSrc": "21244:23:31", + "nodeType": "YulFunctionCall", + "src": "21244:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "21235:5:31", + "nodeType": "YulTypedName", + "src": "21235:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "21301:5:31", + "nodeType": "YulIdentifier", + "src": "21301:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "21276:24:31", + "nodeType": "YulIdentifier", + "src": "21276:24:31" + }, + "nativeSrc": "21276:31:31", + "nodeType": "YulFunctionCall", + "src": "21276:31:31" + }, + "nativeSrc": "21276:31:31", + "nodeType": "YulExpressionStatement", + "src": "21276:31:31" + }, + { + "nativeSrc": "21316:15:31", + "nodeType": "YulAssignment", + "src": "21316:15:31", + "value": { + "name": "value", + "nativeSrc": "21326:5:31", + "nodeType": "YulIdentifier", + "src": "21326:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "21316:6:31", + "nodeType": "YulIdentifier", + "src": "21316:6:31" + } + ] + }, + { + "nativeSrc": "21340:42:31", + "nodeType": "YulAssignment", + "src": "21340:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21367:9:31", + "nodeType": "YulIdentifier", + "src": "21367:9:31" + }, + { + "kind": "number", + "nativeSrc": "21378:2:31", + "nodeType": "YulLiteral", + "src": "21378:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21363:3:31", + "nodeType": "YulIdentifier", + "src": "21363:3:31" + }, + "nativeSrc": "21363:18:31", + "nodeType": "YulFunctionCall", + "src": "21363:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21350:12:31", + "nodeType": "YulIdentifier", + "src": "21350:12:31" + }, + "nativeSrc": "21350:32:31", + "nodeType": "YulFunctionCall", + "src": "21350:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "21340:6:31", + "nodeType": "YulIdentifier", + "src": "21340:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payablet_uint256", + "nativeSrc": "21065:323:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "21118:9:31", + "nodeType": "YulTypedName", + "src": "21118:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "21129:7:31", + "nodeType": "YulTypedName", + "src": "21129:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "21141:6:31", + "nodeType": "YulTypedName", + "src": "21141:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "21149:6:31", + "nodeType": "YulTypedName", + "src": "21149:6:31", + "type": "" + } + ], + "src": "21065:323:31" + }, + { + "body": { + "nativeSrc": "21425:95:31", + "nodeType": "YulBlock", + "src": "21425:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21442:1:31", + "nodeType": "YulLiteral", + "src": "21442:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21449:3:31", + "nodeType": "YulLiteral", + "src": "21449:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "21454:10:31", + "nodeType": "YulLiteral", + "src": "21454:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21445:3:31", + "nodeType": "YulIdentifier", + "src": "21445:3:31" + }, + "nativeSrc": "21445:20:31", + "nodeType": "YulFunctionCall", + "src": "21445:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21435:6:31", + "nodeType": "YulIdentifier", + "src": "21435:6:31" + }, + "nativeSrc": "21435:31:31", + "nodeType": "YulFunctionCall", + "src": "21435:31:31" + }, + "nativeSrc": "21435:31:31", + "nodeType": "YulExpressionStatement", + "src": "21435:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21482:1:31", + "nodeType": "YulLiteral", + "src": "21482:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "21485:4:31", + "nodeType": "YulLiteral", + "src": "21485:4:31", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21475:6:31", + "nodeType": "YulIdentifier", + "src": "21475:6:31" + }, + "nativeSrc": "21475:15:31", + "nodeType": "YulFunctionCall", + "src": "21475:15:31" + }, + "nativeSrc": "21475:15:31", + "nodeType": "YulExpressionStatement", + "src": "21475:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21506:1:31", + "nodeType": "YulLiteral", + "src": "21506:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21509:4:31", + "nodeType": "YulLiteral", + "src": "21509:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21499:6:31", + "nodeType": "YulIdentifier", + "src": "21499:6:31" + }, + "nativeSrc": "21499:15:31", + "nodeType": "YulFunctionCall", + "src": "21499:15:31" + }, + "nativeSrc": "21499:15:31", + "nodeType": "YulExpressionStatement", + "src": "21499:15:31" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "21393:127:31", + "nodeType": "YulFunctionDefinition", + "src": "21393:127:31" + }, + { + "body": { + "nativeSrc": "21616:557:31", + "nodeType": "YulBlock", + "src": "21616:557:31", + "statements": [ + { + "body": { + "nativeSrc": "21662:16:31", + "nodeType": "YulBlock", + "src": "21662:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21671:1:31", + "nodeType": "YulLiteral", + "src": "21671:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21674:1:31", + "nodeType": "YulLiteral", + "src": "21674:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21664:6:31", + "nodeType": "YulIdentifier", + "src": "21664:6:31" + }, + "nativeSrc": "21664:12:31", + "nodeType": "YulFunctionCall", + "src": "21664:12:31" + }, + "nativeSrc": "21664:12:31", + "nodeType": "YulExpressionStatement", + "src": "21664:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "21637:7:31", + "nodeType": "YulIdentifier", + "src": "21637:7:31" + }, + { + "name": "headStart", + "nativeSrc": "21646:9:31", + "nodeType": "YulIdentifier", + "src": "21646:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21633:3:31", + "nodeType": "YulIdentifier", + "src": "21633:3:31" + }, + "nativeSrc": "21633:23:31", + "nodeType": "YulFunctionCall", + "src": "21633:23:31" + }, + { + "kind": "number", + "nativeSrc": "21658:2:31", + "nodeType": "YulLiteral", + "src": "21658:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21629:3:31", + "nodeType": "YulIdentifier", + "src": "21629:3:31" + }, + "nativeSrc": "21629:32:31", + "nodeType": "YulFunctionCall", + "src": "21629:32:31" + }, + "nativeSrc": "21626:52:31", + "nodeType": "YulIf", + "src": "21626:52:31" + }, + { + "nativeSrc": "21687:30:31", + "nodeType": "YulVariableDeclaration", + "src": "21687:30:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21707:9:31", + "nodeType": "YulIdentifier", + "src": "21707:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21701:5:31", + "nodeType": "YulIdentifier", + "src": "21701:5:31" + }, + "nativeSrc": "21701:16:31", + "nodeType": "YulFunctionCall", + "src": "21701:16:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "21691:6:31", + "nodeType": "YulTypedName", + "src": "21691:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21760:16:31", + "nodeType": "YulBlock", + "src": "21760:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21769:1:31", + "nodeType": "YulLiteral", + "src": "21769:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21772:1:31", + "nodeType": "YulLiteral", + "src": "21772:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21762:6:31", + "nodeType": "YulIdentifier", + "src": "21762:6:31" + }, + "nativeSrc": "21762:12:31", + "nodeType": "YulFunctionCall", + "src": "21762:12:31" + }, + "nativeSrc": "21762:12:31", + "nodeType": "YulExpressionStatement", + "src": "21762:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "21732:6:31", + "nodeType": "YulIdentifier", + "src": "21732:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21748:2:31", + "nodeType": "YulLiteral", + "src": "21748:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "21752:1:31", + "nodeType": "YulLiteral", + "src": "21752:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21744:3:31", + "nodeType": "YulIdentifier", + "src": "21744:3:31" + }, + "nativeSrc": "21744:10:31", + "nodeType": "YulFunctionCall", + "src": "21744:10:31" + }, + { + "kind": "number", + "nativeSrc": "21756:1:31", + "nodeType": "YulLiteral", + "src": "21756:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21740:3:31", + "nodeType": "YulIdentifier", + "src": "21740:3:31" + }, + "nativeSrc": "21740:18:31", + "nodeType": "YulFunctionCall", + "src": "21740:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21729:2:31", + "nodeType": "YulIdentifier", + "src": "21729:2:31" + }, + "nativeSrc": "21729:30:31", + "nodeType": "YulFunctionCall", + "src": "21729:30:31" + }, + "nativeSrc": "21726:50:31", + "nodeType": "YulIf", + "src": "21726:50:31" + }, + { + "nativeSrc": "21785:32:31", + "nodeType": "YulVariableDeclaration", + "src": "21785:32:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21799:9:31", + "nodeType": "YulIdentifier", + "src": "21799:9:31" + }, + { + "name": "offset", + "nativeSrc": "21810:6:31", + "nodeType": "YulIdentifier", + "src": "21810:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21795:3:31", + "nodeType": "YulIdentifier", + "src": "21795:3:31" + }, + "nativeSrc": "21795:22:31", + "nodeType": "YulFunctionCall", + "src": "21795:22:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "21789:2:31", + "nodeType": "YulTypedName", + "src": "21789:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21865:16:31", + "nodeType": "YulBlock", + "src": "21865:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21874:1:31", + "nodeType": "YulLiteral", + "src": "21874:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21877:1:31", + "nodeType": "YulLiteral", + "src": "21877:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21867:6:31", + "nodeType": "YulIdentifier", + "src": "21867:6:31" + }, + "nativeSrc": "21867:12:31", + "nodeType": "YulFunctionCall", + "src": "21867:12:31" + }, + "nativeSrc": "21867:12:31", + "nodeType": "YulExpressionStatement", + "src": "21867:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "21844:2:31", + "nodeType": "YulIdentifier", + "src": "21844:2:31" + }, + { + "kind": "number", + "nativeSrc": "21848:4:31", + "nodeType": "YulLiteral", + "src": "21848:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21840:3:31", + "nodeType": "YulIdentifier", + "src": "21840:3:31" + }, + "nativeSrc": "21840:13:31", + "nodeType": "YulFunctionCall", + "src": "21840:13:31" + }, + { + "name": "dataEnd", + "nativeSrc": "21855:7:31", + "nodeType": "YulIdentifier", + "src": "21855:7:31" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21836:3:31", + "nodeType": "YulIdentifier", + "src": "21836:3:31" + }, + "nativeSrc": "21836:27:31", + "nodeType": "YulFunctionCall", + "src": "21836:27:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21829:6:31", + "nodeType": "YulIdentifier", + "src": "21829:6:31" + }, + "nativeSrc": "21829:35:31", + "nodeType": "YulFunctionCall", + "src": "21829:35:31" + }, + "nativeSrc": "21826:55:31", + "nodeType": "YulIf", + "src": "21826:55:31" + }, + { + "nativeSrc": "21890:19:31", + "nodeType": "YulVariableDeclaration", + "src": "21890:19:31", + "value": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "21906:2:31", + "nodeType": "YulIdentifier", + "src": "21906:2:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21900:5:31", + "nodeType": "YulIdentifier", + "src": "21900:5:31" + }, + "nativeSrc": "21900:9:31", + "nodeType": "YulFunctionCall", + "src": "21900:9:31" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "21894:2:31", + "nodeType": "YulTypedName", + "src": "21894:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "21918:61:31", + "nodeType": "YulVariableDeclaration", + "src": "21918:61:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "21975:2:31", + "nodeType": "YulIdentifier", + "src": "21975:2:31" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "21947:27:31", + "nodeType": "YulIdentifier", + "src": "21947:27:31" + }, + "nativeSrc": "21947:31:31", + "nodeType": "YulFunctionCall", + "src": "21947:31:31" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "21931:15:31", + "nodeType": "YulIdentifier", + "src": "21931:15:31" + }, + "nativeSrc": "21931:48:31", + "nodeType": "YulFunctionCall", + "src": "21931:48:31" + }, + "variables": [ + { + "name": "array", + "nativeSrc": "21922:5:31", + "nodeType": "YulTypedName", + "src": "21922:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nativeSrc": "21995:5:31", + "nodeType": "YulIdentifier", + "src": "21995:5:31" + }, + { + "name": "_2", + "nativeSrc": "22002:2:31", + "nodeType": "YulIdentifier", + "src": "22002:2:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21988:6:31", + "nodeType": "YulIdentifier", + "src": "21988:6:31" + }, + "nativeSrc": "21988:17:31", + "nodeType": "YulFunctionCall", + "src": "21988:17:31" + }, + "nativeSrc": "21988:17:31", + "nodeType": "YulExpressionStatement", + "src": "21988:17:31" + }, + { + "body": { + "nativeSrc": "22051:16:31", + "nodeType": "YulBlock", + "src": "22051:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22060:1:31", + "nodeType": "YulLiteral", + "src": "22060:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22063:1:31", + "nodeType": "YulLiteral", + "src": "22063:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22053:6:31", + "nodeType": "YulIdentifier", + "src": "22053:6:31" + }, + "nativeSrc": "22053:12:31", + "nodeType": "YulFunctionCall", + "src": "22053:12:31" + }, + "nativeSrc": "22053:12:31", + "nodeType": "YulExpressionStatement", + "src": "22053:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "22028:2:31", + "nodeType": "YulIdentifier", + "src": "22028:2:31" + }, + { + "name": "_2", + "nativeSrc": "22032:2:31", + "nodeType": "YulIdentifier", + "src": "22032:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22024:3:31", + "nodeType": "YulIdentifier", + "src": "22024:3:31" + }, + "nativeSrc": "22024:11:31", + "nodeType": "YulFunctionCall", + "src": "22024:11:31" + }, + { + "kind": "number", + "nativeSrc": "22037:2:31", + "nodeType": "YulLiteral", + "src": "22037:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22020:3:31", + "nodeType": "YulIdentifier", + "src": "22020:3:31" + }, + "nativeSrc": "22020:20:31", + "nodeType": "YulFunctionCall", + "src": "22020:20:31" + }, + { + "name": "dataEnd", + "nativeSrc": "22042:7:31", + "nodeType": "YulIdentifier", + "src": "22042:7:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22017:2:31", + "nodeType": "YulIdentifier", + "src": "22017:2:31" + }, + "nativeSrc": "22017:33:31", + "nodeType": "YulFunctionCall", + "src": "22017:33:31" + }, + "nativeSrc": "22014:53:31", + "nodeType": "YulIf", + "src": "22014:53:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "22115:2:31", + "nodeType": "YulIdentifier", + "src": "22115:2:31" + }, + { + "kind": "number", + "nativeSrc": "22119:2:31", + "nodeType": "YulLiteral", + "src": "22119:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22111:3:31", + "nodeType": "YulIdentifier", + "src": "22111:3:31" + }, + "nativeSrc": "22111:11:31", + "nodeType": "YulFunctionCall", + "src": "22111:11:31" + }, + { + "arguments": [ + { + "name": "array", + "nativeSrc": "22128:5:31", + "nodeType": "YulIdentifier", + "src": "22128:5:31" + }, + { + "kind": "number", + "nativeSrc": "22135:2:31", + "nodeType": "YulLiteral", + "src": "22135:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22124:3:31", + "nodeType": "YulIdentifier", + "src": "22124:3:31" + }, + "nativeSrc": "22124:14:31", + "nodeType": "YulFunctionCall", + "src": "22124:14:31" + }, + { + "name": "_2", + "nativeSrc": "22140:2:31", + "nodeType": "YulIdentifier", + "src": "22140:2:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "22076:34:31", + "nodeType": "YulIdentifier", + "src": "22076:34:31" + }, + "nativeSrc": "22076:67:31", + "nodeType": "YulFunctionCall", + "src": "22076:67:31" + }, + "nativeSrc": "22076:67:31", + "nodeType": "YulExpressionStatement", + "src": "22076:67:31" + }, + { + "nativeSrc": "22152:15:31", + "nodeType": "YulAssignment", + "src": "22152:15:31", + "value": { + "name": "array", + "nativeSrc": "22162:5:31", + "nodeType": "YulIdentifier", + "src": "22162:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22152:6:31", + "nodeType": "YulIdentifier", + "src": "22152:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", + "nativeSrc": "21525:648:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "21582:9:31", + "nodeType": "YulTypedName", + "src": "21582:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "21593:7:31", + "nodeType": "YulTypedName", + "src": "21593:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "21605:6:31", + "nodeType": "YulTypedName", + "src": "21605:6:31", + "type": "" + } + ], + "src": "21525:648:31" + }, + { + "body": { + "nativeSrc": "22335:218:31", + "nodeType": "YulBlock", + "src": "22335:218:31", + "statements": [ + { + "nativeSrc": "22345:26:31", + "nodeType": "YulAssignment", + "src": "22345:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22357:9:31", + "nodeType": "YulIdentifier", + "src": "22357:9:31" + }, + { + "kind": "number", + "nativeSrc": "22368:2:31", + "nodeType": "YulLiteral", + "src": "22368:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22353:3:31", + "nodeType": "YulIdentifier", + "src": "22353:3:31" + }, + "nativeSrc": "22353:18:31", + "nodeType": "YulFunctionCall", + "src": "22353:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "22345:4:31", + "nodeType": "YulIdentifier", + "src": "22345:4:31" + } + ] + }, + { + "nativeSrc": "22380:29:31", + "nodeType": "YulVariableDeclaration", + "src": "22380:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22398:3:31", + "nodeType": "YulLiteral", + "src": "22398:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "22403:1:31", + "nodeType": "YulLiteral", + "src": "22403:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22394:3:31", + "nodeType": "YulIdentifier", + "src": "22394:3:31" + }, + "nativeSrc": "22394:11:31", + "nodeType": "YulFunctionCall", + "src": "22394:11:31" + }, + { + "kind": "number", + "nativeSrc": "22407:1:31", + "nodeType": "YulLiteral", + "src": "22407:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22390:3:31", + "nodeType": "YulIdentifier", + "src": "22390:3:31" + }, + "nativeSrc": "22390:19:31", + "nodeType": "YulFunctionCall", + "src": "22390:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "22384:2:31", + "nodeType": "YulTypedName", + "src": "22384:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22425:9:31", + "nodeType": "YulIdentifier", + "src": "22425:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "22440:6:31", + "nodeType": "YulIdentifier", + "src": "22440:6:31" + }, + { + "name": "_1", + "nativeSrc": "22448:2:31", + "nodeType": "YulIdentifier", + "src": "22448:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22436:3:31", + "nodeType": "YulIdentifier", + "src": "22436:3:31" + }, + "nativeSrc": "22436:15:31", + "nodeType": "YulFunctionCall", + "src": "22436:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22418:6:31", + "nodeType": "YulIdentifier", + "src": "22418:6:31" + }, + "nativeSrc": "22418:34:31", + "nodeType": "YulFunctionCall", + "src": "22418:34:31" + }, + "nativeSrc": "22418:34:31", + "nodeType": "YulExpressionStatement", + "src": "22418:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22472:9:31", + "nodeType": "YulIdentifier", + "src": "22472:9:31" + }, + { + "kind": "number", + "nativeSrc": "22483:2:31", + "nodeType": "YulLiteral", + "src": "22483:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22468:3:31", + "nodeType": "YulIdentifier", + "src": "22468:3:31" + }, + "nativeSrc": "22468:18:31", + "nodeType": "YulFunctionCall", + "src": "22468:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "22492:6:31", + "nodeType": "YulIdentifier", + "src": "22492:6:31" + }, + { + "name": "_1", + "nativeSrc": "22500:2:31", + "nodeType": "YulIdentifier", + "src": "22500:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22488:3:31", + "nodeType": "YulIdentifier", + "src": "22488:3:31" + }, + "nativeSrc": "22488:15:31", + "nodeType": "YulFunctionCall", + "src": "22488:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22461:6:31", + "nodeType": "YulIdentifier", + "src": "22461:6:31" + }, + "nativeSrc": "22461:43:31", + "nodeType": "YulFunctionCall", + "src": "22461:43:31" + }, + "nativeSrc": "22461:43:31", + "nodeType": "YulExpressionStatement", + "src": "22461:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22524:9:31", + "nodeType": "YulIdentifier", + "src": "22524:9:31" + }, + { + "kind": "number", + "nativeSrc": "22535:2:31", + "nodeType": "YulLiteral", + "src": "22535:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22520:3:31", + "nodeType": "YulIdentifier", + "src": "22520:3:31" + }, + "nativeSrc": "22520:18:31", + "nodeType": "YulFunctionCall", + "src": "22520:18:31" + }, + { + "name": "value2", + "nativeSrc": "22540:6:31", + "nodeType": "YulIdentifier", + "src": "22540:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22513:6:31", + "nodeType": "YulIdentifier", + "src": "22513:6:31" + }, + "nativeSrc": "22513:34:31", + "nodeType": "YulFunctionCall", + "src": "22513:34:31" + }, + "nativeSrc": "22513:34:31", + "nodeType": "YulExpressionStatement", + "src": "22513:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "22178:375:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22288:9:31", + "nodeType": "YulTypedName", + "src": "22288:9:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "22299:6:31", + "nodeType": "YulTypedName", + "src": "22299:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22307:6:31", + "nodeType": "YulTypedName", + "src": "22307:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "22315:6:31", + "nodeType": "YulTypedName", + "src": "22315:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "22326:4:31", + "nodeType": "YulTypedName", + "src": "22326:4:31", + "type": "" + } + ], + "src": "22178:375:31" + }, + { + "body": { + "nativeSrc": "22636:167:31", + "nodeType": "YulBlock", + "src": "22636:167:31", + "statements": [ + { + "body": { + "nativeSrc": "22682:16:31", + "nodeType": "YulBlock", + "src": "22682:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22691:1:31", + "nodeType": "YulLiteral", + "src": "22691:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22694:1:31", + "nodeType": "YulLiteral", + "src": "22694:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22684:6:31", + "nodeType": "YulIdentifier", + "src": "22684:6:31" + }, + "nativeSrc": "22684:12:31", + "nodeType": "YulFunctionCall", + "src": "22684:12:31" + }, + "nativeSrc": "22684:12:31", + "nodeType": "YulExpressionStatement", + "src": "22684:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "22657:7:31", + "nodeType": "YulIdentifier", + "src": "22657:7:31" + }, + { + "name": "headStart", + "nativeSrc": "22666:9:31", + "nodeType": "YulIdentifier", + "src": "22666:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22653:3:31", + "nodeType": "YulIdentifier", + "src": "22653:3:31" + }, + "nativeSrc": "22653:23:31", + "nodeType": "YulFunctionCall", + "src": "22653:23:31" + }, + { + "kind": "number", + "nativeSrc": "22678:2:31", + "nodeType": "YulLiteral", + "src": "22678:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "22649:3:31", + "nodeType": "YulIdentifier", + "src": "22649:3:31" + }, + "nativeSrc": "22649:32:31", + "nodeType": "YulFunctionCall", + "src": "22649:32:31" + }, + "nativeSrc": "22646:52:31", + "nodeType": "YulIf", + "src": "22646:52:31" + }, + { + "nativeSrc": "22707:29:31", + "nodeType": "YulVariableDeclaration", + "src": "22707:29:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22726:9:31", + "nodeType": "YulIdentifier", + "src": "22726:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22720:5:31", + "nodeType": "YulIdentifier", + "src": "22720:5:31" + }, + "nativeSrc": "22720:16:31", + "nodeType": "YulFunctionCall", + "src": "22720:16:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "22711:5:31", + "nodeType": "YulTypedName", + "src": "22711:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "22767:5:31", + "nodeType": "YulIdentifier", + "src": "22767:5:31" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "22745:21:31", + "nodeType": "YulIdentifier", + "src": "22745:21:31" + }, + "nativeSrc": "22745:28:31", + "nodeType": "YulFunctionCall", + "src": "22745:28:31" + }, + "nativeSrc": "22745:28:31", + "nodeType": "YulExpressionStatement", + "src": "22745:28:31" + }, + { + "nativeSrc": "22782:15:31", + "nodeType": "YulAssignment", + "src": "22782:15:31", + "value": { + "name": "value", + "nativeSrc": "22792:5:31", + "nodeType": "YulIdentifier", + "src": "22792:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22782:6:31", + "nodeType": "YulIdentifier", + "src": "22782:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "22558:245:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22602:9:31", + "nodeType": "YulTypedName", + "src": "22602:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "22613:7:31", + "nodeType": "YulTypedName", + "src": "22613:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "22625:6:31", + "nodeType": "YulTypedName", + "src": "22625:6:31", + "type": "" + } + ], + "src": "22558:245:31" + }, + { + "body": { + "nativeSrc": "22840:95:31", + "nodeType": "YulBlock", + "src": "22840:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22857:1:31", + "nodeType": "YulLiteral", + "src": "22857:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22864:3:31", + "nodeType": "YulLiteral", + "src": "22864:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "22869:10:31", + "nodeType": "YulLiteral", + "src": "22869:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22860:3:31", + "nodeType": "YulIdentifier", + "src": "22860:3:31" + }, + "nativeSrc": "22860:20:31", + "nodeType": "YulFunctionCall", + "src": "22860:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22850:6:31", + "nodeType": "YulIdentifier", + "src": "22850:6:31" + }, + "nativeSrc": "22850:31:31", + "nodeType": "YulFunctionCall", + "src": "22850:31:31" + }, + "nativeSrc": "22850:31:31", + "nodeType": "YulExpressionStatement", + "src": "22850:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22897:1:31", + "nodeType": "YulLiteral", + "src": "22897:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "22900:4:31", + "nodeType": "YulLiteral", + "src": "22900:4:31", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22890:6:31", + "nodeType": "YulIdentifier", + "src": "22890:6:31" + }, + "nativeSrc": "22890:15:31", + "nodeType": "YulFunctionCall", + "src": "22890:15:31" + }, + "nativeSrc": "22890:15:31", + "nodeType": "YulExpressionStatement", + "src": "22890:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22921:1:31", + "nodeType": "YulLiteral", + "src": "22921:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22924:4:31", + "nodeType": "YulLiteral", + "src": "22924:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22914:6:31", + "nodeType": "YulIdentifier", + "src": "22914:6:31" + }, + "nativeSrc": "22914:15:31", + "nodeType": "YulFunctionCall", + "src": "22914:15:31" + }, + "nativeSrc": "22914:15:31", + "nodeType": "YulExpressionStatement", + "src": "22914:15:31" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "22808:127:31", + "nodeType": "YulFunctionDefinition", + "src": "22808:127:31" + }, + { + "body": { + "nativeSrc": "22989:79:31", + "nodeType": "YulBlock", + "src": "22989:79:31", + "statements": [ + { + "nativeSrc": "22999:17:31", + "nodeType": "YulAssignment", + "src": "22999:17:31", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "23011:1:31", + "nodeType": "YulIdentifier", + "src": "23011:1:31" + }, + { + "name": "y", + "nativeSrc": "23014:1:31", + "nodeType": "YulIdentifier", + "src": "23014:1:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23007:3:31", + "nodeType": "YulIdentifier", + "src": "23007:3:31" + }, + "nativeSrc": "23007:9:31", + "nodeType": "YulFunctionCall", + "src": "23007:9:31" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "22999:4:31", + "nodeType": "YulIdentifier", + "src": "22999:4:31" + } + ] + }, + { + "body": { + "nativeSrc": "23040:22:31", + "nodeType": "YulBlock", + "src": "23040:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "23042:16:31", + "nodeType": "YulIdentifier", + "src": "23042:16:31" + }, + "nativeSrc": "23042:18:31", + "nodeType": "YulFunctionCall", + "src": "23042:18:31" + }, + "nativeSrc": "23042:18:31", + "nodeType": "YulExpressionStatement", + "src": "23042:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "23031:4:31", + "nodeType": "YulIdentifier", + "src": "23031:4:31" + }, + { + "name": "x", + "nativeSrc": "23037:1:31", + "nodeType": "YulIdentifier", + "src": "23037:1:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "23028:2:31", + "nodeType": "YulIdentifier", + "src": "23028:2:31" + }, + "nativeSrc": "23028:11:31", + "nodeType": "YulFunctionCall", + "src": "23028:11:31" + }, + "nativeSrc": "23025:37:31", + "nodeType": "YulIf", + "src": "23025:37:31" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "22940:128:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "22971:1:31", + "nodeType": "YulTypedName", + "src": "22971:1:31", + "type": "" + }, + { + "name": "y", + "nativeSrc": "22974:1:31", + "nodeType": "YulTypedName", + "src": "22974:1:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "22980:4:31", + "nodeType": "YulTypedName", + "src": "22980:4:31", + "type": "" + } + ], + "src": "22940:128:31" + }, + { + "body": { + "nativeSrc": "23210:145:31", + "nodeType": "YulBlock", + "src": "23210:145:31", + "statements": [ + { + "nativeSrc": "23220:26:31", + "nodeType": "YulAssignment", + "src": "23220:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23232:9:31", + "nodeType": "YulIdentifier", + "src": "23232:9:31" + }, + { + "kind": "number", + "nativeSrc": "23243:2:31", + "nodeType": "YulLiteral", + "src": "23243:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23228:3:31", + "nodeType": "YulIdentifier", + "src": "23228:3:31" + }, + "nativeSrc": "23228:18:31", + "nodeType": "YulFunctionCall", + "src": "23228:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23220:4:31", + "nodeType": "YulIdentifier", + "src": "23220:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23262:9:31", + "nodeType": "YulIdentifier", + "src": "23262:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23277:6:31", + "nodeType": "YulIdentifier", + "src": "23277:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23293:3:31", + "nodeType": "YulLiteral", + "src": "23293:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23298:1:31", + "nodeType": "YulLiteral", + "src": "23298:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23289:3:31", + "nodeType": "YulIdentifier", + "src": "23289:3:31" + }, + "nativeSrc": "23289:11:31", + "nodeType": "YulFunctionCall", + "src": "23289:11:31" + }, + { + "kind": "number", + "nativeSrc": "23302:1:31", + "nodeType": "YulLiteral", + "src": "23302:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23285:3:31", + "nodeType": "YulIdentifier", + "src": "23285:3:31" + }, + "nativeSrc": "23285:19:31", + "nodeType": "YulFunctionCall", + "src": "23285:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23273:3:31", + "nodeType": "YulIdentifier", + "src": "23273:3:31" + }, + "nativeSrc": "23273:32:31", + "nodeType": "YulFunctionCall", + "src": "23273:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23255:6:31", + "nodeType": "YulIdentifier", + "src": "23255:6:31" + }, + "nativeSrc": "23255:51:31", + "nodeType": "YulFunctionCall", + "src": "23255:51:31" + }, + "nativeSrc": "23255:51:31", + "nodeType": "YulExpressionStatement", + "src": "23255:51:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23326:9:31", + "nodeType": "YulIdentifier", + "src": "23326:9:31" + }, + { + "kind": "number", + "nativeSrc": "23337:2:31", + "nodeType": "YulLiteral", + "src": "23337:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23322:3:31", + "nodeType": "YulIdentifier", + "src": "23322:3:31" + }, + "nativeSrc": "23322:18:31", + "nodeType": "YulFunctionCall", + "src": "23322:18:31" + }, + { + "name": "value1", + "nativeSrc": "23342:6:31", + "nodeType": "YulIdentifier", + "src": "23342:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23315:6:31", + "nodeType": "YulIdentifier", + "src": "23315:6:31" + }, + "nativeSrc": "23315:34:31", + "nodeType": "YulFunctionCall", + "src": "23315:34:31" + }, + "nativeSrc": "23315:34:31", + "nodeType": "YulExpressionStatement", + "src": "23315:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed", + "nativeSrc": "23073:282:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23171:9:31", + "nodeType": "YulTypedName", + "src": "23171:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "23182:6:31", + "nodeType": "YulTypedName", + "src": "23182:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23190:6:31", + "nodeType": "YulTypedName", + "src": "23190:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23201:4:31", + "nodeType": "YulTypedName", + "src": "23201:4:31", + "type": "" + } + ], + "src": "23073:282:31" + }, + { + "body": { + "nativeSrc": "23468:101:31", + "nodeType": "YulBlock", + "src": "23468:101:31", + "statements": [ + { + "nativeSrc": "23478:26:31", + "nodeType": "YulAssignment", + "src": "23478:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23490:9:31", + "nodeType": "YulIdentifier", + "src": "23490:9:31" + }, + { + "kind": "number", + "nativeSrc": "23501:2:31", + "nodeType": "YulLiteral", + "src": "23501:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23486:3:31", + "nodeType": "YulIdentifier", + "src": "23486:3:31" + }, + "nativeSrc": "23486:18:31", + "nodeType": "YulFunctionCall", + "src": "23486:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23478:4:31", + "nodeType": "YulIdentifier", + "src": "23478:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23520:9:31", + "nodeType": "YulIdentifier", + "src": "23520:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23535:6:31", + "nodeType": "YulIdentifier", + "src": "23535:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23551:2:31", + "nodeType": "YulLiteral", + "src": "23551:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "23555:1:31", + "nodeType": "YulLiteral", + "src": "23555:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23547:3:31", + "nodeType": "YulIdentifier", + "src": "23547:3:31" + }, + "nativeSrc": "23547:10:31", + "nodeType": "YulFunctionCall", + "src": "23547:10:31" + }, + { + "kind": "number", + "nativeSrc": "23559:1:31", + "nodeType": "YulLiteral", + "src": "23559:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23543:3:31", + "nodeType": "YulIdentifier", + "src": "23543:3:31" + }, + "nativeSrc": "23543:18:31", + "nodeType": "YulFunctionCall", + "src": "23543:18:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23531:3:31", + "nodeType": "YulIdentifier", + "src": "23531:3:31" + }, + "nativeSrc": "23531:31:31", + "nodeType": "YulFunctionCall", + "src": "23531:31:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23513:6:31", + "nodeType": "YulIdentifier", + "src": "23513:6:31" + }, + "nativeSrc": "23513:50:31", + "nodeType": "YulFunctionCall", + "src": "23513:50:31" + }, + "nativeSrc": "23513:50:31", + "nodeType": "YulExpressionStatement", + "src": "23513:50:31" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "23360:209:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23437:9:31", + "nodeType": "YulTypedName", + "src": "23437:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23448:6:31", + "nodeType": "YulTypedName", + "src": "23448:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23459:4:31", + "nodeType": "YulTypedName", + "src": "23459:4:31", + "type": "" + } + ], + "src": "23360:209:31" + }, + { + "body": { + "nativeSrc": "23871:447:31", + "nodeType": "YulBlock", + "src": "23871:447:31", + "statements": [ + { + "nativeSrc": "23881:27:31", + "nodeType": "YulAssignment", + "src": "23881:27:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23893:9:31", + "nodeType": "YulIdentifier", + "src": "23893:9:31" + }, + { + "kind": "number", + "nativeSrc": "23904:3:31", + "nodeType": "YulLiteral", + "src": "23904:3:31", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23889:3:31", + "nodeType": "YulIdentifier", + "src": "23889:3:31" + }, + "nativeSrc": "23889:19:31", + "nodeType": "YulFunctionCall", + "src": "23889:19:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23881:4:31", + "nodeType": "YulIdentifier", + "src": "23881:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23924:9:31", + "nodeType": "YulIdentifier", + "src": "23924:9:31" + }, + { + "name": "value0", + "nativeSrc": "23935:6:31", + "nodeType": "YulIdentifier", + "src": "23935:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23917:6:31", + "nodeType": "YulIdentifier", + "src": "23917:6:31" + }, + "nativeSrc": "23917:25:31", + "nodeType": "YulFunctionCall", + "src": "23917:25:31" + }, + "nativeSrc": "23917:25:31", + "nodeType": "YulExpressionStatement", + "src": "23917:25:31" + }, + { + "nativeSrc": "23951:29:31", + "nodeType": "YulVariableDeclaration", + "src": "23951:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23969:3:31", + "nodeType": "YulLiteral", + "src": "23969:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23974:1:31", + "nodeType": "YulLiteral", + "src": "23974:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23965:3:31", + "nodeType": "YulIdentifier", + "src": "23965:3:31" + }, + "nativeSrc": "23965:11:31", + "nodeType": "YulFunctionCall", + "src": "23965:11:31" + }, + { + "kind": "number", + "nativeSrc": "23978:1:31", + "nodeType": "YulLiteral", + "src": "23978:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23961:3:31", + "nodeType": "YulIdentifier", + "src": "23961:3:31" + }, + "nativeSrc": "23961:19:31", + "nodeType": "YulFunctionCall", + "src": "23961:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "23955:2:31", + "nodeType": "YulTypedName", + "src": "23955:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24000:9:31", + "nodeType": "YulIdentifier", + "src": "24000:9:31" + }, + { + "kind": "number", + "nativeSrc": "24011:2:31", + "nodeType": "YulLiteral", + "src": "24011:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23996:3:31", + "nodeType": "YulIdentifier", + "src": "23996:3:31" + }, + "nativeSrc": "23996:18:31", + "nodeType": "YulFunctionCall", + "src": "23996:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "24020:6:31", + "nodeType": "YulIdentifier", + "src": "24020:6:31" + }, + { + "name": "_1", + "nativeSrc": "24028:2:31", + "nodeType": "YulIdentifier", + "src": "24028:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24016:3:31", + "nodeType": "YulIdentifier", + "src": "24016:3:31" + }, + "nativeSrc": "24016:15:31", + "nodeType": "YulFunctionCall", + "src": "24016:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23989:6:31", + "nodeType": "YulIdentifier", + "src": "23989:6:31" + }, + "nativeSrc": "23989:43:31", + "nodeType": "YulFunctionCall", + "src": "23989:43:31" + }, + "nativeSrc": "23989:43:31", + "nodeType": "YulExpressionStatement", + "src": "23989:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24052:9:31", + "nodeType": "YulIdentifier", + "src": "24052:9:31" + }, + { + "kind": "number", + "nativeSrc": "24063:2:31", + "nodeType": "YulLiteral", + "src": "24063:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24048:3:31", + "nodeType": "YulIdentifier", + "src": "24048:3:31" + }, + "nativeSrc": "24048:18:31", + "nodeType": "YulFunctionCall", + "src": "24048:18:31" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "24072:6:31", + "nodeType": "YulIdentifier", + "src": "24072:6:31" + }, + { + "name": "_1", + "nativeSrc": "24080:2:31", + "nodeType": "YulIdentifier", + "src": "24080:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24068:3:31", + "nodeType": "YulIdentifier", + "src": "24068:3:31" + }, + "nativeSrc": "24068:15:31", + "nodeType": "YulFunctionCall", + "src": "24068:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24041:6:31", + "nodeType": "YulIdentifier", + "src": "24041:6:31" + }, + "nativeSrc": "24041:43:31", + "nodeType": "YulFunctionCall", + "src": "24041:43:31" + }, + "nativeSrc": "24041:43:31", + "nodeType": "YulExpressionStatement", + "src": "24041:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24104:9:31", + "nodeType": "YulIdentifier", + "src": "24104:9:31" + }, + { + "kind": "number", + "nativeSrc": "24115:2:31", + "nodeType": "YulLiteral", + "src": "24115:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24100:3:31", + "nodeType": "YulIdentifier", + "src": "24100:3:31" + }, + "nativeSrc": "24100:18:31", + "nodeType": "YulFunctionCall", + "src": "24100:18:31" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "24124:6:31", + "nodeType": "YulIdentifier", + "src": "24124:6:31" + }, + { + "name": "_1", + "nativeSrc": "24132:2:31", + "nodeType": "YulIdentifier", + "src": "24132:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24120:3:31", + "nodeType": "YulIdentifier", + "src": "24120:3:31" + }, + "nativeSrc": "24120:15:31", + "nodeType": "YulFunctionCall", + "src": "24120:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24093:6:31", + "nodeType": "YulIdentifier", + "src": "24093:6:31" + }, + "nativeSrc": "24093:43:31", + "nodeType": "YulFunctionCall", + "src": "24093:43:31" + }, + "nativeSrc": "24093:43:31", + "nodeType": "YulExpressionStatement", + "src": "24093:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24156:9:31", + "nodeType": "YulIdentifier", + "src": "24156:9:31" + }, + { + "kind": "number", + "nativeSrc": "24167:3:31", + "nodeType": "YulLiteral", + "src": "24167:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24152:3:31", + "nodeType": "YulIdentifier", + "src": "24152:3:31" + }, + "nativeSrc": "24152:19:31", + "nodeType": "YulFunctionCall", + "src": "24152:19:31" + }, + { + "name": "value4", + "nativeSrc": "24173:6:31", + "nodeType": "YulIdentifier", + "src": "24173:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24145:6:31", + "nodeType": "YulIdentifier", + "src": "24145:6:31" + }, + "nativeSrc": "24145:35:31", + "nodeType": "YulFunctionCall", + "src": "24145:35:31" + }, + "nativeSrc": "24145:35:31", + "nodeType": "YulExpressionStatement", + "src": "24145:35:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24200:9:31", + "nodeType": "YulIdentifier", + "src": "24200:9:31" + }, + { + "kind": "number", + "nativeSrc": "24211:3:31", + "nodeType": "YulLiteral", + "src": "24211:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24196:3:31", + "nodeType": "YulIdentifier", + "src": "24196:3:31" + }, + "nativeSrc": "24196:19:31", + "nodeType": "YulFunctionCall", + "src": "24196:19:31" + }, + { + "name": "value5", + "nativeSrc": "24217:6:31", + "nodeType": "YulIdentifier", + "src": "24217:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24189:6:31", + "nodeType": "YulIdentifier", + "src": "24189:6:31" + }, + "nativeSrc": "24189:35:31", + "nodeType": "YulFunctionCall", + "src": "24189:35:31" + }, + "nativeSrc": "24189:35:31", + "nodeType": "YulExpressionStatement", + "src": "24189:35:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24244:9:31", + "nodeType": "YulIdentifier", + "src": "24244:9:31" + }, + { + "kind": "number", + "nativeSrc": "24255:3:31", + "nodeType": "YulLiteral", + "src": "24255:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24240:3:31", + "nodeType": "YulIdentifier", + "src": "24240:3:31" + }, + "nativeSrc": "24240:19:31", + "nodeType": "YulFunctionCall", + "src": "24240:19:31" + }, + { + "name": "value6", + "nativeSrc": "24261:6:31", + "nodeType": "YulIdentifier", + "src": "24261:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24233:6:31", + "nodeType": "YulIdentifier", + "src": "24233:6:31" + }, + "nativeSrc": "24233:35:31", + "nodeType": "YulFunctionCall", + "src": "24233:35:31" + }, + "nativeSrc": "24233:35:31", + "nodeType": "YulExpressionStatement", + "src": "24233:35:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24288:9:31", + "nodeType": "YulIdentifier", + "src": "24288:9:31" + }, + { + "kind": "number", + "nativeSrc": "24299:3:31", + "nodeType": "YulLiteral", + "src": "24299:3:31", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24284:3:31", + "nodeType": "YulIdentifier", + "src": "24284:3:31" + }, + "nativeSrc": "24284:19:31", + "nodeType": "YulFunctionCall", + "src": "24284:19:31" + }, + { + "name": "value7", + "nativeSrc": "24305:6:31", + "nodeType": "YulIdentifier", + "src": "24305:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24277:6:31", + "nodeType": "YulIdentifier", + "src": "24277:6:31" + }, + "nativeSrc": "24277:35:31", + "nodeType": "YulFunctionCall", + "src": "24277:35:31" + }, + "nativeSrc": "24277:35:31", + "nodeType": "YulExpressionStatement", + "src": "24277:35:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "23574:744:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23784:9:31", + "nodeType": "YulTypedName", + "src": "23784:9:31", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "23795:6:31", + "nodeType": "YulTypedName", + "src": "23795:6:31", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "23803:6:31", + "nodeType": "YulTypedName", + "src": "23803:6:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "23811:6:31", + "nodeType": "YulTypedName", + "src": "23811:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "23819:6:31", + "nodeType": "YulTypedName", + "src": "23819:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "23827:6:31", + "nodeType": "YulTypedName", + "src": "23827:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "23835:6:31", + "nodeType": "YulTypedName", + "src": "23835:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "23843:6:31", + "nodeType": "YulTypedName", + "src": "23843:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23851:6:31", + "nodeType": "YulTypedName", + "src": "23851:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23862:4:31", + "nodeType": "YulTypedName", + "src": "23862:4:31", + "type": "" + } + ], + "src": "23574:744:31" + }, + { + "body": { + "nativeSrc": "24607:383:31", + "nodeType": "YulBlock", + "src": "24607:383:31", + "statements": [ + { + "nativeSrc": "24617:29:31", + "nodeType": "YulVariableDeclaration", + "src": "24617:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24635:3:31", + "nodeType": "YulLiteral", + "src": "24635:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "24640:1:31", + "nodeType": "YulLiteral", + "src": "24640:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "24631:3:31", + "nodeType": "YulIdentifier", + "src": "24631:3:31" + }, + "nativeSrc": "24631:11:31", + "nodeType": "YulFunctionCall", + "src": "24631:11:31" + }, + { + "kind": "number", + "nativeSrc": "24644:1:31", + "nodeType": "YulLiteral", + "src": "24644:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24627:3:31", + "nodeType": "YulIdentifier", + "src": "24627:3:31" + }, + "nativeSrc": "24627:19:31", + "nodeType": "YulFunctionCall", + "src": "24627:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "24621:2:31", + "nodeType": "YulTypedName", + "src": "24621:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24662:9:31", + "nodeType": "YulIdentifier", + "src": "24662:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "24677:6:31", + "nodeType": "YulIdentifier", + "src": "24677:6:31" + }, + { + "name": "_1", + "nativeSrc": "24685:2:31", + "nodeType": "YulIdentifier", + "src": "24685:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24673:3:31", + "nodeType": "YulIdentifier", + "src": "24673:3:31" + }, + "nativeSrc": "24673:15:31", + "nodeType": "YulFunctionCall", + "src": "24673:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24655:6:31", + "nodeType": "YulIdentifier", + "src": "24655:6:31" + }, + "nativeSrc": "24655:34:31", + "nodeType": "YulFunctionCall", + "src": "24655:34:31" + }, + "nativeSrc": "24655:34:31", + "nodeType": "YulExpressionStatement", + "src": "24655:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24709:9:31", + "nodeType": "YulIdentifier", + "src": "24709:9:31" + }, + { + "kind": "number", + "nativeSrc": "24720:2:31", + "nodeType": "YulLiteral", + "src": "24720:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24705:3:31", + "nodeType": "YulIdentifier", + "src": "24705:3:31" + }, + "nativeSrc": "24705:18:31", + "nodeType": "YulFunctionCall", + "src": "24705:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "24729:6:31", + "nodeType": "YulIdentifier", + "src": "24729:6:31" + }, + { + "name": "_1", + "nativeSrc": "24737:2:31", + "nodeType": "YulIdentifier", + "src": "24737:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24725:3:31", + "nodeType": "YulIdentifier", + "src": "24725:3:31" + }, + "nativeSrc": "24725:15:31", + "nodeType": "YulFunctionCall", + "src": "24725:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24698:6:31", + "nodeType": "YulIdentifier", + "src": "24698:6:31" + }, + "nativeSrc": "24698:43:31", + "nodeType": "YulFunctionCall", + "src": "24698:43:31" + }, + "nativeSrc": "24698:43:31", + "nodeType": "YulExpressionStatement", + "src": "24698:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24761:9:31", + "nodeType": "YulIdentifier", + "src": "24761:9:31" + }, + { + "kind": "number", + "nativeSrc": "24772:2:31", + "nodeType": "YulLiteral", + "src": "24772:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24757:3:31", + "nodeType": "YulIdentifier", + "src": "24757:3:31" + }, + "nativeSrc": "24757:18:31", + "nodeType": "YulFunctionCall", + "src": "24757:18:31" + }, + { + "kind": "number", + "nativeSrc": "24777:3:31", + "nodeType": "YulLiteral", + "src": "24777:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24750:6:31", + "nodeType": "YulIdentifier", + "src": "24750:6:31" + }, + "nativeSrc": "24750:31:31", + "nodeType": "YulFunctionCall", + "src": "24750:31:31" + }, + "nativeSrc": "24750:31:31", + "nodeType": "YulExpressionStatement", + "src": "24750:31:31" + }, + { + "nativeSrc": "24790:54:31", + "nodeType": "YulAssignment", + "src": "24790:54:31", + "value": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "24816:6:31", + "nodeType": "YulIdentifier", + "src": "24816:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24828:9:31", + "nodeType": "YulIdentifier", + "src": "24828:9:31" + }, + { + "kind": "number", + "nativeSrc": "24839:3:31", + "nodeType": "YulLiteral", + "src": "24839:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24824:3:31", + "nodeType": "YulIdentifier", + "src": "24824:3:31" + }, + "nativeSrc": "24824:19:31", + "nodeType": "YulFunctionCall", + "src": "24824:19:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "24798:17:31", + "nodeType": "YulIdentifier", + "src": "24798:17:31" + }, + "nativeSrc": "24798:46:31", + "nodeType": "YulFunctionCall", + "src": "24798:46:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "24790:4:31", + "nodeType": "YulIdentifier", + "src": "24790:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24864:9:31", + "nodeType": "YulIdentifier", + "src": "24864:9:31" + }, + { + "kind": "number", + "nativeSrc": "24875:2:31", + "nodeType": "YulLiteral", + "src": "24875:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24860:3:31", + "nodeType": "YulIdentifier", + "src": "24860:3:31" + }, + "nativeSrc": "24860:18:31", + "nodeType": "YulFunctionCall", + "src": "24860:18:31" + }, + { + "name": "value3", + "nativeSrc": "24880:6:31", + "nodeType": "YulIdentifier", + "src": "24880:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24853:6:31", + "nodeType": "YulIdentifier", + "src": "24853:6:31" + }, + "nativeSrc": "24853:34:31", + "nodeType": "YulFunctionCall", + "src": "24853:34:31" + }, + "nativeSrc": "24853:34:31", + "nodeType": "YulExpressionStatement", + "src": "24853:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24907:9:31", + "nodeType": "YulIdentifier", + "src": "24907:9:31" + }, + { + "kind": "number", + "nativeSrc": "24918:3:31", + "nodeType": "YulLiteral", + "src": "24918:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24903:3:31", + "nodeType": "YulIdentifier", + "src": "24903:3:31" + }, + "nativeSrc": "24903:19:31", + "nodeType": "YulFunctionCall", + "src": "24903:19:31" + }, + { + "name": "value4", + "nativeSrc": "24924:6:31", + "nodeType": "YulIdentifier", + "src": "24924:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24896:6:31", + "nodeType": "YulIdentifier", + "src": "24896:6:31" + }, + "nativeSrc": "24896:35:31", + "nodeType": "YulFunctionCall", + "src": "24896:35:31" + }, + "nativeSrc": "24896:35:31", + "nodeType": "YulExpressionStatement", + "src": "24896:35:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24951:9:31", + "nodeType": "YulIdentifier", + "src": "24951:9:31" + }, + { + "kind": "number", + "nativeSrc": "24962:3:31", + "nodeType": "YulLiteral", + "src": "24962:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24947:3:31", + "nodeType": "YulIdentifier", + "src": "24947:3:31" + }, + "nativeSrc": "24947:19:31", + "nodeType": "YulFunctionCall", + "src": "24947:19:31" + }, + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "24972:6:31", + "nodeType": "YulIdentifier", + "src": "24972:6:31" + }, + { + "name": "_1", + "nativeSrc": "24980:2:31", + "nodeType": "YulIdentifier", + "src": "24980:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24968:3:31", + "nodeType": "YulIdentifier", + "src": "24968:3:31" + }, + "nativeSrc": "24968:15:31", + "nodeType": "YulFunctionCall", + "src": "24968:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24940:6:31", + "nodeType": "YulIdentifier", + "src": "24940:6:31" + }, + "nativeSrc": "24940:44:31", + "nodeType": "YulFunctionCall", + "src": "24940:44:31" + }, + "nativeSrc": "24940:44:31", + "nodeType": "YulExpressionStatement", + "src": "24940:44:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed", + "nativeSrc": "24323:667:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "24536:9:31", + "nodeType": "YulTypedName", + "src": "24536:9:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "24547:6:31", + "nodeType": "YulTypedName", + "src": "24547:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "24555:6:31", + "nodeType": "YulTypedName", + "src": "24555:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "24563:6:31", + "nodeType": "YulTypedName", + "src": "24563:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "24571:6:31", + "nodeType": "YulTypedName", + "src": "24571:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "24579:6:31", + "nodeType": "YulTypedName", + "src": "24579:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "24587:6:31", + "nodeType": "YulTypedName", + "src": "24587:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "24598:4:31", + "nodeType": "YulTypedName", + "src": "24598:4:31", + "type": "" + } + ], + "src": "24323:667:31" + }, + { + "body": { + "nativeSrc": "25050:325:31", + "nodeType": "YulBlock", + "src": "25050:325:31", + "statements": [ + { + "nativeSrc": "25060:22:31", + "nodeType": "YulAssignment", + "src": "25060:22:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25074:1:31", + "nodeType": "YulLiteral", + "src": "25074:1:31", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "25077:4:31", + "nodeType": "YulIdentifier", + "src": "25077:4:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "25070:3:31", + "nodeType": "YulIdentifier", + "src": "25070:3:31" + }, + "nativeSrc": "25070:12:31", + "nodeType": "YulFunctionCall", + "src": "25070:12:31" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "25060:6:31", + "nodeType": "YulIdentifier", + "src": "25060:6:31" + } + ] + }, + { + "nativeSrc": "25091:38:31", + "nodeType": "YulVariableDeclaration", + "src": "25091:38:31", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "25121:4:31", + "nodeType": "YulIdentifier", + "src": "25121:4:31" + }, + { + "kind": "number", + "nativeSrc": "25127:1:31", + "nodeType": "YulLiteral", + "src": "25127:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25117:3:31", + "nodeType": "YulIdentifier", + "src": "25117:3:31" + }, + "nativeSrc": "25117:12:31", + "nodeType": "YulFunctionCall", + "src": "25117:12:31" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25095:18:31", + "nodeType": "YulTypedName", + "src": "25095:18:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25168:31:31", + "nodeType": "YulBlock", + "src": "25168:31:31", + "statements": [ + { + "nativeSrc": "25170:27:31", + "nodeType": "YulAssignment", + "src": "25170:27:31", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "25184:6:31", + "nodeType": "YulIdentifier", + "src": "25184:6:31" + }, + { + "kind": "number", + "nativeSrc": "25192:4:31", + "nodeType": "YulLiteral", + "src": "25192:4:31", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25180:3:31", + "nodeType": "YulIdentifier", + "src": "25180:3:31" + }, + "nativeSrc": "25180:17:31", + "nodeType": "YulFunctionCall", + "src": "25180:17:31" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "25170:6:31", + "nodeType": "YulIdentifier", + "src": "25170:6:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25148:18:31", + "nodeType": "YulIdentifier", + "src": "25148:18:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25141:6:31", + "nodeType": "YulIdentifier", + "src": "25141:6:31" + }, + "nativeSrc": "25141:26:31", + "nodeType": "YulFunctionCall", + "src": "25141:26:31" + }, + "nativeSrc": "25138:61:31", + "nodeType": "YulIf", + "src": "25138:61:31" + }, + { + "body": { + "nativeSrc": "25258:111:31", + "nodeType": "YulBlock", + "src": "25258:111:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25279:1:31", + "nodeType": "YulLiteral", + "src": "25279:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25286:3:31", + "nodeType": "YulLiteral", + "src": "25286:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "25291:10:31", + "nodeType": "YulLiteral", + "src": "25291:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25282:3:31", + "nodeType": "YulIdentifier", + "src": "25282:3:31" + }, + "nativeSrc": "25282:20:31", + "nodeType": "YulFunctionCall", + "src": "25282:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25272:6:31", + "nodeType": "YulIdentifier", + "src": "25272:6:31" + }, + "nativeSrc": "25272:31:31", + "nodeType": "YulFunctionCall", + "src": "25272:31:31" + }, + "nativeSrc": "25272:31:31", + "nodeType": "YulExpressionStatement", + "src": "25272:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25323:1:31", + "nodeType": "YulLiteral", + "src": "25323:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "25326:4:31", + "nodeType": "YulLiteral", + "src": "25326:4:31", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25316:6:31", + "nodeType": "YulIdentifier", + "src": "25316:6:31" + }, + "nativeSrc": "25316:15:31", + "nodeType": "YulFunctionCall", + "src": "25316:15:31" + }, + "nativeSrc": "25316:15:31", + "nodeType": "YulExpressionStatement", + "src": "25316:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25351:1:31", + "nodeType": "YulLiteral", + "src": "25351:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25354:4:31", + "nodeType": "YulLiteral", + "src": "25354:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25344:6:31", + "nodeType": "YulIdentifier", + "src": "25344:6:31" + }, + "nativeSrc": "25344:15:31", + "nodeType": "YulFunctionCall", + "src": "25344:15:31" + }, + "nativeSrc": "25344:15:31", + "nodeType": "YulExpressionStatement", + "src": "25344:15:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "25214:18:31", + "nodeType": "YulIdentifier", + "src": "25214:18:31" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "25237:6:31", + "nodeType": "YulIdentifier", + "src": "25237:6:31" + }, + { + "kind": "number", + "nativeSrc": "25245:2:31", + "nodeType": "YulLiteral", + "src": "25245:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "25234:2:31", + "nodeType": "YulIdentifier", + "src": "25234:2:31" + }, + "nativeSrc": "25234:14:31", + "nodeType": "YulFunctionCall", + "src": "25234:14:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "25211:2:31", + "nodeType": "YulIdentifier", + "src": "25211:2:31" + }, + "nativeSrc": "25211:38:31", + "nodeType": "YulFunctionCall", + "src": "25211:38:31" + }, + "nativeSrc": "25208:161:31", + "nodeType": "YulIf", + "src": "25208:161:31" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "24995:380:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "25030:4:31", + "nodeType": "YulTypedName", + "src": "25030:4:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "25039:6:31", + "nodeType": "YulTypedName", + "src": "25039:6:31", + "type": "" + } + ], + "src": "24995:380:31" + }, + { + "body": { + "nativeSrc": "25461:103:31", + "nodeType": "YulBlock", + "src": "25461:103:31", + "statements": [ + { + "body": { + "nativeSrc": "25507:16:31", + "nodeType": "YulBlock", + "src": "25507:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25516:1:31", + "nodeType": "YulLiteral", + "src": "25516:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25519:1:31", + "nodeType": "YulLiteral", + "src": "25519:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25509:6:31", + "nodeType": "YulIdentifier", + "src": "25509:6:31" + }, + "nativeSrc": "25509:12:31", + "nodeType": "YulFunctionCall", + "src": "25509:12:31" + }, + "nativeSrc": "25509:12:31", + "nodeType": "YulExpressionStatement", + "src": "25509:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "25482:7:31", + "nodeType": "YulIdentifier", + "src": "25482:7:31" + }, + { + "name": "headStart", + "nativeSrc": "25491:9:31", + "nodeType": "YulIdentifier", + "src": "25491:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25478:3:31", + "nodeType": "YulIdentifier", + "src": "25478:3:31" + }, + "nativeSrc": "25478:23:31", + "nodeType": "YulFunctionCall", + "src": "25478:23:31" + }, + { + "kind": "number", + "nativeSrc": "25503:2:31", + "nodeType": "YulLiteral", + "src": "25503:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "25474:3:31", + "nodeType": "YulIdentifier", + "src": "25474:3:31" + }, + "nativeSrc": "25474:32:31", + "nodeType": "YulFunctionCall", + "src": "25474:32:31" + }, + "nativeSrc": "25471:52:31", + "nodeType": "YulIf", + "src": "25471:52:31" + }, + { + "nativeSrc": "25532:26:31", + "nodeType": "YulAssignment", + "src": "25532:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25548:9:31", + "nodeType": "YulIdentifier", + "src": "25548:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25542:5:31", + "nodeType": "YulIdentifier", + "src": "25542:5:31" + }, + "nativeSrc": "25542:16:31", + "nodeType": "YulFunctionCall", + "src": "25542:16:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "25532:6:31", + "nodeType": "YulIdentifier", + "src": "25532:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "25380:184:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "25427:9:31", + "nodeType": "YulTypedName", + "src": "25427:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "25438:7:31", + "nodeType": "YulTypedName", + "src": "25438:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "25450:6:31", + "nodeType": "YulTypedName", + "src": "25450:6:31", + "type": "" + } + ], + "src": "25380:184:31" + }, + { + "body": { + "nativeSrc": "25621:116:31", + "nodeType": "YulBlock", + "src": "25621:116:31", + "statements": [ + { + "nativeSrc": "25631:20:31", + "nodeType": "YulAssignment", + "src": "25631:20:31", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "25646:1:31", + "nodeType": "YulIdentifier", + "src": "25646:1:31" + }, + { + "name": "y", + "nativeSrc": "25649:1:31", + "nodeType": "YulIdentifier", + "src": "25649:1:31" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "25642:3:31", + "nodeType": "YulIdentifier", + "src": "25642:3:31" + }, + "nativeSrc": "25642:9:31", + "nodeType": "YulFunctionCall", + "src": "25642:9:31" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "25631:7:31", + "nodeType": "YulIdentifier", + "src": "25631:7:31" + } + ] + }, + { + "body": { + "nativeSrc": "25709:22:31", + "nodeType": "YulBlock", + "src": "25709:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "25711:16:31", + "nodeType": "YulIdentifier", + "src": "25711:16:31" + }, + "nativeSrc": "25711:18:31", + "nodeType": "YulFunctionCall", + "src": "25711:18:31" + }, + "nativeSrc": "25711:18:31", + "nodeType": "YulExpressionStatement", + "src": "25711:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "25680:1:31", + "nodeType": "YulIdentifier", + "src": "25680:1:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25673:6:31", + "nodeType": "YulIdentifier", + "src": "25673:6:31" + }, + "nativeSrc": "25673:9:31", + "nodeType": "YulFunctionCall", + "src": "25673:9:31" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "25687:1:31", + "nodeType": "YulIdentifier", + "src": "25687:1:31" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "25694:7:31", + "nodeType": "YulIdentifier", + "src": "25694:7:31" + }, + { + "name": "x", + "nativeSrc": "25703:1:31", + "nodeType": "YulIdentifier", + "src": "25703:1:31" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "25690:3:31", + "nodeType": "YulIdentifier", + "src": "25690:3:31" + }, + "nativeSrc": "25690:15:31", + "nodeType": "YulFunctionCall", + "src": "25690:15:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "25684:2:31", + "nodeType": "YulIdentifier", + "src": "25684:2:31" + }, + "nativeSrc": "25684:22:31", + "nodeType": "YulFunctionCall", + "src": "25684:22:31" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "25670:2:31", + "nodeType": "YulIdentifier", + "src": "25670:2:31" + }, + "nativeSrc": "25670:37:31", + "nodeType": "YulFunctionCall", + "src": "25670:37:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25663:6:31", + "nodeType": "YulIdentifier", + "src": "25663:6:31" + }, + "nativeSrc": "25663:45:31", + "nodeType": "YulFunctionCall", + "src": "25663:45:31" + }, + "nativeSrc": "25660:71:31", + "nodeType": "YulIf", + "src": "25660:71:31" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "25569:168:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25600:1:31", + "nodeType": "YulTypedName", + "src": "25600:1:31", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25603:1:31", + "nodeType": "YulTypedName", + "src": "25603:1:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "25609:7:31", + "nodeType": "YulTypedName", + "src": "25609:7:31", + "type": "" + } + ], + "src": "25569:168:31" + }, + { + "body": { + "nativeSrc": "25788:171:31", + "nodeType": "YulBlock", + "src": "25788:171:31", + "statements": [ + { + "body": { + "nativeSrc": "25819:111:31", + "nodeType": "YulBlock", + "src": "25819:111:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25840:1:31", + "nodeType": "YulLiteral", + "src": "25840:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25847:3:31", + "nodeType": "YulLiteral", + "src": "25847:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "25852:10:31", + "nodeType": "YulLiteral", + "src": "25852:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25843:3:31", + "nodeType": "YulIdentifier", + "src": "25843:3:31" + }, + "nativeSrc": "25843:20:31", + "nodeType": "YulFunctionCall", + "src": "25843:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25833:6:31", + "nodeType": "YulIdentifier", + "src": "25833:6:31" + }, + "nativeSrc": "25833:31:31", + "nodeType": "YulFunctionCall", + "src": "25833:31:31" + }, + "nativeSrc": "25833:31:31", + "nodeType": "YulExpressionStatement", + "src": "25833:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25884:1:31", + "nodeType": "YulLiteral", + "src": "25884:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "25887:4:31", + "nodeType": "YulLiteral", + "src": "25887:4:31", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25877:6:31", + "nodeType": "YulIdentifier", + "src": "25877:6:31" + }, + "nativeSrc": "25877:15:31", + "nodeType": "YulFunctionCall", + "src": "25877:15:31" + }, + "nativeSrc": "25877:15:31", + "nodeType": "YulExpressionStatement", + "src": "25877:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25912:1:31", + "nodeType": "YulLiteral", + "src": "25912:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25915:4:31", + "nodeType": "YulLiteral", + "src": "25915:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25905:6:31", + "nodeType": "YulIdentifier", + "src": "25905:6:31" + }, + "nativeSrc": "25905:15:31", + "nodeType": "YulFunctionCall", + "src": "25905:15:31" + }, + "nativeSrc": "25905:15:31", + "nodeType": "YulExpressionStatement", + "src": "25905:15:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nativeSrc": "25808:1:31", + "nodeType": "YulIdentifier", + "src": "25808:1:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25801:6:31", + "nodeType": "YulIdentifier", + "src": "25801:6:31" + }, + "nativeSrc": "25801:9:31", + "nodeType": "YulFunctionCall", + "src": "25801:9:31" + }, + "nativeSrc": "25798:132:31", + "nodeType": "YulIf", + "src": "25798:132:31" + }, + { + "nativeSrc": "25939:14:31", + "nodeType": "YulAssignment", + "src": "25939:14:31", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "25948:1:31", + "nodeType": "YulIdentifier", + "src": "25948:1:31" + }, + { + "name": "y", + "nativeSrc": "25951:1:31", + "nodeType": "YulIdentifier", + "src": "25951:1:31" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "25944:3:31", + "nodeType": "YulIdentifier", + "src": "25944:3:31" + }, + "nativeSrc": "25944:9:31", + "nodeType": "YulFunctionCall", + "src": "25944:9:31" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "25939:1:31", + "nodeType": "YulIdentifier", + "src": "25939:1:31" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nativeSrc": "25742:217:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25773:1:31", + "nodeType": "YulTypedName", + "src": "25773:1:31", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25776:1:31", + "nodeType": "YulTypedName", + "src": "25776:1:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nativeSrc": "25782:1:31", + "nodeType": "YulTypedName", + "src": "25782:1:31", + "type": "" + } + ], + "src": "25742:217:31" + }, + { + "body": { + "nativeSrc": "26012:77:31", + "nodeType": "YulBlock", + "src": "26012:77:31", + "statements": [ + { + "nativeSrc": "26022:16:31", + "nodeType": "YulAssignment", + "src": "26022:16:31", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "26033:1:31", + "nodeType": "YulIdentifier", + "src": "26033:1:31" + }, + { + "name": "y", + "nativeSrc": "26036:1:31", + "nodeType": "YulIdentifier", + "src": "26036:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26029:3:31", + "nodeType": "YulIdentifier", + "src": "26029:3:31" + }, + "nativeSrc": "26029:9:31", + "nodeType": "YulFunctionCall", + "src": "26029:9:31" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "26022:3:31", + "nodeType": "YulIdentifier", + "src": "26022:3:31" + } + ] + }, + { + "body": { + "nativeSrc": "26061:22:31", + "nodeType": "YulBlock", + "src": "26061:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "26063:16:31", + "nodeType": "YulIdentifier", + "src": "26063:16:31" + }, + "nativeSrc": "26063:18:31", + "nodeType": "YulFunctionCall", + "src": "26063:18:31" + }, + "nativeSrc": "26063:18:31", + "nodeType": "YulExpressionStatement", + "src": "26063:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "26053:1:31", + "nodeType": "YulIdentifier", + "src": "26053:1:31" + }, + { + "name": "sum", + "nativeSrc": "26056:3:31", + "nodeType": "YulIdentifier", + "src": "26056:3:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "26050:2:31", + "nodeType": "YulIdentifier", + "src": "26050:2:31" + }, + "nativeSrc": "26050:10:31", + "nodeType": "YulFunctionCall", + "src": "26050:10:31" + }, + "nativeSrc": "26047:36:31", + "nodeType": "YulIf", + "src": "26047:36:31" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "25964:125:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25995:1:31", + "nodeType": "YulTypedName", + "src": "25995:1:31", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25998:1:31", + "nodeType": "YulTypedName", + "src": "25998:1:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "26004:3:31", + "nodeType": "YulTypedName", + "src": "26004:3:31", + "type": "" + } + ], + "src": "25964:125:31" + }, + { + "body": { + "nativeSrc": "26175:170:31", + "nodeType": "YulBlock", + "src": "26175:170:31", + "statements": [ + { + "body": { + "nativeSrc": "26221:16:31", + "nodeType": "YulBlock", + "src": "26221:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26230:1:31", + "nodeType": "YulLiteral", + "src": "26230:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "26233:1:31", + "nodeType": "YulLiteral", + "src": "26233:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "26223:6:31", + "nodeType": "YulIdentifier", + "src": "26223:6:31" + }, + "nativeSrc": "26223:12:31", + "nodeType": "YulFunctionCall", + "src": "26223:12:31" + }, + "nativeSrc": "26223:12:31", + "nodeType": "YulExpressionStatement", + "src": "26223:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "26196:7:31", + "nodeType": "YulIdentifier", + "src": "26196:7:31" + }, + { + "name": "headStart", + "nativeSrc": "26205:9:31", + "nodeType": "YulIdentifier", + "src": "26205:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "26192:3:31", + "nodeType": "YulIdentifier", + "src": "26192:3:31" + }, + "nativeSrc": "26192:23:31", + "nodeType": "YulFunctionCall", + "src": "26192:23:31" + }, + { + "kind": "number", + "nativeSrc": "26217:2:31", + "nodeType": "YulLiteral", + "src": "26217:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "26188:3:31", + "nodeType": "YulIdentifier", + "src": "26188:3:31" + }, + "nativeSrc": "26188:32:31", + "nodeType": "YulFunctionCall", + "src": "26188:32:31" + }, + "nativeSrc": "26185:52:31", + "nodeType": "YulIf", + "src": "26185:52:31" + }, + { + "nativeSrc": "26246:29:31", + "nodeType": "YulVariableDeclaration", + "src": "26246:29:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26265:9:31", + "nodeType": "YulIdentifier", + "src": "26265:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26259:5:31", + "nodeType": "YulIdentifier", + "src": "26259:5:31" + }, + "nativeSrc": "26259:16:31", + "nodeType": "YulFunctionCall", + "src": "26259:16:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "26250:5:31", + "nodeType": "YulTypedName", + "src": "26250:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "26309:5:31", + "nodeType": "YulIdentifier", + "src": "26309:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "26284:24:31", + "nodeType": "YulIdentifier", + "src": "26284:24:31" + }, + "nativeSrc": "26284:31:31", + "nodeType": "YulFunctionCall", + "src": "26284:31:31" + }, + "nativeSrc": "26284:31:31", + "nodeType": "YulExpressionStatement", + "src": "26284:31:31" + }, + { + "nativeSrc": "26324:15:31", + "nodeType": "YulAssignment", + "src": "26324:15:31", + "value": { + "name": "value", + "nativeSrc": "26334:5:31", + "nodeType": "YulIdentifier", + "src": "26334:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "26324:6:31", + "nodeType": "YulIdentifier", + "src": "26324:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nativeSrc": "26094:251:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "26141:9:31", + "nodeType": "YulTypedName", + "src": "26141:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "26152:7:31", + "nodeType": "YulTypedName", + "src": "26152:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "26164:6:31", + "nodeType": "YulTypedName", + "src": "26164:6:31", + "type": "" + } + ], + "src": "26094:251:31" + }, + { + "body": { + "nativeSrc": "26591:350:31", + "nodeType": "YulBlock", + "src": "26591:350:31", + "statements": [ + { + "nativeSrc": "26601:27:31", + "nodeType": "YulAssignment", + "src": "26601:27:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26613:9:31", + "nodeType": "YulIdentifier", + "src": "26613:9:31" + }, + { + "kind": "number", + "nativeSrc": "26624:3:31", + "nodeType": "YulLiteral", + "src": "26624:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26609:3:31", + "nodeType": "YulIdentifier", + "src": "26609:3:31" + }, + "nativeSrc": "26609:19:31", + "nodeType": "YulFunctionCall", + "src": "26609:19:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "26601:4:31", + "nodeType": "YulIdentifier", + "src": "26601:4:31" + } + ] + }, + { + "nativeSrc": "26637:29:31", + "nodeType": "YulVariableDeclaration", + "src": "26637:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26655:3:31", + "nodeType": "YulLiteral", + "src": "26655:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "26660:1:31", + "nodeType": "YulLiteral", + "src": "26660:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26651:3:31", + "nodeType": "YulIdentifier", + "src": "26651:3:31" + }, + "nativeSrc": "26651:11:31", + "nodeType": "YulFunctionCall", + "src": "26651:11:31" + }, + { + "kind": "number", + "nativeSrc": "26664:1:31", + "nodeType": "YulLiteral", + "src": "26664:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "26647:3:31", + "nodeType": "YulIdentifier", + "src": "26647:3:31" + }, + "nativeSrc": "26647:19:31", + "nodeType": "YulFunctionCall", + "src": "26647:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "26641:2:31", + "nodeType": "YulTypedName", + "src": "26641:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26682:9:31", + "nodeType": "YulIdentifier", + "src": "26682:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "26697:6:31", + "nodeType": "YulIdentifier", + "src": "26697:6:31" + }, + { + "name": "_1", + "nativeSrc": "26705:2:31", + "nodeType": "YulIdentifier", + "src": "26705:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26693:3:31", + "nodeType": "YulIdentifier", + "src": "26693:3:31" + }, + "nativeSrc": "26693:15:31", + "nodeType": "YulFunctionCall", + "src": "26693:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26675:6:31", + "nodeType": "YulIdentifier", + "src": "26675:6:31" + }, + "nativeSrc": "26675:34:31", + "nodeType": "YulFunctionCall", + "src": "26675:34:31" + }, + "nativeSrc": "26675:34:31", + "nodeType": "YulExpressionStatement", + "src": "26675:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26729:9:31", + "nodeType": "YulIdentifier", + "src": "26729:9:31" + }, + { + "kind": "number", + "nativeSrc": "26740:2:31", + "nodeType": "YulLiteral", + "src": "26740:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26725:3:31", + "nodeType": "YulIdentifier", + "src": "26725:3:31" + }, + "nativeSrc": "26725:18:31", + "nodeType": "YulFunctionCall", + "src": "26725:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "26749:6:31", + "nodeType": "YulIdentifier", + "src": "26749:6:31" + }, + { + "name": "_1", + "nativeSrc": "26757:2:31", + "nodeType": "YulIdentifier", + "src": "26757:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26745:3:31", + "nodeType": "YulIdentifier", + "src": "26745:3:31" + }, + "nativeSrc": "26745:15:31", + "nodeType": "YulFunctionCall", + "src": "26745:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26718:6:31", + "nodeType": "YulIdentifier", + "src": "26718:6:31" + }, + "nativeSrc": "26718:43:31", + "nodeType": "YulFunctionCall", + "src": "26718:43:31" + }, + "nativeSrc": "26718:43:31", + "nodeType": "YulExpressionStatement", + "src": "26718:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26781:9:31", + "nodeType": "YulIdentifier", + "src": "26781:9:31" + }, + { + "kind": "number", + "nativeSrc": "26792:2:31", + "nodeType": "YulLiteral", + "src": "26792:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26777:3:31", + "nodeType": "YulIdentifier", + "src": "26777:3:31" + }, + "nativeSrc": "26777:18:31", + "nodeType": "YulFunctionCall", + "src": "26777:18:31" + }, + { + "name": "value2", + "nativeSrc": "26797:6:31", + "nodeType": "YulIdentifier", + "src": "26797:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26770:6:31", + "nodeType": "YulIdentifier", + "src": "26770:6:31" + }, + "nativeSrc": "26770:34:31", + "nodeType": "YulFunctionCall", + "src": "26770:34:31" + }, + "nativeSrc": "26770:34:31", + "nodeType": "YulExpressionStatement", + "src": "26770:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26824:9:31", + "nodeType": "YulIdentifier", + "src": "26824:9:31" + }, + { + "kind": "number", + "nativeSrc": "26835:2:31", + "nodeType": "YulLiteral", + "src": "26835:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26820:3:31", + "nodeType": "YulIdentifier", + "src": "26820:3:31" + }, + "nativeSrc": "26820:18:31", + "nodeType": "YulFunctionCall", + "src": "26820:18:31" + }, + { + "name": "value3", + "nativeSrc": "26840:6:31", + "nodeType": "YulIdentifier", + "src": "26840:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26813:6:31", + "nodeType": "YulIdentifier", + "src": "26813:6:31" + }, + "nativeSrc": "26813:34:31", + "nodeType": "YulFunctionCall", + "src": "26813:34:31" + }, + "nativeSrc": "26813:34:31", + "nodeType": "YulExpressionStatement", + "src": "26813:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26867:9:31", + "nodeType": "YulIdentifier", + "src": "26867:9:31" + }, + { + "kind": "number", + "nativeSrc": "26878:3:31", + "nodeType": "YulLiteral", + "src": "26878:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26863:3:31", + "nodeType": "YulIdentifier", + "src": "26863:3:31" + }, + "nativeSrc": "26863:19:31", + "nodeType": "YulFunctionCall", + "src": "26863:19:31" + }, + { + "name": "value4", + "nativeSrc": "26884:6:31", + "nodeType": "YulIdentifier", + "src": "26884:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26856:6:31", + "nodeType": "YulIdentifier", + "src": "26856:6:31" + }, + "nativeSrc": "26856:35:31", + "nodeType": "YulFunctionCall", + "src": "26856:35:31" + }, + "nativeSrc": "26856:35:31", + "nodeType": "YulExpressionStatement", + "src": "26856:35:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26911:9:31", + "nodeType": "YulIdentifier", + "src": "26911:9:31" + }, + { + "kind": "number", + "nativeSrc": "26922:3:31", + "nodeType": "YulLiteral", + "src": "26922:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26907:3:31", + "nodeType": "YulIdentifier", + "src": "26907:3:31" + }, + "nativeSrc": "26907:19:31", + "nodeType": "YulFunctionCall", + "src": "26907:19:31" + }, + { + "name": "value5", + "nativeSrc": "26928:6:31", + "nodeType": "YulIdentifier", + "src": "26928:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26900:6:31", + "nodeType": "YulIdentifier", + "src": "26900:6:31" + }, + "nativeSrc": "26900:35:31", + "nodeType": "YulFunctionCall", + "src": "26900:35:31" + }, + "nativeSrc": "26900:35:31", + "nodeType": "YulExpressionStatement", + "src": "26900:35:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "26350:591:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "26520:9:31", + "nodeType": "YulTypedName", + "src": "26520:9:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "26531:6:31", + "nodeType": "YulTypedName", + "src": "26531:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "26539:6:31", + "nodeType": "YulTypedName", + "src": "26539:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "26547:6:31", + "nodeType": "YulTypedName", + "src": "26547:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "26555:6:31", + "nodeType": "YulTypedName", + "src": "26555:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "26563:6:31", + "nodeType": "YulTypedName", + "src": "26563:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "26571:6:31", + "nodeType": "YulTypedName", + "src": "26571:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "26582:4:31", + "nodeType": "YulTypedName", + "src": "26582:4:31", + "type": "" + } + ], + "src": "26350:591:31" + }, + { + "body": { + "nativeSrc": "27194:144:31", + "nodeType": "YulBlock", + "src": "27194:144:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27211:3:31", + "nodeType": "YulIdentifier", + "src": "27211:3:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27220:3:31", + "nodeType": "YulLiteral", + "src": "27220:3:31", + "type": "", + "value": "240" + }, + { + "kind": "number", + "nativeSrc": "27225:4:31", + "nodeType": "YulLiteral", + "src": "27225:4:31", + "type": "", + "value": "6401" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27216:3:31", + "nodeType": "YulIdentifier", + "src": "27216:3:31" + }, + "nativeSrc": "27216:14:31", + "nodeType": "YulFunctionCall", + "src": "27216:14:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27204:6:31", + "nodeType": "YulIdentifier", + "src": "27204:6:31" + }, + "nativeSrc": "27204:27:31", + "nodeType": "YulFunctionCall", + "src": "27204:27:31" + }, + "nativeSrc": "27204:27:31", + "nodeType": "YulExpressionStatement", + "src": "27204:27:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27251:3:31", + "nodeType": "YulIdentifier", + "src": "27251:3:31" + }, + { + "kind": "number", + "nativeSrc": "27256:1:31", + "nodeType": "YulLiteral", + "src": "27256:1:31", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27247:3:31", + "nodeType": "YulIdentifier", + "src": "27247:3:31" + }, + "nativeSrc": "27247:11:31", + "nodeType": "YulFunctionCall", + "src": "27247:11:31" + }, + { + "name": "value0", + "nativeSrc": "27260:6:31", + "nodeType": "YulIdentifier", + "src": "27260:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27240:6:31", + "nodeType": "YulIdentifier", + "src": "27240:6:31" + }, + "nativeSrc": "27240:27:31", + "nodeType": "YulFunctionCall", + "src": "27240:27:31" + }, + "nativeSrc": "27240:27:31", + "nodeType": "YulExpressionStatement", + "src": "27240:27:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27287:3:31", + "nodeType": "YulIdentifier", + "src": "27287:3:31" + }, + { + "kind": "number", + "nativeSrc": "27292:2:31", + "nodeType": "YulLiteral", + "src": "27292:2:31", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27283:3:31", + "nodeType": "YulIdentifier", + "src": "27283:3:31" + }, + "nativeSrc": "27283:12:31", + "nodeType": "YulFunctionCall", + "src": "27283:12:31" + }, + { + "name": "value1", + "nativeSrc": "27297:6:31", + "nodeType": "YulIdentifier", + "src": "27297:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27276:6:31", + "nodeType": "YulIdentifier", + "src": "27276:6:31" + }, + "nativeSrc": "27276:28:31", + "nodeType": "YulFunctionCall", + "src": "27276:28:31" + }, + "nativeSrc": "27276:28:31", + "nodeType": "YulExpressionStatement", + "src": "27276:28:31" + }, + { + "nativeSrc": "27313:19:31", + "nodeType": "YulAssignment", + "src": "27313:19:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "27324:3:31", + "nodeType": "YulIdentifier", + "src": "27324:3:31" + }, + { + "kind": "number", + "nativeSrc": "27329:2:31", + "nodeType": "YulLiteral", + "src": "27329:2:31", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27320:3:31", + "nodeType": "YulIdentifier", + "src": "27320:3:31" + }, + "nativeSrc": "27320:12:31", + "nodeType": "YulFunctionCall", + "src": "27320:12:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "27313:3:31", + "nodeType": "YulIdentifier", + "src": "27313:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "26946:392:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "27162:3:31", + "nodeType": "YulTypedName", + "src": "27162:3:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "27167:6:31", + "nodeType": "YulTypedName", + "src": "27167:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "27175:6:31", + "nodeType": "YulTypedName", + "src": "27175:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "27186:3:31", + "nodeType": "YulTypedName", + "src": "27186:3:31", + "type": "" + } + ], + "src": "26946:392:31" + }, + { + "body": { + "nativeSrc": "27424:103:31", + "nodeType": "YulBlock", + "src": "27424:103:31", + "statements": [ + { + "body": { + "nativeSrc": "27470:16:31", + "nodeType": "YulBlock", + "src": "27470:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27479:1:31", + "nodeType": "YulLiteral", + "src": "27479:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27482:1:31", + "nodeType": "YulLiteral", + "src": "27482:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27472:6:31", + "nodeType": "YulIdentifier", + "src": "27472:6:31" + }, + "nativeSrc": "27472:12:31", + "nodeType": "YulFunctionCall", + "src": "27472:12:31" + }, + "nativeSrc": "27472:12:31", + "nodeType": "YulExpressionStatement", + "src": "27472:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "27445:7:31", + "nodeType": "YulIdentifier", + "src": "27445:7:31" + }, + { + "name": "headStart", + "nativeSrc": "27454:9:31", + "nodeType": "YulIdentifier", + "src": "27454:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "27441:3:31", + "nodeType": "YulIdentifier", + "src": "27441:3:31" + }, + "nativeSrc": "27441:23:31", + "nodeType": "YulFunctionCall", + "src": "27441:23:31" + }, + { + "kind": "number", + "nativeSrc": "27466:2:31", + "nodeType": "YulLiteral", + "src": "27466:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "27437:3:31", + "nodeType": "YulIdentifier", + "src": "27437:3:31" + }, + "nativeSrc": "27437:32:31", + "nodeType": "YulFunctionCall", + "src": "27437:32:31" + }, + "nativeSrc": "27434:52:31", + "nodeType": "YulIf", + "src": "27434:52:31" + }, + { + "nativeSrc": "27495:26:31", + "nodeType": "YulAssignment", + "src": "27495:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27511:9:31", + "nodeType": "YulIdentifier", + "src": "27511:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27505:5:31", + "nodeType": "YulIdentifier", + "src": "27505:5:31" + }, + "nativeSrc": "27505:16:31", + "nodeType": "YulFunctionCall", + "src": "27505:16:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "27495:6:31", + "nodeType": "YulIdentifier", + "src": "27495:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "27343:184:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27390:9:31", + "nodeType": "YulTypedName", + "src": "27390:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "27401:7:31", + "nodeType": "YulTypedName", + "src": "27401:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "27413:6:31", + "nodeType": "YulTypedName", + "src": "27413:6:31", + "type": "" + } + ], + "src": "27343:184:31" + }, + { + "body": { + "nativeSrc": "27717:206:31", + "nodeType": "YulBlock", + "src": "27717:206:31", + "statements": [ + { + "nativeSrc": "27727:27:31", + "nodeType": "YulAssignment", + "src": "27727:27:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27739:9:31", + "nodeType": "YulIdentifier", + "src": "27739:9:31" + }, + { + "kind": "number", + "nativeSrc": "27750:3:31", + "nodeType": "YulLiteral", + "src": "27750:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27735:3:31", + "nodeType": "YulIdentifier", + "src": "27735:3:31" + }, + "nativeSrc": "27735:19:31", + "nodeType": "YulFunctionCall", + "src": "27735:19:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "27727:4:31", + "nodeType": "YulIdentifier", + "src": "27727:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27770:9:31", + "nodeType": "YulIdentifier", + "src": "27770:9:31" + }, + { + "name": "value0", + "nativeSrc": "27781:6:31", + "nodeType": "YulIdentifier", + "src": "27781:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27763:6:31", + "nodeType": "YulIdentifier", + "src": "27763:6:31" + }, + "nativeSrc": "27763:25:31", + "nodeType": "YulFunctionCall", + "src": "27763:25:31" + }, + "nativeSrc": "27763:25:31", + "nodeType": "YulExpressionStatement", + "src": "27763:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27808:9:31", + "nodeType": "YulIdentifier", + "src": "27808:9:31" + }, + { + "kind": "number", + "nativeSrc": "27819:2:31", + "nodeType": "YulLiteral", + "src": "27819:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27804:3:31", + "nodeType": "YulIdentifier", + "src": "27804:3:31" + }, + "nativeSrc": "27804:18:31", + "nodeType": "YulFunctionCall", + "src": "27804:18:31" + }, + { + "name": "value1", + "nativeSrc": "27824:6:31", + "nodeType": "YulIdentifier", + "src": "27824:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27797:6:31", + "nodeType": "YulIdentifier", + "src": "27797:6:31" + }, + "nativeSrc": "27797:34:31", + "nodeType": "YulFunctionCall", + "src": "27797:34:31" + }, + "nativeSrc": "27797:34:31", + "nodeType": "YulExpressionStatement", + "src": "27797:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27851:9:31", + "nodeType": "YulIdentifier", + "src": "27851:9:31" + }, + { + "kind": "number", + "nativeSrc": "27862:2:31", + "nodeType": "YulLiteral", + "src": "27862:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27847:3:31", + "nodeType": "YulIdentifier", + "src": "27847:3:31" + }, + "nativeSrc": "27847:18:31", + "nodeType": "YulFunctionCall", + "src": "27847:18:31" + }, + { + "name": "value2", + "nativeSrc": "27867:6:31", + "nodeType": "YulIdentifier", + "src": "27867:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27840:6:31", + "nodeType": "YulIdentifier", + "src": "27840:6:31" + }, + "nativeSrc": "27840:34:31", + "nodeType": "YulFunctionCall", + "src": "27840:34:31" + }, + "nativeSrc": "27840:34:31", + "nodeType": "YulExpressionStatement", + "src": "27840:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27894:9:31", + "nodeType": "YulIdentifier", + "src": "27894:9:31" + }, + { + "kind": "number", + "nativeSrc": "27905:2:31", + "nodeType": "YulLiteral", + "src": "27905:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27890:3:31", + "nodeType": "YulIdentifier", + "src": "27890:3:31" + }, + "nativeSrc": "27890:18:31", + "nodeType": "YulFunctionCall", + "src": "27890:18:31" + }, + { + "name": "value3", + "nativeSrc": "27910:6:31", + "nodeType": "YulIdentifier", + "src": "27910:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27883:6:31", + "nodeType": "YulIdentifier", + "src": "27883:6:31" + }, + "nativeSrc": "27883:34:31", + "nodeType": "YulFunctionCall", + "src": "27883:34:31" + }, + "nativeSrc": "27883:34:31", + "nodeType": "YulExpressionStatement", + "src": "27883:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed", + "nativeSrc": "27532:391:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27662:9:31", + "nodeType": "YulTypedName", + "src": "27662:9:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "27673:6:31", + "nodeType": "YulTypedName", + "src": "27673:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "27681:6:31", + "nodeType": "YulTypedName", + "src": "27681:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "27689:6:31", + "nodeType": "YulTypedName", + "src": "27689:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "27697:6:31", + "nodeType": "YulTypedName", + "src": "27697:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "27708:4:31", + "nodeType": "YulTypedName", + "src": "27708:4:31", + "type": "" + } + ], + "src": "27532:391:31" + }, + { + "body": { + "nativeSrc": "28057:119:31", + "nodeType": "YulBlock", + "src": "28057:119:31", + "statements": [ + { + "nativeSrc": "28067:26:31", + "nodeType": "YulAssignment", + "src": "28067:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28079:9:31", + "nodeType": "YulIdentifier", + "src": "28079:9:31" + }, + { + "kind": "number", + "nativeSrc": "28090:2:31", + "nodeType": "YulLiteral", + "src": "28090:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28075:3:31", + "nodeType": "YulIdentifier", + "src": "28075:3:31" + }, + "nativeSrc": "28075:18:31", + "nodeType": "YulFunctionCall", + "src": "28075:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28067:4:31", + "nodeType": "YulIdentifier", + "src": "28067:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28109:9:31", + "nodeType": "YulIdentifier", + "src": "28109:9:31" + }, + { + "name": "value0", + "nativeSrc": "28120:6:31", + "nodeType": "YulIdentifier", + "src": "28120:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28102:6:31", + "nodeType": "YulIdentifier", + "src": "28102:6:31" + }, + "nativeSrc": "28102:25:31", + "nodeType": "YulFunctionCall", + "src": "28102:25:31" + }, + "nativeSrc": "28102:25:31", + "nodeType": "YulExpressionStatement", + "src": "28102:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28147:9:31", + "nodeType": "YulIdentifier", + "src": "28147:9:31" + }, + { + "kind": "number", + "nativeSrc": "28158:2:31", + "nodeType": "YulLiteral", + "src": "28158:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28143:3:31", + "nodeType": "YulIdentifier", + "src": "28143:3:31" + }, + "nativeSrc": "28143:18:31", + "nodeType": "YulFunctionCall", + "src": "28143:18:31" + }, + { + "name": "value1", + "nativeSrc": "28163:6:31", + "nodeType": "YulIdentifier", + "src": "28163:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28136:6:31", + "nodeType": "YulIdentifier", + "src": "28136:6:31" + }, + "nativeSrc": "28136:34:31", + "nodeType": "YulFunctionCall", + "src": "28136:34:31" + }, + "nativeSrc": "28136:34:31", + "nodeType": "YulExpressionStatement", + "src": "28136:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed", + "nativeSrc": "27928:248:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28018:9:31", + "nodeType": "YulTypedName", + "src": "28018:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28029:6:31", + "nodeType": "YulTypedName", + "src": "28029:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28037:6:31", + "nodeType": "YulTypedName", + "src": "28037:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28048:4:31", + "nodeType": "YulTypedName", + "src": "28048:4:31", + "type": "" + } + ], + "src": "27928:248:31" + }, + { + "body": { + "nativeSrc": "28310:175:31", + "nodeType": "YulBlock", + "src": "28310:175:31", + "statements": [ + { + "nativeSrc": "28320:26:31", + "nodeType": "YulAssignment", + "src": "28320:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28332:9:31", + "nodeType": "YulIdentifier", + "src": "28332:9:31" + }, + { + "kind": "number", + "nativeSrc": "28343:2:31", + "nodeType": "YulLiteral", + "src": "28343:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28328:3:31", + "nodeType": "YulIdentifier", + "src": "28328:3:31" + }, + "nativeSrc": "28328:18:31", + "nodeType": "YulFunctionCall", + "src": "28328:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28320:4:31", + "nodeType": "YulIdentifier", + "src": "28320:4:31" + } + ] + }, + { + "nativeSrc": "28355:29:31", + "nodeType": "YulVariableDeclaration", + "src": "28355:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28373:3:31", + "nodeType": "YulLiteral", + "src": "28373:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "28378:1:31", + "nodeType": "YulLiteral", + "src": "28378:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28369:3:31", + "nodeType": "YulIdentifier", + "src": "28369:3:31" + }, + "nativeSrc": "28369:11:31", + "nodeType": "YulFunctionCall", + "src": "28369:11:31" + }, + { + "kind": "number", + "nativeSrc": "28382:1:31", + "nodeType": "YulLiteral", + "src": "28382:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28365:3:31", + "nodeType": "YulIdentifier", + "src": "28365:3:31" + }, + "nativeSrc": "28365:19:31", + "nodeType": "YulFunctionCall", + "src": "28365:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "28359:2:31", + "nodeType": "YulTypedName", + "src": "28359:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28400:9:31", + "nodeType": "YulIdentifier", + "src": "28400:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "28415:6:31", + "nodeType": "YulIdentifier", + "src": "28415:6:31" + }, + { + "name": "_1", + "nativeSrc": "28423:2:31", + "nodeType": "YulIdentifier", + "src": "28423:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28411:3:31", + "nodeType": "YulIdentifier", + "src": "28411:3:31" + }, + "nativeSrc": "28411:15:31", + "nodeType": "YulFunctionCall", + "src": "28411:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28393:6:31", + "nodeType": "YulIdentifier", + "src": "28393:6:31" + }, + "nativeSrc": "28393:34:31", + "nodeType": "YulFunctionCall", + "src": "28393:34:31" + }, + "nativeSrc": "28393:34:31", + "nodeType": "YulExpressionStatement", + "src": "28393:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28447:9:31", + "nodeType": "YulIdentifier", + "src": "28447:9:31" + }, + { + "kind": "number", + "nativeSrc": "28458:2:31", + "nodeType": "YulLiteral", + "src": "28458:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28443:3:31", + "nodeType": "YulIdentifier", + "src": "28443:3:31" + }, + "nativeSrc": "28443:18:31", + "nodeType": "YulFunctionCall", + "src": "28443:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "28467:6:31", + "nodeType": "YulIdentifier", + "src": "28467:6:31" + }, + { + "name": "_1", + "nativeSrc": "28475:2:31", + "nodeType": "YulIdentifier", + "src": "28475:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28463:3:31", + "nodeType": "YulIdentifier", + "src": "28463:3:31" + }, + "nativeSrc": "28463:15:31", + "nodeType": "YulFunctionCall", + "src": "28463:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28436:6:31", + "nodeType": "YulIdentifier", + "src": "28436:6:31" + }, + "nativeSrc": "28436:43:31", + "nodeType": "YulFunctionCall", + "src": "28436:43:31" + }, + "nativeSrc": "28436:43:31", + "nodeType": "YulExpressionStatement", + "src": "28436:43:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nativeSrc": "28181:304:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28271:9:31", + "nodeType": "YulTypedName", + "src": "28271:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28282:6:31", + "nodeType": "YulTypedName", + "src": "28282:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28290:6:31", + "nodeType": "YulTypedName", + "src": "28290:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28301:4:31", + "nodeType": "YulTypedName", + "src": "28301:4:31", + "type": "" + } + ], + "src": "28181:304:31" + }, + { + "body": { + "nativeSrc": "28647:162:31", + "nodeType": "YulBlock", + "src": "28647:162:31", + "statements": [ + { + "nativeSrc": "28657:26:31", + "nodeType": "YulAssignment", + "src": "28657:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28669:9:31", + "nodeType": "YulIdentifier", + "src": "28669:9:31" + }, + { + "kind": "number", + "nativeSrc": "28680:2:31", + "nodeType": "YulLiteral", + "src": "28680:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28665:3:31", + "nodeType": "YulIdentifier", + "src": "28665:3:31" + }, + "nativeSrc": "28665:18:31", + "nodeType": "YulFunctionCall", + "src": "28665:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28657:4:31", + "nodeType": "YulIdentifier", + "src": "28657:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28699:9:31", + "nodeType": "YulIdentifier", + "src": "28699:9:31" + }, + { + "name": "value0", + "nativeSrc": "28710:6:31", + "nodeType": "YulIdentifier", + "src": "28710:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28692:6:31", + "nodeType": "YulIdentifier", + "src": "28692:6:31" + }, + "nativeSrc": "28692:25:31", + "nodeType": "YulFunctionCall", + "src": "28692:25:31" + }, + "nativeSrc": "28692:25:31", + "nodeType": "YulExpressionStatement", + "src": "28692:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28737:9:31", + "nodeType": "YulIdentifier", + "src": "28737:9:31" + }, + { + "kind": "number", + "nativeSrc": "28748:2:31", + "nodeType": "YulLiteral", + "src": "28748:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28733:3:31", + "nodeType": "YulIdentifier", + "src": "28733:3:31" + }, + "nativeSrc": "28733:18:31", + "nodeType": "YulFunctionCall", + "src": "28733:18:31" + }, + { + "name": "value1", + "nativeSrc": "28753:6:31", + "nodeType": "YulIdentifier", + "src": "28753:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28726:6:31", + "nodeType": "YulIdentifier", + "src": "28726:6:31" + }, + "nativeSrc": "28726:34:31", + "nodeType": "YulFunctionCall", + "src": "28726:34:31" + }, + "nativeSrc": "28726:34:31", + "nodeType": "YulExpressionStatement", + "src": "28726:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28780:9:31", + "nodeType": "YulIdentifier", + "src": "28780:9:31" + }, + { + "kind": "number", + "nativeSrc": "28791:2:31", + "nodeType": "YulLiteral", + "src": "28791:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28776:3:31", + "nodeType": "YulIdentifier", + "src": "28776:3:31" + }, + "nativeSrc": "28776:18:31", + "nodeType": "YulFunctionCall", + "src": "28776:18:31" + }, + { + "name": "value2", + "nativeSrc": "28796:6:31", + "nodeType": "YulIdentifier", + "src": "28796:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28769:6:31", + "nodeType": "YulIdentifier", + "src": "28769:6:31" + }, + "nativeSrc": "28769:34:31", + "nodeType": "YulFunctionCall", + "src": "28769:34:31" + }, + "nativeSrc": "28769:34:31", + "nodeType": "YulExpressionStatement", + "src": "28769:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "28490:319:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28600:9:31", + "nodeType": "YulTypedName", + "src": "28600:9:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "28611:6:31", + "nodeType": "YulTypedName", + "src": "28611:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28619:6:31", + "nodeType": "YulTypedName", + "src": "28619:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28627:6:31", + "nodeType": "YulTypedName", + "src": "28627:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28638:4:31", + "nodeType": "YulTypedName", + "src": "28638:4:31", + "type": "" + } + ], + "src": "28490:319:31" + }, + { + "body": { + "nativeSrc": "29005:14:31", + "nodeType": "YulBlock", + "src": "29005:14:31", + "statements": [ + { + "nativeSrc": "29007:10:31", + "nodeType": "YulAssignment", + "src": "29007:10:31", + "value": { + "name": "pos", + "nativeSrc": "29014:3:31", + "nodeType": "YulIdentifier", + "src": "29014:3:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "29007:3:31", + "nodeType": "YulIdentifier", + "src": "29007:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "28814:205:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "28989:3:31", + "nodeType": "YulTypedName", + "src": "28989:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "28997:3:31", + "nodeType": "YulTypedName", + "src": "28997:3:31", + "type": "" + } + ], + "src": "28814:205:31" + }, + { + "body": { + "nativeSrc": "29080:65:31", + "nodeType": "YulBlock", + "src": "29080:65:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29097:1:31", + "nodeType": "YulLiteral", + "src": "29097:1:31", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "29100:3:31", + "nodeType": "YulIdentifier", + "src": "29100:3:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29090:6:31", + "nodeType": "YulIdentifier", + "src": "29090:6:31" + }, + "nativeSrc": "29090:14:31", + "nodeType": "YulFunctionCall", + "src": "29090:14:31" + }, + "nativeSrc": "29090:14:31", + "nodeType": "YulExpressionStatement", + "src": "29090:14:31" + }, + { + "nativeSrc": "29113:26:31", + "nodeType": "YulAssignment", + "src": "29113:26:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29131:1:31", + "nodeType": "YulLiteral", + "src": "29131:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "29134:4:31", + "nodeType": "YulLiteral", + "src": "29134:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "29121:9:31", + "nodeType": "YulIdentifier", + "src": "29121:9:31" + }, + "nativeSrc": "29121:18:31", + "nodeType": "YulFunctionCall", + "src": "29121:18:31" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "29113:4:31", + "nodeType": "YulIdentifier", + "src": "29113:4:31" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "29024:121:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "29063:3:31", + "nodeType": "YulTypedName", + "src": "29063:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "29071:4:31", + "nodeType": "YulTypedName", + "src": "29071:4:31", + "type": "" + } + ], + "src": "29024:121:31" + }, + { + "body": { + "nativeSrc": "29231:462:31", + "nodeType": "YulBlock", + "src": "29231:462:31", + "statements": [ + { + "body": { + "nativeSrc": "29264:423:31", + "nodeType": "YulBlock", + "src": "29264:423:31", + "statements": [ + { + "nativeSrc": "29278:11:31", + "nodeType": "YulVariableDeclaration", + "src": "29278:11:31", + "value": { + "kind": "number", + "nativeSrc": "29288:1:31", + "nodeType": "YulLiteral", + "src": "29288:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "29282:2:31", + "nodeType": "YulTypedName", + "src": "29282:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29309:1:31", + "nodeType": "YulLiteral", + "src": "29309:1:31", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "29312:5:31", + "nodeType": "YulIdentifier", + "src": "29312:5:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29302:6:31", + "nodeType": "YulIdentifier", + "src": "29302:6:31" + }, + "nativeSrc": "29302:16:31", + "nodeType": "YulFunctionCall", + "src": "29302:16:31" + }, + "nativeSrc": "29302:16:31", + "nodeType": "YulExpressionStatement", + "src": "29302:16:31" + }, + { + "nativeSrc": "29331:30:31", + "nodeType": "YulVariableDeclaration", + "src": "29331:30:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29353:1:31", + "nodeType": "YulLiteral", + "src": "29353:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "29356:4:31", + "nodeType": "YulLiteral", + "src": "29356:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "29343:9:31", + "nodeType": "YulIdentifier", + "src": "29343:9:31" + }, + "nativeSrc": "29343:18:31", + "nodeType": "YulFunctionCall", + "src": "29343:18:31" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "29335:4:31", + "nodeType": "YulTypedName", + "src": "29335:4:31", + "type": "" + } + ] + }, + { + "nativeSrc": "29374:57:31", + "nodeType": "YulVariableDeclaration", + "src": "29374:57:31", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "29397:4:31", + "nodeType": "YulIdentifier", + "src": "29397:4:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29407:1:31", + "nodeType": "YulLiteral", + "src": "29407:1:31", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "29414:10:31", + "nodeType": "YulIdentifier", + "src": "29414:10:31" + }, + { + "kind": "number", + "nativeSrc": "29426:2:31", + "nodeType": "YulLiteral", + "src": "29426:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29410:3:31", + "nodeType": "YulIdentifier", + "src": "29410:3:31" + }, + "nativeSrc": "29410:19:31", + "nodeType": "YulFunctionCall", + "src": "29410:19:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29403:3:31", + "nodeType": "YulIdentifier", + "src": "29403:3:31" + }, + "nativeSrc": "29403:27:31", + "nodeType": "YulFunctionCall", + "src": "29403:27:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29393:3:31", + "nodeType": "YulIdentifier", + "src": "29393:3:31" + }, + "nativeSrc": "29393:38:31", + "nodeType": "YulFunctionCall", + "src": "29393:38:31" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "29378:11:31", + "nodeType": "YulTypedName", + "src": "29378:11:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29468:23:31", + "nodeType": "YulBlock", + "src": "29468:23:31", + "statements": [ + { + "nativeSrc": "29470:19:31", + "nodeType": "YulAssignment", + "src": "29470:19:31", + "value": { + "name": "data", + "nativeSrc": "29485:4:31", + "nodeType": "YulIdentifier", + "src": "29485:4:31" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "29470:11:31", + "nodeType": "YulIdentifier", + "src": "29470:11:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "29450:10:31", + "nodeType": "YulIdentifier", + "src": "29450:10:31" + }, + { + "kind": "number", + "nativeSrc": "29462:4:31", + "nodeType": "YulLiteral", + "src": "29462:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "29447:2:31", + "nodeType": "YulIdentifier", + "src": "29447:2:31" + }, + "nativeSrc": "29447:20:31", + "nodeType": "YulFunctionCall", + "src": "29447:20:31" + }, + "nativeSrc": "29444:47:31", + "nodeType": "YulIf", + "src": "29444:47:31" + }, + { + "nativeSrc": "29504:41:31", + "nodeType": "YulVariableDeclaration", + "src": "29504:41:31", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "29518:4:31", + "nodeType": "YulIdentifier", + "src": "29518:4:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29528:1:31", + "nodeType": "YulLiteral", + "src": "29528:1:31", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "29535:3:31", + "nodeType": "YulIdentifier", + "src": "29535:3:31" + }, + { + "kind": "number", + "nativeSrc": "29540:2:31", + "nodeType": "YulLiteral", + "src": "29540:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29531:3:31", + "nodeType": "YulIdentifier", + "src": "29531:3:31" + }, + "nativeSrc": "29531:12:31", + "nodeType": "YulFunctionCall", + "src": "29531:12:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29524:3:31", + "nodeType": "YulIdentifier", + "src": "29524:3:31" + }, + "nativeSrc": "29524:20:31", + "nodeType": "YulFunctionCall", + "src": "29524:20:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29514:3:31", + "nodeType": "YulIdentifier", + "src": "29514:3:31" + }, + "nativeSrc": "29514:31:31", + "nodeType": "YulFunctionCall", + "src": "29514:31:31" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "29508:2:31", + "nodeType": "YulTypedName", + "src": "29508:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "29558:24:31", + "nodeType": "YulVariableDeclaration", + "src": "29558:24:31", + "value": { + "name": "deleteStart", + "nativeSrc": "29571:11:31", + "nodeType": "YulIdentifier", + "src": "29571:11:31" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "29562:5:31", + "nodeType": "YulTypedName", + "src": "29562:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29656:21:31", + "nodeType": "YulBlock", + "src": "29656:21:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29665:5:31", + "nodeType": "YulIdentifier", + "src": "29665:5:31" + }, + { + "name": "_1", + "nativeSrc": "29672:2:31", + "nodeType": "YulIdentifier", + "src": "29672:2:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "29658:6:31", + "nodeType": "YulIdentifier", + "src": "29658:6:31" + }, + "nativeSrc": "29658:17:31", + "nodeType": "YulFunctionCall", + "src": "29658:17:31" + }, + "nativeSrc": "29658:17:31", + "nodeType": "YulExpressionStatement", + "src": "29658:17:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29606:5:31", + "nodeType": "YulIdentifier", + "src": "29606:5:31" + }, + { + "name": "_2", + "nativeSrc": "29613:2:31", + "nodeType": "YulIdentifier", + "src": "29613:2:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "29603:2:31", + "nodeType": "YulIdentifier", + "src": "29603:2:31" + }, + "nativeSrc": "29603:13:31", + "nodeType": "YulFunctionCall", + "src": "29603:13:31" + }, + "nativeSrc": "29595:82:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "29617:26:31", + "nodeType": "YulBlock", + "src": "29617:26:31", + "statements": [ + { + "nativeSrc": "29619:22:31", + "nodeType": "YulAssignment", + "src": "29619:22:31", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "29632:5:31", + "nodeType": "YulIdentifier", + "src": "29632:5:31" + }, + { + "kind": "number", + "nativeSrc": "29639:1:31", + "nodeType": "YulLiteral", + "src": "29639:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29628:3:31", + "nodeType": "YulIdentifier", + "src": "29628:3:31" + }, + "nativeSrc": "29628:13:31", + "nodeType": "YulFunctionCall", + "src": "29628:13:31" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "29619:5:31", + "nodeType": "YulIdentifier", + "src": "29619:5:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "29599:3:31", + "nodeType": "YulBlock", + "src": "29599:3:31", + "statements": [] + }, + "src": "29595:82:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "29247:3:31", + "nodeType": "YulIdentifier", + "src": "29247:3:31" + }, + { + "kind": "number", + "nativeSrc": "29252:2:31", + "nodeType": "YulLiteral", + "src": "29252:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "29244:2:31", + "nodeType": "YulIdentifier", + "src": "29244:2:31" + }, + "nativeSrc": "29244:11:31", + "nodeType": "YulFunctionCall", + "src": "29244:11:31" + }, + "nativeSrc": "29241:446:31", + "nodeType": "YulIf", + "src": "29241:446:31" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "29150:543:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "29203:5:31", + "nodeType": "YulTypedName", + "src": "29203:5:31", + "type": "" + }, + { + "name": "len", + "nativeSrc": "29210:3:31", + "nodeType": "YulTypedName", + "src": "29210:3:31", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "29215:10:31", + "nodeType": "YulTypedName", + "src": "29215:10:31", + "type": "" + } + ], + "src": "29150:543:31" + }, + { + "body": { + "nativeSrc": "29783:81:31", + "nodeType": "YulBlock", + "src": "29783:81:31", + "statements": [ + { + "nativeSrc": "29793:65:31", + "nodeType": "YulAssignment", + "src": "29793:65:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "29808:4:31", + "nodeType": "YulIdentifier", + "src": "29808:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29826:1:31", + "nodeType": "YulLiteral", + "src": "29826:1:31", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "29829:3:31", + "nodeType": "YulIdentifier", + "src": "29829:3:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29822:3:31", + "nodeType": "YulIdentifier", + "src": "29822:3:31" + }, + "nativeSrc": "29822:11:31", + "nodeType": "YulFunctionCall", + "src": "29822:11:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29839:1:31", + "nodeType": "YulLiteral", + "src": "29839:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29835:3:31", + "nodeType": "YulIdentifier", + "src": "29835:3:31" + }, + "nativeSrc": "29835:6:31", + "nodeType": "YulFunctionCall", + "src": "29835:6:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29818:3:31", + "nodeType": "YulIdentifier", + "src": "29818:3:31" + }, + "nativeSrc": "29818:24:31", + "nodeType": "YulFunctionCall", + "src": "29818:24:31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29814:3:31", + "nodeType": "YulIdentifier", + "src": "29814:3:31" + }, + "nativeSrc": "29814:29:31", + "nodeType": "YulFunctionCall", + "src": "29814:29:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29804:3:31", + "nodeType": "YulIdentifier", + "src": "29804:3:31" + }, + "nativeSrc": "29804:40:31", + "nodeType": "YulFunctionCall", + "src": "29804:40:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29850:1:31", + "nodeType": "YulLiteral", + "src": "29850:1:31", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "29853:3:31", + "nodeType": "YulIdentifier", + "src": "29853:3:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29846:3:31", + "nodeType": "YulIdentifier", + "src": "29846:3:31" + }, + "nativeSrc": "29846:11:31", + "nodeType": "YulFunctionCall", + "src": "29846:11:31" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "29801:2:31", + "nodeType": "YulIdentifier", + "src": "29801:2:31" + }, + "nativeSrc": "29801:57:31", + "nodeType": "YulFunctionCall", + "src": "29801:57:31" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "29793:4:31", + "nodeType": "YulIdentifier", + "src": "29793:4:31" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "29698:166:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "29760:4:31", + "nodeType": "YulTypedName", + "src": "29760:4:31", + "type": "" + }, + { + "name": "len", + "nativeSrc": "29766:3:31", + "nodeType": "YulTypedName", + "src": "29766:3:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "29774:4:31", + "nodeType": "YulTypedName", + "src": "29774:4:31", + "type": "" + } + ], + "src": "29698:166:31" + }, + { + "body": { + "nativeSrc": "29965:1249:31", + "nodeType": "YulBlock", + "src": "29965:1249:31", + "statements": [ + { + "nativeSrc": "29975:24:31", + "nodeType": "YulVariableDeclaration", + "src": "29975:24:31", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "29995:3:31", + "nodeType": "YulIdentifier", + "src": "29995:3:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29989:5:31", + "nodeType": "YulIdentifier", + "src": "29989:5:31" + }, + "nativeSrc": "29989:10:31", + "nodeType": "YulFunctionCall", + "src": "29989:10:31" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "29979:6:31", + "nodeType": "YulTypedName", + "src": "29979:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30042:22:31", + "nodeType": "YulBlock", + "src": "30042:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "30044:16:31", + "nodeType": "YulIdentifier", + "src": "30044:16:31" + }, + "nativeSrc": "30044:18:31", + "nodeType": "YulFunctionCall", + "src": "30044:18:31" + }, + "nativeSrc": "30044:18:31", + "nodeType": "YulExpressionStatement", + "src": "30044:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "30014:6:31", + "nodeType": "YulIdentifier", + "src": "30014:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30030:2:31", + "nodeType": "YulLiteral", + "src": "30030:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "30034:1:31", + "nodeType": "YulLiteral", + "src": "30034:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30026:3:31", + "nodeType": "YulIdentifier", + "src": "30026:3:31" + }, + "nativeSrc": "30026:10:31", + "nodeType": "YulFunctionCall", + "src": "30026:10:31" + }, + { + "kind": "number", + "nativeSrc": "30038:1:31", + "nodeType": "YulLiteral", + "src": "30038:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30022:3:31", + "nodeType": "YulIdentifier", + "src": "30022:3:31" + }, + "nativeSrc": "30022:18:31", + "nodeType": "YulFunctionCall", + "src": "30022:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "30011:2:31", + "nodeType": "YulIdentifier", + "src": "30011:2:31" + }, + "nativeSrc": "30011:30:31", + "nodeType": "YulFunctionCall", + "src": "30011:30:31" + }, + "nativeSrc": "30008:56:31", + "nodeType": "YulIf", + "src": "30008:56:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30117:4:31", + "nodeType": "YulIdentifier", + "src": "30117:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30155:4:31", + "nodeType": "YulIdentifier", + "src": "30155:4:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "30149:5:31", + "nodeType": "YulIdentifier", + "src": "30149:5:31" + }, + "nativeSrc": "30149:11:31", + "nodeType": "YulFunctionCall", + "src": "30149:11:31" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "30123:25:31", + "nodeType": "YulIdentifier", + "src": "30123:25:31" + }, + "nativeSrc": "30123:38:31", + "nodeType": "YulFunctionCall", + "src": "30123:38:31" + }, + { + "name": "newLen", + "nativeSrc": "30163:6:31", + "nodeType": "YulIdentifier", + "src": "30163:6:31" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "30073:43:31", + "nodeType": "YulIdentifier", + "src": "30073:43:31" + }, + "nativeSrc": "30073:97:31", + "nodeType": "YulFunctionCall", + "src": "30073:97:31" + }, + "nativeSrc": "30073:97:31", + "nodeType": "YulExpressionStatement", + "src": "30073:97:31" + }, + { + "nativeSrc": "30179:18:31", + "nodeType": "YulVariableDeclaration", + "src": "30179:18:31", + "value": { + "kind": "number", + "nativeSrc": "30196:1:31", + "nodeType": "YulLiteral", + "src": "30196:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "30183:9:31", + "nodeType": "YulTypedName", + "src": "30183:9:31", + "type": "" + } + ] + }, + { + "nativeSrc": "30206:23:31", + "nodeType": "YulVariableDeclaration", + "src": "30206:23:31", + "value": { + "kind": "number", + "nativeSrc": "30225:4:31", + "nodeType": "YulLiteral", + "src": "30225:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "30210:11:31", + "nodeType": "YulTypedName", + "src": "30210:11:31", + "type": "" + } + ] + }, + { + "nativeSrc": "30238:17:31", + "nodeType": "YulAssignment", + "src": "30238:17:31", + "value": { + "kind": "number", + "nativeSrc": "30251:4:31", + "nodeType": "YulLiteral", + "src": "30251:4:31", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "30238:9:31", + "nodeType": "YulIdentifier", + "src": "30238:9:31" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "30301:656:31", + "nodeType": "YulBlock", + "src": "30301:656:31", + "statements": [ + { + "nativeSrc": "30315:35:31", + "nodeType": "YulVariableDeclaration", + "src": "30315:35:31", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "30334:6:31", + "nodeType": "YulIdentifier", + "src": "30334:6:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30346:2:31", + "nodeType": "YulLiteral", + "src": "30346:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "30342:3:31", + "nodeType": "YulIdentifier", + "src": "30342:3:31" + }, + "nativeSrc": "30342:7:31", + "nodeType": "YulFunctionCall", + "src": "30342:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30330:3:31", + "nodeType": "YulIdentifier", + "src": "30330:3:31" + }, + "nativeSrc": "30330:20:31", + "nodeType": "YulFunctionCall", + "src": "30330:20:31" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "30319:7:31", + "nodeType": "YulTypedName", + "src": "30319:7:31", + "type": "" + } + ] + }, + { + "nativeSrc": "30363:49:31", + "nodeType": "YulVariableDeclaration", + "src": "30363:49:31", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30407:4:31", + "nodeType": "YulIdentifier", + "src": "30407:4:31" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "30377:29:31", + "nodeType": "YulIdentifier", + "src": "30377:29:31" + }, + "nativeSrc": "30377:35:31", + "nodeType": "YulFunctionCall", + "src": "30377:35:31" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "30367:6:31", + "nodeType": "YulTypedName", + "src": "30367:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "30425:10:31", + "nodeType": "YulVariableDeclaration", + "src": "30425:10:31", + "value": { + "kind": "number", + "nativeSrc": "30434:1:31", + "nodeType": "YulLiteral", + "src": "30434:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "30429:1:31", + "nodeType": "YulTypedName", + "src": "30429:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30512:172:31", + "nodeType": "YulBlock", + "src": "30512:172:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "30537:6:31", + "nodeType": "YulIdentifier", + "src": "30537:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "30555:3:31", + "nodeType": "YulIdentifier", + "src": "30555:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "30560:9:31", + "nodeType": "YulIdentifier", + "src": "30560:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30551:3:31", + "nodeType": "YulIdentifier", + "src": "30551:3:31" + }, + "nativeSrc": "30551:19:31", + "nodeType": "YulFunctionCall", + "src": "30551:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30545:5:31", + "nodeType": "YulIdentifier", + "src": "30545:5:31" + }, + "nativeSrc": "30545:26:31", + "nodeType": "YulFunctionCall", + "src": "30545:26:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30530:6:31", + "nodeType": "YulIdentifier", + "src": "30530:6:31" + }, + "nativeSrc": "30530:42:31", + "nodeType": "YulFunctionCall", + "src": "30530:42:31" + }, + "nativeSrc": "30530:42:31", + "nodeType": "YulExpressionStatement", + "src": "30530:42:31" + }, + { + "nativeSrc": "30589:24:31", + "nodeType": "YulAssignment", + "src": "30589:24:31", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "30603:6:31", + "nodeType": "YulIdentifier", + "src": "30603:6:31" + }, + { + "kind": "number", + "nativeSrc": "30611:1:31", + "nodeType": "YulLiteral", + "src": "30611:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30599:3:31", + "nodeType": "YulIdentifier", + "src": "30599:3:31" + }, + "nativeSrc": "30599:14:31", + "nodeType": "YulFunctionCall", + "src": "30599:14:31" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "30589:6:31", + "nodeType": "YulIdentifier", + "src": "30589:6:31" + } + ] + }, + { + "nativeSrc": "30630:40:31", + "nodeType": "YulAssignment", + "src": "30630:40:31", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "30647:9:31", + "nodeType": "YulIdentifier", + "src": "30647:9:31" + }, + { + "name": "srcOffset_1", + "nativeSrc": "30658:11:31", + "nodeType": "YulIdentifier", + "src": "30658:11:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30643:3:31", + "nodeType": "YulIdentifier", + "src": "30643:3:31" + }, + "nativeSrc": "30643:27:31", + "nodeType": "YulFunctionCall", + "src": "30643:27:31" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "30630:9:31", + "nodeType": "YulIdentifier", + "src": "30630:9:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "30459:1:31", + "nodeType": "YulIdentifier", + "src": "30459:1:31" + }, + { + "name": "loopEnd", + "nativeSrc": "30462:7:31", + "nodeType": "YulIdentifier", + "src": "30462:7:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30456:2:31", + "nodeType": "YulIdentifier", + "src": "30456:2:31" + }, + "nativeSrc": "30456:14:31", + "nodeType": "YulFunctionCall", + "src": "30456:14:31" + }, + "nativeSrc": "30448:236:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30471:28:31", + "nodeType": "YulBlock", + "src": "30471:28:31", + "statements": [ + { + "nativeSrc": "30473:24:31", + "nodeType": "YulAssignment", + "src": "30473:24:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "30482:1:31", + "nodeType": "YulIdentifier", + "src": "30482:1:31" + }, + { + "name": "srcOffset_1", + "nativeSrc": "30485:11:31", + "nodeType": "YulIdentifier", + "src": "30485:11:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30478:3:31", + "nodeType": "YulIdentifier", + "src": "30478:3:31" + }, + "nativeSrc": "30478:19:31", + "nodeType": "YulFunctionCall", + "src": "30478:19:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "30473:1:31", + "nodeType": "YulIdentifier", + "src": "30473:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "30452:3:31", + "nodeType": "YulBlock", + "src": "30452:3:31", + "statements": [] + }, + "src": "30448:236:31" + }, + { + "body": { + "nativeSrc": "30732:166:31", + "nodeType": "YulBlock", + "src": "30732:166:31", + "statements": [ + { + "nativeSrc": "30750:43:31", + "nodeType": "YulVariableDeclaration", + "src": "30750:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "30777:3:31", + "nodeType": "YulIdentifier", + "src": "30777:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "30782:9:31", + "nodeType": "YulIdentifier", + "src": "30782:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30773:3:31", + "nodeType": "YulIdentifier", + "src": "30773:3:31" + }, + "nativeSrc": "30773:19:31", + "nodeType": "YulFunctionCall", + "src": "30773:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30767:5:31", + "nodeType": "YulIdentifier", + "src": "30767:5:31" + }, + "nativeSrc": "30767:26:31", + "nodeType": "YulFunctionCall", + "src": "30767:26:31" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "30754:9:31", + "nodeType": "YulTypedName", + "src": "30754:9:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "30817:6:31", + "nodeType": "YulIdentifier", + "src": "30817:6:31" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "30829:9:31", + "nodeType": "YulIdentifier", + "src": "30829:9:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30856:1:31", + "nodeType": "YulLiteral", + "src": "30856:1:31", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "30859:6:31", + "nodeType": "YulIdentifier", + "src": "30859:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30852:3:31", + "nodeType": "YulIdentifier", + "src": "30852:3:31" + }, + "nativeSrc": "30852:14:31", + "nodeType": "YulFunctionCall", + "src": "30852:14:31" + }, + { + "kind": "number", + "nativeSrc": "30868:3:31", + "nodeType": "YulLiteral", + "src": "30868:3:31", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30848:3:31", + "nodeType": "YulIdentifier", + "src": "30848:3:31" + }, + "nativeSrc": "30848:24:31", + "nodeType": "YulFunctionCall", + "src": "30848:24:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30878:1:31", + "nodeType": "YulLiteral", + "src": "30878:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "30874:3:31", + "nodeType": "YulIdentifier", + "src": "30874:3:31" + }, + "nativeSrc": "30874:6:31", + "nodeType": "YulFunctionCall", + "src": "30874:6:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30844:3:31", + "nodeType": "YulIdentifier", + "src": "30844:3:31" + }, + "nativeSrc": "30844:37:31", + "nodeType": "YulFunctionCall", + "src": "30844:37:31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "30840:3:31", + "nodeType": "YulIdentifier", + "src": "30840:3:31" + }, + "nativeSrc": "30840:42:31", + "nodeType": "YulFunctionCall", + "src": "30840:42:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30825:3:31", + "nodeType": "YulIdentifier", + "src": "30825:3:31" + }, + "nativeSrc": "30825:58:31", + "nodeType": "YulFunctionCall", + "src": "30825:58:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30810:6:31", + "nodeType": "YulIdentifier", + "src": "30810:6:31" + }, + "nativeSrc": "30810:74:31", + "nodeType": "YulFunctionCall", + "src": "30810:74:31" + }, + "nativeSrc": "30810:74:31", + "nodeType": "YulExpressionStatement", + "src": "30810:74:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "30703:7:31", + "nodeType": "YulIdentifier", + "src": "30703:7:31" + }, + { + "name": "newLen", + "nativeSrc": "30712:6:31", + "nodeType": "YulIdentifier", + "src": "30712:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30700:2:31", + "nodeType": "YulIdentifier", + "src": "30700:2:31" + }, + "nativeSrc": "30700:19:31", + "nodeType": "YulFunctionCall", + "src": "30700:19:31" + }, + "nativeSrc": "30697:201:31", + "nodeType": "YulIf", + "src": "30697:201:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "30918:4:31", + "nodeType": "YulIdentifier", + "src": "30918:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30932:1:31", + "nodeType": "YulLiteral", + "src": "30932:1:31", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "30935:6:31", + "nodeType": "YulIdentifier", + "src": "30935:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30928:3:31", + "nodeType": "YulIdentifier", + "src": "30928:3:31" + }, + "nativeSrc": "30928:14:31", + "nodeType": "YulFunctionCall", + "src": "30928:14:31" + }, + { + "kind": "number", + "nativeSrc": "30944:1:31", + "nodeType": "YulLiteral", + "src": "30944:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30924:3:31", + "nodeType": "YulIdentifier", + "src": "30924:3:31" + }, + "nativeSrc": "30924:22:31", + "nodeType": "YulFunctionCall", + "src": "30924:22:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "30911:6:31", + "nodeType": "YulIdentifier", + "src": "30911:6:31" + }, + "nativeSrc": "30911:36:31", + "nodeType": "YulFunctionCall", + "src": "30911:36:31" + }, + "nativeSrc": "30911:36:31", + "nodeType": "YulExpressionStatement", + "src": "30911:36:31" + } + ] + }, + "nativeSrc": "30294:663:31", + "nodeType": "YulCase", + "src": "30294:663:31", + "value": { + "kind": "number", + "nativeSrc": "30299:1:31", + "nodeType": "YulLiteral", + "src": "30299:1:31", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "30974:234:31", + "nodeType": "YulBlock", + "src": "30974:234:31", + "statements": [ + { + "nativeSrc": "30988:14:31", + "nodeType": "YulVariableDeclaration", + "src": "30988:14:31", + "value": { + "kind": "number", + "nativeSrc": "31001:1:31", + "nodeType": "YulLiteral", + "src": "31001:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "30992:5:31", + "nodeType": "YulTypedName", + "src": "30992:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31037:67:31", + "nodeType": "YulBlock", + "src": "31037:67:31", + "statements": [ + { + "nativeSrc": "31055:35:31", + "nodeType": "YulAssignment", + "src": "31055:35:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "31074:3:31", + "nodeType": "YulIdentifier", + "src": "31074:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "31079:9:31", + "nodeType": "YulIdentifier", + "src": "31079:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31070:3:31", + "nodeType": "YulIdentifier", + "src": "31070:3:31" + }, + "nativeSrc": "31070:19:31", + "nodeType": "YulFunctionCall", + "src": "31070:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31064:5:31", + "nodeType": "YulIdentifier", + "src": "31064:5:31" + }, + "nativeSrc": "31064:26:31", + "nodeType": "YulFunctionCall", + "src": "31064:26:31" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "31055:5:31", + "nodeType": "YulIdentifier", + "src": "31055:5:31" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "31018:6:31", + "nodeType": "YulIdentifier", + "src": "31018:6:31" + }, + "nativeSrc": "31015:89:31", + "nodeType": "YulIf", + "src": "31015:89:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "31124:4:31", + "nodeType": "YulIdentifier", + "src": "31124:4:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "31183:5:31", + "nodeType": "YulIdentifier", + "src": "31183:5:31" + }, + { + "name": "newLen", + "nativeSrc": "31190:6:31", + "nodeType": "YulIdentifier", + "src": "31190:6:31" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "31130:52:31", + "nodeType": "YulIdentifier", + "src": "31130:52:31" + }, + "nativeSrc": "31130:67:31", + "nodeType": "YulFunctionCall", + "src": "31130:67:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "31117:6:31", + "nodeType": "YulIdentifier", + "src": "31117:6:31" + }, + "nativeSrc": "31117:81:31", + "nodeType": "YulFunctionCall", + "src": "31117:81:31" + }, + "nativeSrc": "31117:81:31", + "nodeType": "YulExpressionStatement", + "src": "31117:81:31" + } + ] + }, + "nativeSrc": "30966:242:31", + "nodeType": "YulCase", + "src": "30966:242:31", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "30274:6:31", + "nodeType": "YulIdentifier", + "src": "30274:6:31" + }, + { + "kind": "number", + "nativeSrc": "30282:2:31", + "nodeType": "YulLiteral", + "src": "30282:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "30271:2:31", + "nodeType": "YulIdentifier", + "src": "30271:2:31" + }, + "nativeSrc": "30271:14:31", + "nodeType": "YulFunctionCall", + "src": "30271:14:31" + }, + "nativeSrc": "30264:944:31", + "nodeType": "YulSwitch", + "src": "30264:944:31" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "29869:1345:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "29950:4:31", + "nodeType": "YulTypedName", + "src": "29950:4:31", + "type": "" + }, + { + "name": "src", + "nativeSrc": "29956:3:31", + "nodeType": "YulTypedName", + "src": "29956:3:31", + "type": "" + } + ], + "src": "29869:1345:31" + }, + { + "body": { + "nativeSrc": "31368:142:31", + "nodeType": "YulBlock", + "src": "31368:142:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31385:9:31", + "nodeType": "YulIdentifier", + "src": "31385:9:31" + }, + { + "name": "value0", + "nativeSrc": "31396:6:31", + "nodeType": "YulIdentifier", + "src": "31396:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31378:6:31", + "nodeType": "YulIdentifier", + "src": "31378:6:31" + }, + "nativeSrc": "31378:25:31", + "nodeType": "YulFunctionCall", + "src": "31378:25:31" + }, + "nativeSrc": "31378:25:31", + "nodeType": "YulExpressionStatement", + "src": "31378:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31423:9:31", + "nodeType": "YulIdentifier", + "src": "31423:9:31" + }, + { + "kind": "number", + "nativeSrc": "31434:2:31", + "nodeType": "YulLiteral", + "src": "31434:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31419:3:31", + "nodeType": "YulIdentifier", + "src": "31419:3:31" + }, + "nativeSrc": "31419:18:31", + "nodeType": "YulFunctionCall", + "src": "31419:18:31" + }, + { + "kind": "number", + "nativeSrc": "31439:2:31", + "nodeType": "YulLiteral", + "src": "31439:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31412:6:31", + "nodeType": "YulIdentifier", + "src": "31412:6:31" + }, + "nativeSrc": "31412:30:31", + "nodeType": "YulFunctionCall", + "src": "31412:30:31" + }, + "nativeSrc": "31412:30:31", + "nodeType": "YulExpressionStatement", + "src": "31412:30:31" + }, + { + "nativeSrc": "31451:53:31", + "nodeType": "YulAssignment", + "src": "31451:53:31", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "31477:6:31", + "nodeType": "YulIdentifier", + "src": "31477:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31489:9:31", + "nodeType": "YulIdentifier", + "src": "31489:9:31" + }, + { + "kind": "number", + "nativeSrc": "31500:2:31", + "nodeType": "YulLiteral", + "src": "31500:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31485:3:31", + "nodeType": "YulIdentifier", + "src": "31485:3:31" + }, + "nativeSrc": "31485:18:31", + "nodeType": "YulFunctionCall", + "src": "31485:18:31" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "31459:17:31", + "nodeType": "YulIdentifier", + "src": "31459:17:31" + }, + "nativeSrc": "31459:45:31", + "nodeType": "YulFunctionCall", + "src": "31459:45:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "31451:4:31", + "nodeType": "YulIdentifier", + "src": "31451:4:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "31219:291:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "31329:9:31", + "nodeType": "YulTypedName", + "src": "31329:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "31340:6:31", + "nodeType": "YulTypedName", + "src": "31340:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31348:6:31", + "nodeType": "YulTypedName", + "src": "31348:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "31359:4:31", + "nodeType": "YulTypedName", + "src": "31359:4:31", + "type": "" + } + ], + "src": "31219:291:31" + }, + { + "body": { + "nativeSrc": "31654:150:31", + "nodeType": "YulBlock", + "src": "31654:150:31", + "statements": [ + { + "nativeSrc": "31664:27:31", + "nodeType": "YulVariableDeclaration", + "src": "31664:27:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31684:6:31", + "nodeType": "YulIdentifier", + "src": "31684:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31678:5:31", + "nodeType": "YulIdentifier", + "src": "31678:5:31" + }, + "nativeSrc": "31678:13:31", + "nodeType": "YulFunctionCall", + "src": "31678:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "31668:6:31", + "nodeType": "YulTypedName", + "src": "31668:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31739:6:31", + "nodeType": "YulIdentifier", + "src": "31739:6:31" + }, + { + "kind": "number", + "nativeSrc": "31747:4:31", + "nodeType": "YulLiteral", + "src": "31747:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31735:3:31", + "nodeType": "YulIdentifier", + "src": "31735:3:31" + }, + "nativeSrc": "31735:17:31", + "nodeType": "YulFunctionCall", + "src": "31735:17:31" + }, + { + "name": "pos", + "nativeSrc": "31754:3:31", + "nodeType": "YulIdentifier", + "src": "31754:3:31" + }, + { + "name": "length", + "nativeSrc": "31759:6:31", + "nodeType": "YulIdentifier", + "src": "31759:6:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "31700:34:31", + "nodeType": "YulIdentifier", + "src": "31700:34:31" + }, + "nativeSrc": "31700:66:31", + "nodeType": "YulFunctionCall", + "src": "31700:66:31" + }, + "nativeSrc": "31700:66:31", + "nodeType": "YulExpressionStatement", + "src": "31700:66:31" + }, + { + "nativeSrc": "31775:23:31", + "nodeType": "YulAssignment", + "src": "31775:23:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "31786:3:31", + "nodeType": "YulIdentifier", + "src": "31786:3:31" + }, + { + "name": "length", + "nativeSrc": "31791:6:31", + "nodeType": "YulIdentifier", + "src": "31791:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31782:3:31", + "nodeType": "YulIdentifier", + "src": "31782:3:31" + }, + "nativeSrc": "31782:16:31", + "nodeType": "YulFunctionCall", + "src": "31782:16:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "31775:3:31", + "nodeType": "YulIdentifier", + "src": "31775:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "31515:289:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "31630:3:31", + "nodeType": "YulTypedName", + "src": "31630:3:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31635:6:31", + "nodeType": "YulTypedName", + "src": "31635:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "31646:3:31", + "nodeType": "YulTypedName", + "src": "31646:3:31", + "type": "" + } + ], + "src": "31515:289:31" + }, + { + "body": { + "nativeSrc": "31945:707:31", + "nodeType": "YulBlock", + "src": "31945:707:31", + "statements": [ + { + "nativeSrc": "31955:12:31", + "nodeType": "YulVariableDeclaration", + "src": "31955:12:31", + "value": { + "kind": "number", + "nativeSrc": "31966:1:31", + "nodeType": "YulLiteral", + "src": "31966:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "ret", + "nativeSrc": "31959:3:31", + "nodeType": "YulTypedName", + "src": "31959:3:31", + "type": "" + } + ] + }, + { + "nativeSrc": "31976:30:31", + "nodeType": "YulVariableDeclaration", + "src": "31976:30:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31999:6:31", + "nodeType": "YulIdentifier", + "src": "31999:6:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "31993:5:31", + "nodeType": "YulIdentifier", + "src": "31993:5:31" + }, + "nativeSrc": "31993:13:31", + "nodeType": "YulFunctionCall", + "src": "31993:13:31" + }, + "variables": [ + { + "name": "slotValue", + "nativeSrc": "31980:9:31", + "nodeType": "YulTypedName", + "src": "31980:9:31", + "type": "" + } + ] + }, + { + "nativeSrc": "32015:50:31", + "nodeType": "YulVariableDeclaration", + "src": "32015:50:31", + "value": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "32055:9:31", + "nodeType": "YulIdentifier", + "src": "32055:9:31" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "32029:25:31", + "nodeType": "YulIdentifier", + "src": "32029:25:31" + }, + "nativeSrc": "32029:36:31", + "nodeType": "YulFunctionCall", + "src": "32029:36:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "32019:6:31", + "nodeType": "YulTypedName", + "src": "32019:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "32074:11:31", + "nodeType": "YulVariableDeclaration", + "src": "32074:11:31", + "value": { + "kind": "number", + "nativeSrc": "32084:1:31", + "nodeType": "YulLiteral", + "src": "32084:1:31", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "32078:2:31", + "nodeType": "YulTypedName", + "src": "32078:2:31", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "32134:126:31", + "nodeType": "YulBlock", + "src": "32134:126:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "32155:3:31", + "nodeType": "YulIdentifier", + "src": "32155:3:31" + }, + { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "32164:9:31", + "nodeType": "YulIdentifier", + "src": "32164:9:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32179:3:31", + "nodeType": "YulLiteral", + "src": "32179:3:31", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "32175:3:31", + "nodeType": "YulIdentifier", + "src": "32175:3:31" + }, + "nativeSrc": "32175:8:31", + "nodeType": "YulFunctionCall", + "src": "32175:8:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "32160:3:31", + "nodeType": "YulIdentifier", + "src": "32160:3:31" + }, + "nativeSrc": "32160:24:31", + "nodeType": "YulFunctionCall", + "src": "32160:24:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32148:6:31", + "nodeType": "YulIdentifier", + "src": "32148:6:31" + }, + "nativeSrc": "32148:37:31", + "nodeType": "YulFunctionCall", + "src": "32148:37:31" + }, + "nativeSrc": "32148:37:31", + "nodeType": "YulExpressionStatement", + "src": "32148:37:31" + }, + { + "nativeSrc": "32198:52:31", + "nodeType": "YulAssignment", + "src": "32198:52:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "32209:3:31", + "nodeType": "YulIdentifier", + "src": "32209:3:31" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "32218:6:31", + "nodeType": "YulIdentifier", + "src": "32218:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "32240:6:31", + "nodeType": "YulIdentifier", + "src": "32240:6:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "32233:6:31", + "nodeType": "YulIdentifier", + "src": "32233:6:31" + }, + "nativeSrc": "32233:14:31", + "nodeType": "YulFunctionCall", + "src": "32233:14:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "32226:6:31", + "nodeType": "YulIdentifier", + "src": "32226:6:31" + }, + "nativeSrc": "32226:22:31", + "nodeType": "YulFunctionCall", + "src": "32226:22:31" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "32214:3:31", + "nodeType": "YulIdentifier", + "src": "32214:3:31" + }, + "nativeSrc": "32214:35:31", + "nodeType": "YulFunctionCall", + "src": "32214:35:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32205:3:31", + "nodeType": "YulIdentifier", + "src": "32205:3:31" + }, + "nativeSrc": "32205:45:31", + "nodeType": "YulFunctionCall", + "src": "32205:45:31" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "32198:3:31", + "nodeType": "YulIdentifier", + "src": "32198:3:31" + } + ] + } + ] + }, + "nativeSrc": "32127:133:31", + "nodeType": "YulCase", + "src": "32127:133:31", + "value": { + "kind": "number", + "nativeSrc": "32132:1:31", + "nodeType": "YulLiteral", + "src": "32132:1:31", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "32276:351:31", + "nodeType": "YulBlock", + "src": "32276:351:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32297:1:31", + "nodeType": "YulLiteral", + "src": "32297:1:31", + "type": "", + "value": "0" + }, + { + "name": "value0", + "nativeSrc": "32300:6:31", + "nodeType": "YulIdentifier", + "src": "32300:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32290:6:31", + "nodeType": "YulIdentifier", + "src": "32290:6:31" + }, + "nativeSrc": "32290:17:31", + "nodeType": "YulFunctionCall", + "src": "32290:17:31" + }, + "nativeSrc": "32290:17:31", + "nodeType": "YulExpressionStatement", + "src": "32290:17:31" + }, + { + "nativeSrc": "32320:14:31", + "nodeType": "YulVariableDeclaration", + "src": "32320:14:31", + "value": { + "kind": "number", + "nativeSrc": "32330:4:31", + "nodeType": "YulLiteral", + "src": "32330:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "32324:2:31", + "nodeType": "YulTypedName", + "src": "32324:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "32347:33:31", + "nodeType": "YulVariableDeclaration", + "src": "32347:33:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32372:1:31", + "nodeType": "YulLiteral", + "src": "32372:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "32375:4:31", + "nodeType": "YulLiteral", + "src": "32375:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "32362:9:31", + "nodeType": "YulIdentifier", + "src": "32362:9:31" + }, + "nativeSrc": "32362:18:31", + "nodeType": "YulFunctionCall", + "src": "32362:18:31" + }, + "variables": [ + { + "name": "dataPos", + "nativeSrc": "32351:7:31", + "nodeType": "YulTypedName", + "src": "32351:7:31", + "type": "" + } + ] + }, + { + "nativeSrc": "32393:10:31", + "nodeType": "YulVariableDeclaration", + "src": "32393:10:31", + "value": { + "kind": "number", + "nativeSrc": "32402:1:31", + "nodeType": "YulLiteral", + "src": "32402:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "32397:1:31", + "nodeType": "YulTypedName", + "src": "32397:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "32470:111:31", + "nodeType": "YulBlock", + "src": "32470:111:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "32499:3:31", + "nodeType": "YulIdentifier", + "src": "32499:3:31" + }, + { + "name": "i", + "nativeSrc": "32504:1:31", + "nodeType": "YulIdentifier", + "src": "32504:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32495:3:31", + "nodeType": "YulIdentifier", + "src": "32495:3:31" + }, + "nativeSrc": "32495:11:31", + "nodeType": "YulFunctionCall", + "src": "32495:11:31" + }, + { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "32514:7:31", + "nodeType": "YulIdentifier", + "src": "32514:7:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "32508:5:31", + "nodeType": "YulIdentifier", + "src": "32508:5:31" + }, + "nativeSrc": "32508:14:31", + "nodeType": "YulFunctionCall", + "src": "32508:14:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32488:6:31", + "nodeType": "YulIdentifier", + "src": "32488:6:31" + }, + "nativeSrc": "32488:35:31", + "nodeType": "YulFunctionCall", + "src": "32488:35:31" + }, + "nativeSrc": "32488:35:31", + "nodeType": "YulExpressionStatement", + "src": "32488:35:31" + }, + { + "nativeSrc": "32540:27:31", + "nodeType": "YulAssignment", + "src": "32540:27:31", + "value": { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "32555:7:31", + "nodeType": "YulIdentifier", + "src": "32555:7:31" + }, + { + "name": "_1", + "nativeSrc": "32564:2:31", + "nodeType": "YulIdentifier", + "src": "32564:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32551:3:31", + "nodeType": "YulIdentifier", + "src": "32551:3:31" + }, + "nativeSrc": "32551:16:31", + "nodeType": "YulFunctionCall", + "src": "32551:16:31" + }, + "variableNames": [ + { + "name": "dataPos", + "nativeSrc": "32540:7:31", + "nodeType": "YulIdentifier", + "src": "32540:7:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "32427:1:31", + "nodeType": "YulIdentifier", + "src": "32427:1:31" + }, + { + "name": "length", + "nativeSrc": "32430:6:31", + "nodeType": "YulIdentifier", + "src": "32430:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "32424:2:31", + "nodeType": "YulIdentifier", + "src": "32424:2:31" + }, + "nativeSrc": "32424:13:31", + "nodeType": "YulFunctionCall", + "src": "32424:13:31" + }, + "nativeSrc": "32416:165:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "32438:19:31", + "nodeType": "YulBlock", + "src": "32438:19:31", + "statements": [ + { + "nativeSrc": "32440:15:31", + "nodeType": "YulAssignment", + "src": "32440:15:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "32449:1:31", + "nodeType": "YulIdentifier", + "src": "32449:1:31" + }, + { + "name": "_2", + "nativeSrc": "32452:2:31", + "nodeType": "YulIdentifier", + "src": "32452:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32445:3:31", + "nodeType": "YulIdentifier", + "src": "32445:3:31" + }, + "nativeSrc": "32445:10:31", + "nodeType": "YulFunctionCall", + "src": "32445:10:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "32440:1:31", + "nodeType": "YulIdentifier", + "src": "32440:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "32420:3:31", + "nodeType": "YulBlock", + "src": "32420:3:31", + "statements": [] + }, + "src": "32416:165:31" + }, + { + "nativeSrc": "32594:23:31", + "nodeType": "YulAssignment", + "src": "32594:23:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "32605:3:31", + "nodeType": "YulIdentifier", + "src": "32605:3:31" + }, + { + "name": "length", + "nativeSrc": "32610:6:31", + "nodeType": "YulIdentifier", + "src": "32610:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32601:3:31", + "nodeType": "YulIdentifier", + "src": "32601:3:31" + }, + "nativeSrc": "32601:16:31", + "nodeType": "YulFunctionCall", + "src": "32601:16:31" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "32594:3:31", + "nodeType": "YulIdentifier", + "src": "32594:3:31" + } + ] + } + ] + }, + "nativeSrc": "32269:358:31", + "nodeType": "YulCase", + "src": "32269:358:31", + "value": { + "kind": "number", + "nativeSrc": "32274:1:31", + "nodeType": "YulLiteral", + "src": "32274:1:31", + "type": "", + "value": "1" + } + } + ], + "expression": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "32105:9:31", + "nodeType": "YulIdentifier", + "src": "32105:9:31" + }, + { + "kind": "number", + "nativeSrc": "32116:1:31", + "nodeType": "YulLiteral", + "src": "32116:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "32101:3:31", + "nodeType": "YulIdentifier", + "src": "32101:3:31" + }, + "nativeSrc": "32101:17:31", + "nodeType": "YulFunctionCall", + "src": "32101:17:31" + }, + "nativeSrc": "32094:533:31", + "nodeType": "YulSwitch", + "src": "32094:533:31" + }, + { + "nativeSrc": "32636:10:31", + "nodeType": "YulAssignment", + "src": "32636:10:31", + "value": { + "name": "ret", + "nativeSrc": "32643:3:31", + "nodeType": "YulIdentifier", + "src": "32643:3:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "32636:3:31", + "nodeType": "YulIdentifier", + "src": "32636:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "31809:843:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "31921:3:31", + "nodeType": "YulTypedName", + "src": "31921:3:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31926:6:31", + "nodeType": "YulTypedName", + "src": "31926:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "31937:3:31", + "nodeType": "YulTypedName", + "src": "31937:3:31", + "type": "" + } + ], + "src": "31809:843:31" + }, + { + "body": { + "nativeSrc": "32754:1338:31", + "nodeType": "YulBlock", + "src": "32754:1338:31", + "statements": [ + { + "body": { + "nativeSrc": "32781:9:31", + "nodeType": "YulBlock", + "src": "32781:9:31", + "statements": [ + { + "nativeSrc": "32783:5:31", + "nodeType": "YulLeave", + "src": "32783:5:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32770:4:31", + "nodeType": "YulIdentifier", + "src": "32770:4:31" + }, + { + "name": "src", + "nativeSrc": "32776:3:31", + "nodeType": "YulIdentifier", + "src": "32776:3:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "32767:2:31", + "nodeType": "YulIdentifier", + "src": "32767:2:31" + }, + "nativeSrc": "32767:13:31", + "nodeType": "YulFunctionCall", + "src": "32767:13:31" + }, + "nativeSrc": "32764:26:31", + "nodeType": "YulIf", + "src": "32764:26:31" + }, + { + "nativeSrc": "32799:51:31", + "nodeType": "YulVariableDeclaration", + "src": "32799:51:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "32845:3:31", + "nodeType": "YulIdentifier", + "src": "32845:3:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "32839:5:31", + "nodeType": "YulIdentifier", + "src": "32839:5:31" + }, + "nativeSrc": "32839:10:31", + "nodeType": "YulFunctionCall", + "src": "32839:10:31" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "32813:25:31", + "nodeType": "YulIdentifier", + "src": "32813:25:31" + }, + "nativeSrc": "32813:37:31", + "nodeType": "YulFunctionCall", + "src": "32813:37:31" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "32803:6:31", + "nodeType": "YulTypedName", + "src": "32803:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "32893:22:31", + "nodeType": "YulBlock", + "src": "32893:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "32895:16:31", + "nodeType": "YulIdentifier", + "src": "32895:16:31" + }, + "nativeSrc": "32895:18:31", + "nodeType": "YulFunctionCall", + "src": "32895:18:31" + }, + "nativeSrc": "32895:18:31", + "nodeType": "YulExpressionStatement", + "src": "32895:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "32865:6:31", + "nodeType": "YulIdentifier", + "src": "32865:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32881:2:31", + "nodeType": "YulLiteral", + "src": "32881:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "32885:1:31", + "nodeType": "YulLiteral", + "src": "32885:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32877:3:31", + "nodeType": "YulIdentifier", + "src": "32877:3:31" + }, + "nativeSrc": "32877:10:31", + "nodeType": "YulFunctionCall", + "src": "32877:10:31" + }, + { + "kind": "number", + "nativeSrc": "32889:1:31", + "nodeType": "YulLiteral", + "src": "32889:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32873:3:31", + "nodeType": "YulIdentifier", + "src": "32873:3:31" + }, + "nativeSrc": "32873:18:31", + "nodeType": "YulFunctionCall", + "src": "32873:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32862:2:31", + "nodeType": "YulIdentifier", + "src": "32862:2:31" + }, + "nativeSrc": "32862:30:31", + "nodeType": "YulFunctionCall", + "src": "32862:30:31" + }, + "nativeSrc": "32859:56:31", + "nodeType": "YulIf", + "src": "32859:56:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "32968:4:31", + "nodeType": "YulIdentifier", + "src": "32968:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33006:4:31", + "nodeType": "YulIdentifier", + "src": "33006:4:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33000:5:31", + "nodeType": "YulIdentifier", + "src": "33000:5:31" + }, + "nativeSrc": "33000:11:31", + "nodeType": "YulFunctionCall", + "src": "33000:11:31" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "32974:25:31", + "nodeType": "YulIdentifier", + "src": "32974:25:31" + }, + "nativeSrc": "32974:38:31", + "nodeType": "YulFunctionCall", + "src": "32974:38:31" + }, + { + "name": "newLen", + "nativeSrc": "33014:6:31", + "nodeType": "YulIdentifier", + "src": "33014:6:31" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "32924:43:31", + "nodeType": "YulIdentifier", + "src": "32924:43:31" + }, + "nativeSrc": "32924:97:31", + "nodeType": "YulFunctionCall", + "src": "32924:97:31" + }, + "nativeSrc": "32924:97:31", + "nodeType": "YulExpressionStatement", + "src": "32924:97:31" + }, + { + "nativeSrc": "33030:18:31", + "nodeType": "YulVariableDeclaration", + "src": "33030:18:31", + "value": { + "kind": "number", + "nativeSrc": "33047:1:31", + "nodeType": "YulLiteral", + "src": "33047:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "33034:9:31", + "nodeType": "YulTypedName", + "src": "33034:9:31", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "33094:741:31", + "nodeType": "YulBlock", + "src": "33094:741:31", + "statements": [ + { + "nativeSrc": "33108:35:31", + "nodeType": "YulVariableDeclaration", + "src": "33108:35:31", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "33127:6:31", + "nodeType": "YulIdentifier", + "src": "33127:6:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33139:2:31", + "nodeType": "YulLiteral", + "src": "33139:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33135:3:31", + "nodeType": "YulIdentifier", + "src": "33135:3:31" + }, + "nativeSrc": "33135:7:31", + "nodeType": "YulFunctionCall", + "src": "33135:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33123:3:31", + "nodeType": "YulIdentifier", + "src": "33123:3:31" + }, + "nativeSrc": "33123:20:31", + "nodeType": "YulFunctionCall", + "src": "33123:20:31" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "33112:7:31", + "nodeType": "YulTypedName", + "src": "33112:7:31", + "type": "" + } + ] + }, + { + "nativeSrc": "33156:47:31", + "nodeType": "YulVariableDeclaration", + "src": "33156:47:31", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "33199:3:31", + "nodeType": "YulIdentifier", + "src": "33199:3:31" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "33169:29:31", + "nodeType": "YulIdentifier", + "src": "33169:29:31" + }, + "nativeSrc": "33169:34:31", + "nodeType": "YulFunctionCall", + "src": "33169:34:31" + }, + "variables": [ + { + "name": "src_1", + "nativeSrc": "33160:5:31", + "nodeType": "YulTypedName", + "src": "33160:5:31", + "type": "" + } + ] + }, + { + "nativeSrc": "33216:49:31", + "nodeType": "YulVariableDeclaration", + "src": "33216:49:31", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33260:4:31", + "nodeType": "YulIdentifier", + "src": "33260:4:31" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "33230:29:31", + "nodeType": "YulIdentifier", + "src": "33230:29:31" + }, + "nativeSrc": "33230:35:31", + "nodeType": "YulFunctionCall", + "src": "33230:35:31" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "33220:6:31", + "nodeType": "YulTypedName", + "src": "33220:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "33278:18:31", + "nodeType": "YulVariableDeclaration", + "src": "33278:18:31", + "value": { + "name": "srcOffset", + "nativeSrc": "33287:9:31", + "nodeType": "YulIdentifier", + "src": "33287:9:31" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "33282:1:31", + "nodeType": "YulTypedName", + "src": "33282:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33366:194:31", + "nodeType": "YulBlock", + "src": "33366:194:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "33391:6:31", + "nodeType": "YulIdentifier", + "src": "33391:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "33409:5:31", + "nodeType": "YulIdentifier", + "src": "33409:5:31" + }, + { + "name": "srcOffset", + "nativeSrc": "33416:9:31", + "nodeType": "YulIdentifier", + "src": "33416:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33405:3:31", + "nodeType": "YulIdentifier", + "src": "33405:3:31" + }, + "nativeSrc": "33405:21:31", + "nodeType": "YulFunctionCall", + "src": "33405:21:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33399:5:31", + "nodeType": "YulIdentifier", + "src": "33399:5:31" + }, + "nativeSrc": "33399:28:31", + "nodeType": "YulFunctionCall", + "src": "33399:28:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33384:6:31", + "nodeType": "YulIdentifier", + "src": "33384:6:31" + }, + "nativeSrc": "33384:44:31", + "nodeType": "YulFunctionCall", + "src": "33384:44:31" + }, + "nativeSrc": "33384:44:31", + "nodeType": "YulExpressionStatement", + "src": "33384:44:31" + }, + { + "nativeSrc": "33445:11:31", + "nodeType": "YulVariableDeclaration", + "src": "33445:11:31", + "value": { + "kind": "number", + "nativeSrc": "33455:1:31", + "nodeType": "YulLiteral", + "src": "33455:1:31", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "33449:2:31", + "nodeType": "YulTypedName", + "src": "33449:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "33473:25:31", + "nodeType": "YulAssignment", + "src": "33473:25:31", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "33487:6:31", + "nodeType": "YulIdentifier", + "src": "33487:6:31" + }, + { + "name": "_1", + "nativeSrc": "33495:2:31", + "nodeType": "YulIdentifier", + "src": "33495:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33483:3:31", + "nodeType": "YulIdentifier", + "src": "33483:3:31" + }, + "nativeSrc": "33483:15:31", + "nodeType": "YulFunctionCall", + "src": "33483:15:31" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "33473:6:31", + "nodeType": "YulIdentifier", + "src": "33473:6:31" + } + ] + }, + { + "nativeSrc": "33515:31:31", + "nodeType": "YulAssignment", + "src": "33515:31:31", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "33532:9:31", + "nodeType": "YulIdentifier", + "src": "33532:9:31" + }, + { + "name": "_1", + "nativeSrc": "33543:2:31", + "nodeType": "YulIdentifier", + "src": "33543:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33528:3:31", + "nodeType": "YulIdentifier", + "src": "33528:3:31" + }, + "nativeSrc": "33528:18:31", + "nodeType": "YulFunctionCall", + "src": "33528:18:31" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "33515:9:31", + "nodeType": "YulIdentifier", + "src": "33515:9:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "33320:1:31", + "nodeType": "YulIdentifier", + "src": "33320:1:31" + }, + { + "name": "loopEnd", + "nativeSrc": "33323:7:31", + "nodeType": "YulIdentifier", + "src": "33323:7:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "33317:2:31", + "nodeType": "YulIdentifier", + "src": "33317:2:31" + }, + "nativeSrc": "33317:14:31", + "nodeType": "YulFunctionCall", + "src": "33317:14:31" + }, + "nativeSrc": "33309:251:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33332:21:31", + "nodeType": "YulBlock", + "src": "33332:21:31", + "statements": [ + { + "nativeSrc": "33334:17:31", + "nodeType": "YulAssignment", + "src": "33334:17:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "33343:1:31", + "nodeType": "YulIdentifier", + "src": "33343:1:31" + }, + { + "kind": "number", + "nativeSrc": "33346:4:31", + "nodeType": "YulLiteral", + "src": "33346:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33339:3:31", + "nodeType": "YulIdentifier", + "src": "33339:3:31" + }, + "nativeSrc": "33339:12:31", + "nodeType": "YulFunctionCall", + "src": "33339:12:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "33334:1:31", + "nodeType": "YulIdentifier", + "src": "33334:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "33313:3:31", + "nodeType": "YulBlock", + "src": "33313:3:31", + "statements": [] + }, + "src": "33309:251:31" + }, + { + "body": { + "nativeSrc": "33608:168:31", + "nodeType": "YulBlock", + "src": "33608:168:31", + "statements": [ + { + "nativeSrc": "33626:45:31", + "nodeType": "YulVariableDeclaration", + "src": "33626:45:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "33653:5:31", + "nodeType": "YulIdentifier", + "src": "33653:5:31" + }, + { + "name": "srcOffset", + "nativeSrc": "33660:9:31", + "nodeType": "YulIdentifier", + "src": "33660:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33649:3:31", + "nodeType": "YulIdentifier", + "src": "33649:3:31" + }, + "nativeSrc": "33649:21:31", + "nodeType": "YulFunctionCall", + "src": "33649:21:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33643:5:31", + "nodeType": "YulIdentifier", + "src": "33643:5:31" + }, + "nativeSrc": "33643:28:31", + "nodeType": "YulFunctionCall", + "src": "33643:28:31" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "33630:9:31", + "nodeType": "YulTypedName", + "src": "33630:9:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "33695:6:31", + "nodeType": "YulIdentifier", + "src": "33695:6:31" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "33707:9:31", + "nodeType": "YulIdentifier", + "src": "33707:9:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33734:1:31", + "nodeType": "YulLiteral", + "src": "33734:1:31", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "33737:6:31", + "nodeType": "YulIdentifier", + "src": "33737:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33730:3:31", + "nodeType": "YulIdentifier", + "src": "33730:3:31" + }, + "nativeSrc": "33730:14:31", + "nodeType": "YulFunctionCall", + "src": "33730:14:31" + }, + { + "kind": "number", + "nativeSrc": "33746:3:31", + "nodeType": "YulLiteral", + "src": "33746:3:31", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33726:3:31", + "nodeType": "YulIdentifier", + "src": "33726:3:31" + }, + "nativeSrc": "33726:24:31", + "nodeType": "YulFunctionCall", + "src": "33726:24:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33756:1:31", + "nodeType": "YulLiteral", + "src": "33756:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33752:3:31", + "nodeType": "YulIdentifier", + "src": "33752:3:31" + }, + "nativeSrc": "33752:6:31", + "nodeType": "YulFunctionCall", + "src": "33752:6:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33722:3:31", + "nodeType": "YulIdentifier", + "src": "33722:3:31" + }, + "nativeSrc": "33722:37:31", + "nodeType": "YulFunctionCall", + "src": "33722:37:31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33718:3:31", + "nodeType": "YulIdentifier", + "src": "33718:3:31" + }, + "nativeSrc": "33718:42:31", + "nodeType": "YulFunctionCall", + "src": "33718:42:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33703:3:31", + "nodeType": "YulIdentifier", + "src": "33703:3:31" + }, + "nativeSrc": "33703:58:31", + "nodeType": "YulFunctionCall", + "src": "33703:58:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33688:6:31", + "nodeType": "YulIdentifier", + "src": "33688:6:31" + }, + "nativeSrc": "33688:74:31", + "nodeType": "YulFunctionCall", + "src": "33688:74:31" + }, + "nativeSrc": "33688:74:31", + "nodeType": "YulExpressionStatement", + "src": "33688:74:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "33579:7:31", + "nodeType": "YulIdentifier", + "src": "33579:7:31" + }, + { + "name": "newLen", + "nativeSrc": "33588:6:31", + "nodeType": "YulIdentifier", + "src": "33588:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "33576:2:31", + "nodeType": "YulIdentifier", + "src": "33576:2:31" + }, + "nativeSrc": "33576:19:31", + "nodeType": "YulFunctionCall", + "src": "33576:19:31" + }, + "nativeSrc": "33573:203:31", + "nodeType": "YulIf", + "src": "33573:203:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33796:4:31", + "nodeType": "YulIdentifier", + "src": "33796:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33810:1:31", + "nodeType": "YulLiteral", + "src": "33810:1:31", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "33813:6:31", + "nodeType": "YulIdentifier", + "src": "33813:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33806:3:31", + "nodeType": "YulIdentifier", + "src": "33806:3:31" + }, + "nativeSrc": "33806:14:31", + "nodeType": "YulFunctionCall", + "src": "33806:14:31" + }, + { + "kind": "number", + "nativeSrc": "33822:1:31", + "nodeType": "YulLiteral", + "src": "33822:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33802:3:31", + "nodeType": "YulIdentifier", + "src": "33802:3:31" + }, + "nativeSrc": "33802:22:31", + "nodeType": "YulFunctionCall", + "src": "33802:22:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33789:6:31", + "nodeType": "YulIdentifier", + "src": "33789:6:31" + }, + "nativeSrc": "33789:36:31", + "nodeType": "YulFunctionCall", + "src": "33789:36:31" + }, + "nativeSrc": "33789:36:31", + "nodeType": "YulExpressionStatement", + "src": "33789:36:31" + } + ] + }, + "nativeSrc": "33087:748:31", + "nodeType": "YulCase", + "src": "33087:748:31", + "value": { + "kind": "number", + "nativeSrc": "33092:1:31", + "nodeType": "YulLiteral", + "src": "33092:1:31", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "33852:234:31", + "nodeType": "YulBlock", + "src": "33852:234:31", + "statements": [ + { + "nativeSrc": "33866:14:31", + "nodeType": "YulVariableDeclaration", + "src": "33866:14:31", + "value": { + "kind": "number", + "nativeSrc": "33879:1:31", + "nodeType": "YulLiteral", + "src": "33879:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "33870:5:31", + "nodeType": "YulTypedName", + "src": "33870:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33915:67:31", + "nodeType": "YulBlock", + "src": "33915:67:31", + "statements": [ + { + "nativeSrc": "33933:35:31", + "nodeType": "YulAssignment", + "src": "33933:35:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "33952:3:31", + "nodeType": "YulIdentifier", + "src": "33952:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "33957:9:31", + "nodeType": "YulIdentifier", + "src": "33957:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33948:3:31", + "nodeType": "YulIdentifier", + "src": "33948:3:31" + }, + "nativeSrc": "33948:19:31", + "nodeType": "YulFunctionCall", + "src": "33948:19:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33942:5:31", + "nodeType": "YulIdentifier", + "src": "33942:5:31" + }, + "nativeSrc": "33942:26:31", + "nodeType": "YulFunctionCall", + "src": "33942:26:31" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "33933:5:31", + "nodeType": "YulIdentifier", + "src": "33933:5:31" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "33896:6:31", + "nodeType": "YulIdentifier", + "src": "33896:6:31" + }, + "nativeSrc": "33893:89:31", + "nodeType": "YulIf", + "src": "33893:89:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34002:4:31", + "nodeType": "YulIdentifier", + "src": "34002:4:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "34061:5:31", + "nodeType": "YulIdentifier", + "src": "34061:5:31" + }, + { + "name": "newLen", + "nativeSrc": "34068:6:31", + "nodeType": "YulIdentifier", + "src": "34068:6:31" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "34008:52:31", + "nodeType": "YulIdentifier", + "src": "34008:52:31" + }, + "nativeSrc": "34008:67:31", + "nodeType": "YulFunctionCall", + "src": "34008:67:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33995:6:31", + "nodeType": "YulIdentifier", + "src": "33995:6:31" + }, + "nativeSrc": "33995:81:31", + "nodeType": "YulFunctionCall", + "src": "33995:81:31" + }, + "nativeSrc": "33995:81:31", + "nodeType": "YulExpressionStatement", + "src": "33995:81:31" + } + ] + }, + "nativeSrc": "33844:242:31", + "nodeType": "YulCase", + "src": "33844:242:31", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "33067:6:31", + "nodeType": "YulIdentifier", + "src": "33067:6:31" + }, + { + "kind": "number", + "nativeSrc": "33075:2:31", + "nodeType": "YulLiteral", + "src": "33075:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33064:2:31", + "nodeType": "YulIdentifier", + "src": "33064:2:31" + }, + "nativeSrc": "33064:14:31", + "nodeType": "YulFunctionCall", + "src": "33064:14:31" + }, + "nativeSrc": "33057:1029:31", + "nodeType": "YulSwitch", + "src": "33057:1029:31" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage", + "nativeSrc": "32657:1435:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "32739:4:31", + "nodeType": "YulTypedName", + "src": "32739:4:31", + "type": "" + }, + { + "name": "src", + "nativeSrc": "32745:3:31", + "nodeType": "YulTypedName", + "src": "32745:3:31", + "type": "" + } + ], + "src": "32657:1435:31" + }, + { + "body": { + "nativeSrc": "34129:95:31", + "nodeType": "YulBlock", + "src": "34129:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34146:1:31", + "nodeType": "YulLiteral", + "src": "34146:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34153:3:31", + "nodeType": "YulLiteral", + "src": "34153:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "34158:10:31", + "nodeType": "YulLiteral", + "src": "34158:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34149:3:31", + "nodeType": "YulIdentifier", + "src": "34149:3:31" + }, + "nativeSrc": "34149:20:31", + "nodeType": "YulFunctionCall", + "src": "34149:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34139:6:31", + "nodeType": "YulIdentifier", + "src": "34139:6:31" + }, + "nativeSrc": "34139:31:31", + "nodeType": "YulFunctionCall", + "src": "34139:31:31" + }, + "nativeSrc": "34139:31:31", + "nodeType": "YulExpressionStatement", + "src": "34139:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34186:1:31", + "nodeType": "YulLiteral", + "src": "34186:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "34189:4:31", + "nodeType": "YulLiteral", + "src": "34189:4:31", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34179:6:31", + "nodeType": "YulIdentifier", + "src": "34179:6:31" + }, + "nativeSrc": "34179:15:31", + "nodeType": "YulFunctionCall", + "src": "34179:15:31" + }, + "nativeSrc": "34179:15:31", + "nodeType": "YulExpressionStatement", + "src": "34179:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34210:1:31", + "nodeType": "YulLiteral", + "src": "34210:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "34213:4:31", + "nodeType": "YulLiteral", + "src": "34213:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "34203:6:31", + "nodeType": "YulIdentifier", + "src": "34203:6:31" + }, + "nativeSrc": "34203:15:31", + "nodeType": "YulFunctionCall", + "src": "34203:15:31" + }, + "nativeSrc": "34203:15:31", + "nodeType": "YulExpressionStatement", + "src": "34203:15:31" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "34097:127:31", + "nodeType": "YulFunctionDefinition", + "src": "34097:127:31" + }, + { + "body": { + "nativeSrc": "34352:135:31", + "nodeType": "YulBlock", + "src": "34352:135:31", + "statements": [ + { + "nativeSrc": "34362:26:31", + "nodeType": "YulAssignment", + "src": "34362:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "34374:9:31", + "nodeType": "YulIdentifier", + "src": "34374:9:31" + }, + { + "kind": "number", + "nativeSrc": "34385:2:31", + "nodeType": "YulLiteral", + "src": "34385:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34370:3:31", + "nodeType": "YulIdentifier", + "src": "34370:3:31" + }, + "nativeSrc": "34370:18:31", + "nodeType": "YulFunctionCall", + "src": "34370:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "34362:4:31", + "nodeType": "YulIdentifier", + "src": "34362:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "34404:9:31", + "nodeType": "YulIdentifier", + "src": "34404:9:31" + }, + { + "name": "value0", + "nativeSrc": "34415:6:31", + "nodeType": "YulIdentifier", + "src": "34415:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34397:6:31", + "nodeType": "YulIdentifier", + "src": "34397:6:31" + }, + "nativeSrc": "34397:25:31", + "nodeType": "YulFunctionCall", + "src": "34397:25:31" + }, + "nativeSrc": "34397:25:31", + "nodeType": "YulExpressionStatement", + "src": "34397:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "34442:9:31", + "nodeType": "YulIdentifier", + "src": "34442:9:31" + }, + { + "kind": "number", + "nativeSrc": "34453:2:31", + "nodeType": "YulLiteral", + "src": "34453:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34438:3:31", + "nodeType": "YulIdentifier", + "src": "34438:3:31" + }, + "nativeSrc": "34438:18:31", + "nodeType": "YulFunctionCall", + "src": "34438:18:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "34472:6:31", + "nodeType": "YulIdentifier", + "src": "34472:6:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34465:6:31", + "nodeType": "YulIdentifier", + "src": "34465:6:31" + }, + "nativeSrc": "34465:14:31", + "nodeType": "YulFunctionCall", + "src": "34465:14:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34458:6:31", + "nodeType": "YulIdentifier", + "src": "34458:6:31" + }, + "nativeSrc": "34458:22:31", + "nodeType": "YulFunctionCall", + "src": "34458:22:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34431:6:31", + "nodeType": "YulIdentifier", + "src": "34431:6:31" + }, + "nativeSrc": "34431:50:31", + "nodeType": "YulFunctionCall", + "src": "34431:50:31" + }, + "nativeSrc": "34431:50:31", + "nodeType": "YulExpressionStatement", + "src": "34431:50:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed", + "nativeSrc": "34229:258:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "34313:9:31", + "nodeType": "YulTypedName", + "src": "34313:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "34324:6:31", + "nodeType": "YulTypedName", + "src": "34324:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "34332:6:31", + "nodeType": "YulTypedName", + "src": "34332:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "34343:4:31", + "nodeType": "YulTypedName", + "src": "34343:4:31", + "type": "" + } + ], + "src": "34229:258:31" + }, + { + "body": { + "nativeSrc": "34586:1249:31", + "nodeType": "YulBlock", + "src": "34586:1249:31", + "statements": [ + { + "nativeSrc": "34596:24:31", + "nodeType": "YulVariableDeclaration", + "src": "34596:24:31", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "34616:3:31", + "nodeType": "YulIdentifier", + "src": "34616:3:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34610:5:31", + "nodeType": "YulIdentifier", + "src": "34610:5:31" + }, + "nativeSrc": "34610:10:31", + "nodeType": "YulFunctionCall", + "src": "34610:10:31" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "34600:6:31", + "nodeType": "YulTypedName", + "src": "34600:6:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34663:22:31", + "nodeType": "YulBlock", + "src": "34663:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "34665:16:31", + "nodeType": "YulIdentifier", + "src": "34665:16:31" + }, + "nativeSrc": "34665:18:31", + "nodeType": "YulFunctionCall", + "src": "34665:18:31" + }, + "nativeSrc": "34665:18:31", + "nodeType": "YulExpressionStatement", + "src": "34665:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34635:6:31", + "nodeType": "YulIdentifier", + "src": "34635:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34651:2:31", + "nodeType": "YulLiteral", + "src": "34651:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "34655:1:31", + "nodeType": "YulLiteral", + "src": "34655:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34647:3:31", + "nodeType": "YulIdentifier", + "src": "34647:3:31" + }, + "nativeSrc": "34647:10:31", + "nodeType": "YulFunctionCall", + "src": "34647:10:31" + }, + { + "kind": "number", + "nativeSrc": "34659:1:31", + "nodeType": "YulLiteral", + "src": "34659:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "34643:3:31", + "nodeType": "YulIdentifier", + "src": "34643:3:31" + }, + "nativeSrc": "34643:18:31", + "nodeType": "YulFunctionCall", + "src": "34643:18:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "34632:2:31", + "nodeType": "YulIdentifier", + "src": "34632:2:31" + }, + "nativeSrc": "34632:30:31", + "nodeType": "YulFunctionCall", + "src": "34632:30:31" + }, + "nativeSrc": "34629:56:31", + "nodeType": "YulIf", + "src": "34629:56:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34738:4:31", + "nodeType": "YulIdentifier", + "src": "34738:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34776:4:31", + "nodeType": "YulIdentifier", + "src": "34776:4:31" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "34770:5:31", + "nodeType": "YulIdentifier", + "src": "34770:5:31" + }, + "nativeSrc": "34770:11:31", + "nodeType": "YulFunctionCall", + "src": "34770:11:31" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "34744:25:31", + "nodeType": "YulIdentifier", + "src": "34744:25:31" + }, + "nativeSrc": "34744:38:31", + "nodeType": "YulFunctionCall", + "src": "34744:38:31" + }, + { + "name": "newLen", + "nativeSrc": "34784:6:31", + "nodeType": "YulIdentifier", + "src": "34784:6:31" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "34694:43:31", + "nodeType": "YulIdentifier", + "src": "34694:43:31" + }, + "nativeSrc": "34694:97:31", + "nodeType": "YulFunctionCall", + "src": "34694:97:31" + }, + "nativeSrc": "34694:97:31", + "nodeType": "YulExpressionStatement", + "src": "34694:97:31" + }, + { + "nativeSrc": "34800:18:31", + "nodeType": "YulVariableDeclaration", + "src": "34800:18:31", + "value": { + "kind": "number", + "nativeSrc": "34817:1:31", + "nodeType": "YulLiteral", + "src": "34817:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "34804:9:31", + "nodeType": "YulTypedName", + "src": "34804:9:31", + "type": "" + } + ] + }, + { + "nativeSrc": "34827:23:31", + "nodeType": "YulVariableDeclaration", + "src": "34827:23:31", + "value": { + "kind": "number", + "nativeSrc": "34846:4:31", + "nodeType": "YulLiteral", + "src": "34846:4:31", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "34831:11:31", + "nodeType": "YulTypedName", + "src": "34831:11:31", + "type": "" + } + ] + }, + { + "nativeSrc": "34859:17:31", + "nodeType": "YulAssignment", + "src": "34859:17:31", + "value": { + "kind": "number", + "nativeSrc": "34872:4:31", + "nodeType": "YulLiteral", + "src": "34872:4:31", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "34859:9:31", + "nodeType": "YulIdentifier", + "src": "34859:9:31" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "34922:656:31", + "nodeType": "YulBlock", + "src": "34922:656:31", + "statements": [ + { + "nativeSrc": "34936:35:31", + "nodeType": "YulVariableDeclaration", + "src": "34936:35:31", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34955:6:31", + "nodeType": "YulIdentifier", + "src": "34955:6:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34967:2:31", + "nodeType": "YulLiteral", + "src": "34967:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34963:3:31", + "nodeType": "YulIdentifier", + "src": "34963:3:31" + }, + "nativeSrc": "34963:7:31", + "nodeType": "YulFunctionCall", + "src": "34963:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34951:3:31", + "nodeType": "YulIdentifier", + "src": "34951:3:31" + }, + "nativeSrc": "34951:20:31", + "nodeType": "YulFunctionCall", + "src": "34951:20:31" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "34940:7:31", + "nodeType": "YulTypedName", + "src": "34940:7:31", + "type": "" + } + ] + }, + { + "nativeSrc": "34984:49:31", + "nodeType": "YulVariableDeclaration", + "src": "34984:49:31", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35028:4:31", + "nodeType": "YulIdentifier", + "src": "35028:4:31" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "34998:29:31", + "nodeType": "YulIdentifier", + "src": "34998:29:31" + }, + "nativeSrc": "34998:35:31", + "nodeType": "YulFunctionCall", + "src": "34998:35:31" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "34988:6:31", + "nodeType": "YulTypedName", + "src": "34988:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "35046:10:31", + "nodeType": "YulVariableDeclaration", + "src": "35046:10:31", + "value": { + "kind": "number", + "nativeSrc": "35055:1:31", + "nodeType": "YulLiteral", + "src": "35055:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "35050:1:31", + "nodeType": "YulTypedName", + "src": "35050:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35133:172:31", + "nodeType": "YulBlock", + "src": "35133:172:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "35158:6:31", + "nodeType": "YulIdentifier", + "src": "35158:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "35176:3:31", + "nodeType": "YulIdentifier", + "src": "35176:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "35181:9:31", + "nodeType": "YulIdentifier", + "src": "35181:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35172:3:31", + "nodeType": "YulIdentifier", + "src": "35172:3:31" + }, + "nativeSrc": "35172:19:31", + "nodeType": "YulFunctionCall", + "src": "35172:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35166:5:31", + "nodeType": "YulIdentifier", + "src": "35166:5:31" + }, + "nativeSrc": "35166:26:31", + "nodeType": "YulFunctionCall", + "src": "35166:26:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "35151:6:31", + "nodeType": "YulIdentifier", + "src": "35151:6:31" + }, + "nativeSrc": "35151:42:31", + "nodeType": "YulFunctionCall", + "src": "35151:42:31" + }, + "nativeSrc": "35151:42:31", + "nodeType": "YulExpressionStatement", + "src": "35151:42:31" + }, + { + "nativeSrc": "35210:24:31", + "nodeType": "YulAssignment", + "src": "35210:24:31", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "35224:6:31", + "nodeType": "YulIdentifier", + "src": "35224:6:31" + }, + { + "kind": "number", + "nativeSrc": "35232:1:31", + "nodeType": "YulLiteral", + "src": "35232:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35220:3:31", + "nodeType": "YulIdentifier", + "src": "35220:3:31" + }, + "nativeSrc": "35220:14:31", + "nodeType": "YulFunctionCall", + "src": "35220:14:31" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "35210:6:31", + "nodeType": "YulIdentifier", + "src": "35210:6:31" + } + ] + }, + { + "nativeSrc": "35251:40:31", + "nodeType": "YulAssignment", + "src": "35251:40:31", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "35268:9:31", + "nodeType": "YulIdentifier", + "src": "35268:9:31" + }, + { + "name": "srcOffset_1", + "nativeSrc": "35279:11:31", + "nodeType": "YulIdentifier", + "src": "35279:11:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35264:3:31", + "nodeType": "YulIdentifier", + "src": "35264:3:31" + }, + "nativeSrc": "35264:27:31", + "nodeType": "YulFunctionCall", + "src": "35264:27:31" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "35251:9:31", + "nodeType": "YulIdentifier", + "src": "35251:9:31" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35080:1:31", + "nodeType": "YulIdentifier", + "src": "35080:1:31" + }, + { + "name": "loopEnd", + "nativeSrc": "35083:7:31", + "nodeType": "YulIdentifier", + "src": "35083:7:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35077:2:31", + "nodeType": "YulIdentifier", + "src": "35077:2:31" + }, + "nativeSrc": "35077:14:31", + "nodeType": "YulFunctionCall", + "src": "35077:14:31" + }, + "nativeSrc": "35069:236:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35092:28:31", + "nodeType": "YulBlock", + "src": "35092:28:31", + "statements": [ + { + "nativeSrc": "35094:24:31", + "nodeType": "YulAssignment", + "src": "35094:24:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35103:1:31", + "nodeType": "YulIdentifier", + "src": "35103:1:31" + }, + { + "name": "srcOffset_1", + "nativeSrc": "35106:11:31", + "nodeType": "YulIdentifier", + "src": "35106:11:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35099:3:31", + "nodeType": "YulIdentifier", + "src": "35099:3:31" + }, + "nativeSrc": "35099:19:31", + "nodeType": "YulFunctionCall", + "src": "35099:19:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "35094:1:31", + "nodeType": "YulIdentifier", + "src": "35094:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35073:3:31", + "nodeType": "YulBlock", + "src": "35073:3:31", + "statements": [] + }, + "src": "35069:236:31" + }, + { + "body": { + "nativeSrc": "35353:166:31", + "nodeType": "YulBlock", + "src": "35353:166:31", + "statements": [ + { + "nativeSrc": "35371:43:31", + "nodeType": "YulVariableDeclaration", + "src": "35371:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "35398:3:31", + "nodeType": "YulIdentifier", + "src": "35398:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "35403:9:31", + "nodeType": "YulIdentifier", + "src": "35403:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35394:3:31", + "nodeType": "YulIdentifier", + "src": "35394:3:31" + }, + "nativeSrc": "35394:19:31", + "nodeType": "YulFunctionCall", + "src": "35394:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35388:5:31", + "nodeType": "YulIdentifier", + "src": "35388:5:31" + }, + "nativeSrc": "35388:26:31", + "nodeType": "YulFunctionCall", + "src": "35388:26:31" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "35375:9:31", + "nodeType": "YulTypedName", + "src": "35375:9:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "35438:6:31", + "nodeType": "YulIdentifier", + "src": "35438:6:31" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "35450:9:31", + "nodeType": "YulIdentifier", + "src": "35450:9:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35477:1:31", + "nodeType": "YulLiteral", + "src": "35477:1:31", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "35480:6:31", + "nodeType": "YulIdentifier", + "src": "35480:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35473:3:31", + "nodeType": "YulIdentifier", + "src": "35473:3:31" + }, + "nativeSrc": "35473:14:31", + "nodeType": "YulFunctionCall", + "src": "35473:14:31" + }, + { + "kind": "number", + "nativeSrc": "35489:3:31", + "nodeType": "YulLiteral", + "src": "35489:3:31", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35469:3:31", + "nodeType": "YulIdentifier", + "src": "35469:3:31" + }, + "nativeSrc": "35469:24:31", + "nodeType": "YulFunctionCall", + "src": "35469:24:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35499:1:31", + "nodeType": "YulLiteral", + "src": "35499:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "35495:3:31", + "nodeType": "YulIdentifier", + "src": "35495:3:31" + }, + "nativeSrc": "35495:6:31", + "nodeType": "YulFunctionCall", + "src": "35495:6:31" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "35465:3:31", + "nodeType": "YulIdentifier", + "src": "35465:3:31" + }, + "nativeSrc": "35465:37:31", + "nodeType": "YulFunctionCall", + "src": "35465:37:31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "35461:3:31", + "nodeType": "YulIdentifier", + "src": "35461:3:31" + }, + "nativeSrc": "35461:42:31", + "nodeType": "YulFunctionCall", + "src": "35461:42:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35446:3:31", + "nodeType": "YulIdentifier", + "src": "35446:3:31" + }, + "nativeSrc": "35446:58:31", + "nodeType": "YulFunctionCall", + "src": "35446:58:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "35431:6:31", + "nodeType": "YulIdentifier", + "src": "35431:6:31" + }, + "nativeSrc": "35431:74:31", + "nodeType": "YulFunctionCall", + "src": "35431:74:31" + }, + "nativeSrc": "35431:74:31", + "nodeType": "YulExpressionStatement", + "src": "35431:74:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "35324:7:31", + "nodeType": "YulIdentifier", + "src": "35324:7:31" + }, + { + "name": "newLen", + "nativeSrc": "35333:6:31", + "nodeType": "YulIdentifier", + "src": "35333:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35321:2:31", + "nodeType": "YulIdentifier", + "src": "35321:2:31" + }, + "nativeSrc": "35321:19:31", + "nodeType": "YulFunctionCall", + "src": "35321:19:31" + }, + "nativeSrc": "35318:201:31", + "nodeType": "YulIf", + "src": "35318:201:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35539:4:31", + "nodeType": "YulIdentifier", + "src": "35539:4:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35553:1:31", + "nodeType": "YulLiteral", + "src": "35553:1:31", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "35556:6:31", + "nodeType": "YulIdentifier", + "src": "35556:6:31" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35549:3:31", + "nodeType": "YulIdentifier", + "src": "35549:3:31" + }, + "nativeSrc": "35549:14:31", + "nodeType": "YulFunctionCall", + "src": "35549:14:31" + }, + { + "kind": "number", + "nativeSrc": "35565:1:31", + "nodeType": "YulLiteral", + "src": "35565:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35545:3:31", + "nodeType": "YulIdentifier", + "src": "35545:3:31" + }, + "nativeSrc": "35545:22:31", + "nodeType": "YulFunctionCall", + "src": "35545:22:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "35532:6:31", + "nodeType": "YulIdentifier", + "src": "35532:6:31" + }, + "nativeSrc": "35532:36:31", + "nodeType": "YulFunctionCall", + "src": "35532:36:31" + }, + "nativeSrc": "35532:36:31", + "nodeType": "YulExpressionStatement", + "src": "35532:36:31" + } + ] + }, + "nativeSrc": "34915:663:31", + "nodeType": "YulCase", + "src": "34915:663:31", + "value": { + "kind": "number", + "nativeSrc": "34920:1:31", + "nodeType": "YulLiteral", + "src": "34920:1:31", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "35595:234:31", + "nodeType": "YulBlock", + "src": "35595:234:31", + "statements": [ + { + "nativeSrc": "35609:14:31", + "nodeType": "YulVariableDeclaration", + "src": "35609:14:31", + "value": { + "kind": "number", + "nativeSrc": "35622:1:31", + "nodeType": "YulLiteral", + "src": "35622:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "35613:5:31", + "nodeType": "YulTypedName", + "src": "35613:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35658:67:31", + "nodeType": "YulBlock", + "src": "35658:67:31", + "statements": [ + { + "nativeSrc": "35676:35:31", + "nodeType": "YulAssignment", + "src": "35676:35:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "35695:3:31", + "nodeType": "YulIdentifier", + "src": "35695:3:31" + }, + { + "name": "srcOffset", + "nativeSrc": "35700:9:31", + "nodeType": "YulIdentifier", + "src": "35700:9:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35691:3:31", + "nodeType": "YulIdentifier", + "src": "35691:3:31" + }, + "nativeSrc": "35691:19:31", + "nodeType": "YulFunctionCall", + "src": "35691:19:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35685:5:31", + "nodeType": "YulIdentifier", + "src": "35685:5:31" + }, + "nativeSrc": "35685:26:31", + "nodeType": "YulFunctionCall", + "src": "35685:26:31" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "35676:5:31", + "nodeType": "YulIdentifier", + "src": "35676:5:31" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "35639:6:31", + "nodeType": "YulIdentifier", + "src": "35639:6:31" + }, + "nativeSrc": "35636:89:31", + "nodeType": "YulIf", + "src": "35636:89:31" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35745:4:31", + "nodeType": "YulIdentifier", + "src": "35745:4:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "35804:5:31", + "nodeType": "YulIdentifier", + "src": "35804:5:31" + }, + { + "name": "newLen", + "nativeSrc": "35811:6:31", + "nodeType": "YulIdentifier", + "src": "35811:6:31" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "35751:52:31", + "nodeType": "YulIdentifier", + "src": "35751:52:31" + }, + "nativeSrc": "35751:67:31", + "nodeType": "YulFunctionCall", + "src": "35751:67:31" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "35738:6:31", + "nodeType": "YulIdentifier", + "src": "35738:6:31" + }, + "nativeSrc": "35738:81:31", + "nodeType": "YulFunctionCall", + "src": "35738:81:31" + }, + "nativeSrc": "35738:81:31", + "nodeType": "YulExpressionStatement", + "src": "35738:81:31" + } + ] + }, + "nativeSrc": "35587:242:31", + "nodeType": "YulCase", + "src": "35587:242:31", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "34895:6:31", + "nodeType": "YulIdentifier", + "src": "34895:6:31" + }, + { + "kind": "number", + "nativeSrc": "34903:2:31", + "nodeType": "YulLiteral", + "src": "34903:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "34892:2:31", + "nodeType": "YulIdentifier", + "src": "34892:2:31" + }, + "nativeSrc": "34892:14:31", + "nodeType": "YulFunctionCall", + "src": "34892:14:31" + }, + "nativeSrc": "34885:944:31", + "nodeType": "YulSwitch", + "src": "34885:944:31" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nativeSrc": "34492:1343:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "34571:4:31", + "nodeType": "YulTypedName", + "src": "34571:4:31", + "type": "" + }, + { + "name": "src", + "nativeSrc": "34577:3:31", + "nodeType": "YulTypedName", + "src": "34577:3:31", + "type": "" + } + ], + "src": "34492:1343:31" + }, + { + "body": { + "nativeSrc": "35969:145:31", + "nodeType": "YulBlock", + "src": "35969:145:31", + "statements": [ + { + "nativeSrc": "35979:26:31", + "nodeType": "YulAssignment", + "src": "35979:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "35991:9:31", + "nodeType": "YulIdentifier", + "src": "35991:9:31" + }, + { + "kind": "number", + "nativeSrc": "36002:2:31", + "nodeType": "YulLiteral", + "src": "36002:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35987:3:31", + "nodeType": "YulIdentifier", + "src": "35987:3:31" + }, + "nativeSrc": "35987:18:31", + "nodeType": "YulFunctionCall", + "src": "35987:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "35979:4:31", + "nodeType": "YulIdentifier", + "src": "35979:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36021:9:31", + "nodeType": "YulIdentifier", + "src": "36021:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "36036:6:31", + "nodeType": "YulIdentifier", + "src": "36036:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36052:3:31", + "nodeType": "YulLiteral", + "src": "36052:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "36057:1:31", + "nodeType": "YulLiteral", + "src": "36057:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36048:3:31", + "nodeType": "YulIdentifier", + "src": "36048:3:31" + }, + "nativeSrc": "36048:11:31", + "nodeType": "YulFunctionCall", + "src": "36048:11:31" + }, + { + "kind": "number", + "nativeSrc": "36061:1:31", + "nodeType": "YulLiteral", + "src": "36061:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36044:3:31", + "nodeType": "YulIdentifier", + "src": "36044:3:31" + }, + "nativeSrc": "36044:19:31", + "nodeType": "YulFunctionCall", + "src": "36044:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36032:3:31", + "nodeType": "YulIdentifier", + "src": "36032:3:31" + }, + "nativeSrc": "36032:32:31", + "nodeType": "YulFunctionCall", + "src": "36032:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36014:6:31", + "nodeType": "YulIdentifier", + "src": "36014:6:31" + }, + "nativeSrc": "36014:51:31", + "nodeType": "YulFunctionCall", + "src": "36014:51:31" + }, + "nativeSrc": "36014:51:31", + "nodeType": "YulExpressionStatement", + "src": "36014:51:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36085:9:31", + "nodeType": "YulIdentifier", + "src": "36085:9:31" + }, + { + "kind": "number", + "nativeSrc": "36096:2:31", + "nodeType": "YulLiteral", + "src": "36096:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36081:3:31", + "nodeType": "YulIdentifier", + "src": "36081:3:31" + }, + "nativeSrc": "36081:18:31", + "nodeType": "YulFunctionCall", + "src": "36081:18:31" + }, + { + "name": "value1", + "nativeSrc": "36101:6:31", + "nodeType": "YulIdentifier", + "src": "36101:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36074:6:31", + "nodeType": "YulIdentifier", + "src": "36074:6:31" + }, + "nativeSrc": "36074:34:31", + "nodeType": "YulFunctionCall", + "src": "36074:34:31" + }, + "nativeSrc": "36074:34:31", + "nodeType": "YulExpressionStatement", + "src": "36074:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "35840:274:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "35930:9:31", + "nodeType": "YulTypedName", + "src": "35930:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "35941:6:31", + "nodeType": "YulTypedName", + "src": "35941:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "35949:6:31", + "nodeType": "YulTypedName", + "src": "35949:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "35960:4:31", + "nodeType": "YulTypedName", + "src": "35960:4:31", + "type": "" + } + ], + "src": "35840:274:31" + }, + { + "body": { + "nativeSrc": "36151:95:31", + "nodeType": "YulBlock", + "src": "36151:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36168:1:31", + "nodeType": "YulLiteral", + "src": "36168:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36175:3:31", + "nodeType": "YulLiteral", + "src": "36175:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "36180:10:31", + "nodeType": "YulLiteral", + "src": "36180:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36171:3:31", + "nodeType": "YulIdentifier", + "src": "36171:3:31" + }, + "nativeSrc": "36171:20:31", + "nodeType": "YulFunctionCall", + "src": "36171:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36161:6:31", + "nodeType": "YulIdentifier", + "src": "36161:6:31" + }, + "nativeSrc": "36161:31:31", + "nodeType": "YulFunctionCall", + "src": "36161:31:31" + }, + "nativeSrc": "36161:31:31", + "nodeType": "YulExpressionStatement", + "src": "36161:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36208:1:31", + "nodeType": "YulLiteral", + "src": "36208:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "36211:4:31", + "nodeType": "YulLiteral", + "src": "36211:4:31", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36201:6:31", + "nodeType": "YulIdentifier", + "src": "36201:6:31" + }, + "nativeSrc": "36201:15:31", + "nodeType": "YulFunctionCall", + "src": "36201:15:31" + }, + "nativeSrc": "36201:15:31", + "nodeType": "YulExpressionStatement", + "src": "36201:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36232:1:31", + "nodeType": "YulLiteral", + "src": "36232:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "36235:4:31", + "nodeType": "YulLiteral", + "src": "36235:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "36225:6:31", + "nodeType": "YulIdentifier", + "src": "36225:6:31" + }, + "nativeSrc": "36225:15:31", + "nodeType": "YulFunctionCall", + "src": "36225:15:31" + }, + "nativeSrc": "36225:15:31", + "nodeType": "YulExpressionStatement", + "src": "36225:15:31" + } + ] + }, + "name": "panic_error_0x21", + "nativeSrc": "36119:127:31", + "nodeType": "YulFunctionDefinition", + "src": "36119:127:31" + }, + { + "body": { + "nativeSrc": "36388:150:31", + "nodeType": "YulBlock", + "src": "36388:150:31", + "statements": [ + { + "nativeSrc": "36398:27:31", + "nodeType": "YulVariableDeclaration", + "src": "36398:27:31", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "36418:6:31", + "nodeType": "YulIdentifier", + "src": "36418:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36412:5:31", + "nodeType": "YulIdentifier", + "src": "36412:5:31" + }, + "nativeSrc": "36412:13:31", + "nodeType": "YulFunctionCall", + "src": "36412:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "36402:6:31", + "nodeType": "YulTypedName", + "src": "36402:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "36473:6:31", + "nodeType": "YulIdentifier", + "src": "36473:6:31" + }, + { + "kind": "number", + "nativeSrc": "36481:4:31", + "nodeType": "YulLiteral", + "src": "36481:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36469:3:31", + "nodeType": "YulIdentifier", + "src": "36469:3:31" + }, + "nativeSrc": "36469:17:31", + "nodeType": "YulFunctionCall", + "src": "36469:17:31" + }, + { + "name": "pos", + "nativeSrc": "36488:3:31", + "nodeType": "YulIdentifier", + "src": "36488:3:31" + }, + { + "name": "length", + "nativeSrc": "36493:6:31", + "nodeType": "YulIdentifier", + "src": "36493:6:31" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "36434:34:31", + "nodeType": "YulIdentifier", + "src": "36434:34:31" + }, + "nativeSrc": "36434:66:31", + "nodeType": "YulFunctionCall", + "src": "36434:66:31" + }, + "nativeSrc": "36434:66:31", + "nodeType": "YulExpressionStatement", + "src": "36434:66:31" + }, + { + "nativeSrc": "36509:23:31", + "nodeType": "YulAssignment", + "src": "36509:23:31", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "36520:3:31", + "nodeType": "YulIdentifier", + "src": "36520:3:31" + }, + { + "name": "length", + "nativeSrc": "36525:6:31", + "nodeType": "YulIdentifier", + "src": "36525:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36516:3:31", + "nodeType": "YulIdentifier", + "src": "36516:3:31" + }, + "nativeSrc": "36516:16:31", + "nodeType": "YulFunctionCall", + "src": "36516:16:31" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "36509:3:31", + "nodeType": "YulIdentifier", + "src": "36509:3:31" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "36251:287:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "36364:3:31", + "nodeType": "YulTypedName", + "src": "36364:3:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "36369:6:31", + "nodeType": "YulTypedName", + "src": "36369:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "36380:3:31", + "nodeType": "YulTypedName", + "src": "36380:3:31", + "type": "" + } + ], + "src": "36251:287:31" + }, + { + "body": { + "nativeSrc": "36724:217:31", + "nodeType": "YulBlock", + "src": "36724:217:31", + "statements": [ + { + "nativeSrc": "36734:27:31", + "nodeType": "YulAssignment", + "src": "36734:27:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36746:9:31", + "nodeType": "YulIdentifier", + "src": "36746:9:31" + }, + { + "kind": "number", + "nativeSrc": "36757:3:31", + "nodeType": "YulLiteral", + "src": "36757:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36742:3:31", + "nodeType": "YulIdentifier", + "src": "36742:3:31" + }, + "nativeSrc": "36742:19:31", + "nodeType": "YulFunctionCall", + "src": "36742:19:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "36734:4:31", + "nodeType": "YulIdentifier", + "src": "36734:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36777:9:31", + "nodeType": "YulIdentifier", + "src": "36777:9:31" + }, + { + "name": "value0", + "nativeSrc": "36788:6:31", + "nodeType": "YulIdentifier", + "src": "36788:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36770:6:31", + "nodeType": "YulIdentifier", + "src": "36770:6:31" + }, + "nativeSrc": "36770:25:31", + "nodeType": "YulFunctionCall", + "src": "36770:25:31" + }, + "nativeSrc": "36770:25:31", + "nodeType": "YulExpressionStatement", + "src": "36770:25:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36815:9:31", + "nodeType": "YulIdentifier", + "src": "36815:9:31" + }, + { + "kind": "number", + "nativeSrc": "36826:2:31", + "nodeType": "YulLiteral", + "src": "36826:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36811:3:31", + "nodeType": "YulIdentifier", + "src": "36811:3:31" + }, + "nativeSrc": "36811:18:31", + "nodeType": "YulFunctionCall", + "src": "36811:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "36835:6:31", + "nodeType": "YulIdentifier", + "src": "36835:6:31" + }, + { + "kind": "number", + "nativeSrc": "36843:4:31", + "nodeType": "YulLiteral", + "src": "36843:4:31", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36831:3:31", + "nodeType": "YulIdentifier", + "src": "36831:3:31" + }, + "nativeSrc": "36831:17:31", + "nodeType": "YulFunctionCall", + "src": "36831:17:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36804:6:31", + "nodeType": "YulIdentifier", + "src": "36804:6:31" + }, + "nativeSrc": "36804:45:31", + "nodeType": "YulFunctionCall", + "src": "36804:45:31" + }, + "nativeSrc": "36804:45:31", + "nodeType": "YulExpressionStatement", + "src": "36804:45:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36869:9:31", + "nodeType": "YulIdentifier", + "src": "36869:9:31" + }, + { + "kind": "number", + "nativeSrc": "36880:2:31", + "nodeType": "YulLiteral", + "src": "36880:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36865:3:31", + "nodeType": "YulIdentifier", + "src": "36865:3:31" + }, + "nativeSrc": "36865:18:31", + "nodeType": "YulFunctionCall", + "src": "36865:18:31" + }, + { + "name": "value2", + "nativeSrc": "36885:6:31", + "nodeType": "YulIdentifier", + "src": "36885:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36858:6:31", + "nodeType": "YulIdentifier", + "src": "36858:6:31" + }, + "nativeSrc": "36858:34:31", + "nodeType": "YulFunctionCall", + "src": "36858:34:31" + }, + "nativeSrc": "36858:34:31", + "nodeType": "YulExpressionStatement", + "src": "36858:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "36912:9:31", + "nodeType": "YulIdentifier", + "src": "36912:9:31" + }, + { + "kind": "number", + "nativeSrc": "36923:2:31", + "nodeType": "YulLiteral", + "src": "36923:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36908:3:31", + "nodeType": "YulIdentifier", + "src": "36908:3:31" + }, + "nativeSrc": "36908:18:31", + "nodeType": "YulFunctionCall", + "src": "36908:18:31" + }, + { + "name": "value3", + "nativeSrc": "36928:6:31", + "nodeType": "YulIdentifier", + "src": "36928:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36901:6:31", + "nodeType": "YulIdentifier", + "src": "36901:6:31" + }, + "nativeSrc": "36901:34:31", + "nodeType": "YulFunctionCall", + "src": "36901:34:31" + }, + "nativeSrc": "36901:34:31", + "nodeType": "YulExpressionStatement", + "src": "36901:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nativeSrc": "36543:398:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "36669:9:31", + "nodeType": "YulTypedName", + "src": "36669:9:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "36680:6:31", + "nodeType": "YulTypedName", + "src": "36680:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "36688:6:31", + "nodeType": "YulTypedName", + "src": "36688:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "36696:6:31", + "nodeType": "YulTypedName", + "src": "36696:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "36704:6:31", + "nodeType": "YulTypedName", + "src": "36704:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "36715:4:31", + "nodeType": "YulTypedName", + "src": "36715:4:31", + "type": "" + } + ], + "src": "36543:398:31" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_array_string_dyn(value, pos) -> end\n {\n let pos_1 := pos\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, 0x20)\n let tail := add(add(pos_1, shl(5, length)), 0x20)\n let srcPtr := add(value, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail, pos_1), not(31)))\n tail := abi_encode_string(mload(srcPtr), tail)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_string_dyn(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IERC721_$2241t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_array_string_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := sub(shl(64, 1), 1)\n if gt(_1, _3) { panic_error_0x41() }\n let _4 := shl(5, _1)\n let dst := allocate_memory(add(_4, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _4), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _3)\n {\n let _5 := 0\n revert(_5, _5)\n }\n mstore(dst, abi_decode_bytes(add(add(offset, innerOffset), _2), end))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_array_string_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n let offset := calldataload(add(headStart, 224))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value7 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let value_2 := calldataload(add(headStart, 96))\n validator_revert_address(value_2)\n value3 := value_2\n let value_3 := calldataload(add(headStart, 128))\n validator_revert_address(value_3)\n value4 := value_3\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n let value := calldataload(add(headStart, 64))\n validator_revert_bool(value)\n value2 := value\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_1 := calldataload(add(headStart, 128))\n validator_revert_address(value_1)\n value4 := value_1\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_struct_Service(value, pos) -> end\n {\n let tail := add(pos, 0x60)\n mstore(pos, mload(value))\n let _1 := 0x20\n mstore(add(pos, 0x20), iszero(iszero(mload(add(value, 0x20)))))\n let memberValue0 := mload(add(value, 0x40))\n mstore(add(pos, 0x40), 0x60)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 128)\n let tail_1 := add(add(pos, shl(5, length)), 128)\n let srcPtr := add(memberValue0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, add(sub(tail_1, pos), not(127)))\n tail_1 := abi_encode_string(mload(srcPtr), tail_1)\n srcPtr := add(srcPtr, _1)\n pos_1 := add(pos_1, _1)\n }\n end := tail_1\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$5968_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_string_dyn(value0, add(headStart, 64))\n let _1 := 32\n mstore(add(headStart, _1), sub(tail_1, headStart))\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(tail_1, _1)\n let tail_2 := add(add(tail_1, shl(5, length)), _1)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n tail_2 := abi_encode_struct_Service(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_decode_tuple_t_contract$_IERC20_$1798t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_decode_tuple_t_string_memory_ptrt_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let value := calldataload(add(headStart, 32))\n validator_revert_bool(value)\n value1 := value\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_struct$_Service_$5968_memory_ptr__to_t_struct$_Service_$5968_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_struct_Service(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := mload(_1)\n let array := allocate_memory(array_allocation_size_bytes(_2))\n mstore(array, _2)\n if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), _2)\n value0 := array\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n mstore(headStart, value0)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n mstore(add(headStart, 224), value7)\n }\n function abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_library_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 192)\n tail := abi_encode_string(value2, add(headStart, 192))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), and(value5, _1))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, shl(240, 6401))\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_bytes32_t_string_memory_ptr__to_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_string(value1, add(headStart, 64))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let ret := 0\n let slotValue := sload(value0)\n let length := extract_byte_array_length(slotValue)\n let _1 := 1\n switch and(slotValue, 1)\n case 0 {\n mstore(pos, and(slotValue, not(255)))\n ret := add(pos, mul(length, iszero(iszero(length))))\n }\n case 1 {\n mstore(0, value0)\n let _2 := 0x20\n let dataPos := keccak256(0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, _2) }\n {\n mstore(add(pos, i), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(pos, length)\n }\n end := ret\n }\n function copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage(slot, src)\n {\n if eq(slot, src) { leave }\n let newLen := extract_byte_array_length(sload(src))\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let src_1 := array_dataslot_string_storage(src)\n let dstPtr := array_dataslot_string_storage(slot)\n let i := srcOffset\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, sload(add(src_1, srcOffset)))\n let _1 := 1\n dstPtr := add(dstPtr, _1)\n srcOffset := add(srcOffset, _1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := sload(add(src_1, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := sload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes32_t_bool__to_t_bytes32_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), iszero(iszero(value1)))\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}", + "id": 31, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "837": [ + { + "length": 32, + "start": 10517 + }, + { + "length": 32, + "start": 10558 + }, + { + "length": 32, + "start": 11423 + } + ] + }, + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4487 + }, + { + "length": 20, + "start": 5772 + } + ] + } + }, + "object": "6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613f0b565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fdf565b3480156103b457600080fd5b506103ca600080516020614edf83398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613ff2565b34801561040657600080fd5b5061042561041536600461410e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614179565b610e48565b34801561046a57600080fd5b5061047e6104793660046141ad565b610e56565b005b34801561048c57600080fd5b5061047e61049b36600461428c565b610f03565b3480156104ac57600080fd5b506103ca600080516020614eff83398151915281565b3480156104ce57600080fd5b506104e26104dd3660046142c0565b610f64565b60405161037d92919061435b565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614374565b611145565b34801561053157600080fd5b5061047e610540366004614374565b611165565b34801561055157600080fd5b5061047e61056036600461438d565b611201565b34801561057157600080fd5b5061039b610580366004614179565b611223565b34801561059157600080fd5b506103ca600080516020614e9f83398151915281565b3480156105b357600080fd5b5061047e6105c23660046143bd565b611231565b3480156105d357600080fd5b5061047e6105e236600461438d565b6113ed565b3480156105f357600080fd5b506103ca600080516020614dff83398151915281565b34801561061557600080fd5b5061047e61062436600461428c565b611420565b34801561063557600080fd5b5061047e610644366004614425565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614477565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144ec565b6114e3565b61047e6106ac36600461455a565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d91906145a9565b3480156106df57600080fd5b5061047e6106ee3660046145bd565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145e9565b611672565b34801561073457600080fd5b5061047e610743366004614374565b6116fe565b34801561075457600080fd5b5061039b610763366004614374565b611739565b34801561077457600080fd5b506103ca600080516020614e1f83398151915281565b34801561079657600080fd5b5061047e6107a53660046142c0565b611841565b3480156107b657600080fd5b506107bf611a43565b60405161037d929190614652565b3480156107d957600080fd5b5061047e6107e8366004614660565b611a65565b3480156107f957600080fd5b5061047e61080836600461467d565b611a86565b34801561081957600080fd5b5061047e61082836600461469f565b611aa8565b34801561083957600080fd5b5061047e610848366004614660565b611ad2565b34801561085957600080fd5b50610862611af3565b60405161037d929190614776565b34801561087c57600080fd5b506103ca600080516020614f1f83398151915281565b34801561089e57600080fd5b506108b26108ad366004614660565b611cb8565b60405161037d91906147e8565b3480156108cb57600080fd5b506103ca600080516020614ebf83398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461469f565b611d9d565b34801561090d57600080fd5b5061037161091c366004614374565b611dc7565b34801561092d57600080fd5b506106c661093c36600461467d565b611df8565b34801561094d57600080fd5b5061037161095c36600461438d565b611e26565b34801561096d57600080fd5b5061098161097c3660046147fb565b611e5c565b60405161037d9493929190614829565b34801561099d57600080fd5b5061047e6109ac3660046141ad565b611eb3565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614844565b611f06565b3480156109f257600080fd5b5061047e610a01366004614861565b611f27565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614179565b611f51565b348015610a6357600080fd5b506106c6611f5f565b348015610a7857600080fd5b506103ca611f7a565b348015610a8d57600080fd5b5061047e610a9c366004614660565b611f8f565b348015610aad57600080fd5b506103ca610abc3660046144ec565b61202a565b348015610acd57600080fd5b506103ca610adc366004614374565b612066565b348015610aed57600080fd5b5061047e610afc36600461455a565b612092565b348015610b0d57600080fd5b506103ca600080516020614e7f83398151915281565b348015610b2f57600080fd5b50610b386120b4565b60405161037d91906148a7565b348015610b5157600080fd5b5061047e610b6036600461438d565b6120ce565b348015610b7157600080fd5b50610b85610b80366004614374565b6120ea565b60405161037d91906148e8565b348015610b9e57600080fd5b50610371610bad366004614660565b612213565b348015610bbe57600080fd5b5061047e610bcd366004614660565b61222d565b348015610bde57600080fd5b506103ca61224e565b348015610bf357600080fd5b50610b38612263565b348015610c0857600080fd5b506103ca610c17366004614374565b61227d565b348015610c2857600080fd5b5061047e610c373660046148fb565b6122a8565b348015610c4857600080fd5b506103ca6122d2565b348015610c5d57600080fd5b506107bf610c6c366004614660565b6122dd565b348015610c7d57600080fd5b5061047e610c8c3660046145bd565b612318565b348015610c9d57600080fd5b5061047e610cac366004614179565b6123a0565b348015610cbd57600080fd5b506103ca600080516020614e3f83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123c9565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d2761404b565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f5f565b6001600160a01b0316635a81a626848381518110610d9157610d91614954565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc919081019061496a565b828281518110610e0e57610e0e614954565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123fe565b9050610e4281600901612422565b91505090565b6000610cf8610c178361242f565b600080516020614ebf833981519152610e6e816124a5565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e7f833981519152610f1b816124a5565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614954565b602002602001015161242f565b9050610f56816124af565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f9291906145a9565b60405180910390fd5b610fa3611f5f565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce91906145a9565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149d7565b61102e5788604051633f2c64af60e01b8152600401610f9291906145a9565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a612526565b915061106c82612213565b61108b578160405163248d101d60e11b8152600401610f9291906145a9565b6000611095612552565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a91600401614652565b8054891161110d578054604051632256490160e11b8152610f92918b91600401614652565b600181015461111c9089614a0a565b925050509850989650505050505050565b6000806111386123fe565b6003015460ff1692915050565b600080611150612576565b60009384526020525050604090206001015490565b61116d61259a565b600080516020614f1f833981519152611185816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c592919061435b565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125d0565b50565b61120a82611145565b611213816124a5565b61121d83836125e1565b50505050565b6060610cf86107638361242f565b600061123b612623565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db612647565b6112e3612647565b6112eb612651565b6112f66000886125e1565b5061130f600080516020614e7f833981519152886125e1565b50611328600080516020614e9f833981519152886125e1565b50611341600080516020614e3f833981519152876125e1565b50600061134c6126eb565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e8000062015180611398828261270f565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612732565b600080516020614e7f833981519152611438816124a5565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614954565b90506114668161276b565b5060010161143b565b600080516020614e7f833981519152611487816124a5565b610f5f6114938461242f565b836127d9565b606060006114a56123fe565b9050610e4281612422565b600080516020614e7f8339815191526114c8816124a5565b6114dc6114d48661242f565b858486612834565b5050505050565b60408051600080516020614edf83398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d61290a565b61157682612998565b6115808282612adb565b5050565b60008061158f6126eb565b600101546001600160a01b031692915050565b600080516020614e9f8339815191526115ba816124a5565b6115c382612b8f565b6115db600080516020614e1f833981519152846125e1565b506115f4600080516020614f1f833981519152846125e1565b5061160d600080516020614dff833981519152846125e1565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bfd565b600061165f612c94565b50600080516020614e5f83398151915290565b600080516020614f1f83398151915261168a816124a5565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d296959493929190614a1d565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b61170661259a565b600080516020614dff83398151915261171e816124a5565b61172782612b8f565b61173082612cdd565b506111fe6125d0565b606060006117456123fe565b90506117518382612e12565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a67565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b61184961259a565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e3c565b600061271061187b611f5f565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614aa1565b6118e69084614aba565b6118f09190614ad1565b905060006118fe8284614a0a565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612552565b9050838160010160008282546119399190614af3565b9091555050505b6119bc8261194c611f5f565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614b06565b6001600160a01b031690612bfd565b6119cf6001600160a01b038c1682612bfd565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a350505050610ef96125d0565b6000806000611a50612ea7565b90508060020154816003015492509250509091565b600080516020614e7f833981519152611a7d816124a5565b61158082612ecb565b600080516020614e9f833981519152611a9e816124a5565b610f5f8383612f37565b600080516020614e7f833981519152611ac0816124a5565b610f5f611acc8461242f565b83612f84565b600080516020614e7f833981519152611aea816124a5565b61158082612ffa565b6060806000611b00611499565b9050600081516001600160401b03811115611b1d57611b1d61404b565b604051908082528060200260200182016040528015611b5057816020015b6060815260200190600190039081611b3b5790505b509050600082516001600160401b03811115611b6e57611b6e61404b565b604051908082528060200260200182016040528015611ba757816020015b611b94613e0c565b815260200190600190039081611b8c5790505b50905060005b8351811015611cad57611bbe611f5f565b6001600160a01b0316635a81a626858381518110611bde57611bde614954565b60200260200101516040518263ffffffff1660e01b8152600401611c0491815260200190565b600060405180830381865afa158015611c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c49919081019061496a565b838281518110611c5b57611c5b614954565b6020026020010181905250611c88848281518110611c7b57611c7b614954565b60200260200101516120ea565b828281518110611c9a57611c9a614954565b6020908102919091010152600101611bad565b509094909350915050565b60606000611cc46123fe565b9050611cd36006820184613066565b611cf2578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b038316600090815260088201602052604090208054611d1790614a67565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4390614a67565b8015611d905780601f10611d6557610100808354040283529160200191611d90565b820191906000526020600020905b815481529060010190602001808311611d7357829003601f168201915b5050505050915050919050565b600080516020614e7f833981519152611db5816124a5565b610f5f611dc18461242f565b8361307b565b600080611dd26123fe565b9050611dde8382612e12565b600092835260020160205250604090206001015460ff1690565b600080611e036131e3565b6000858152602082905260409020909150611e1e9084613207565b949350505050565b600080611e31612576565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e6c612552565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614ebf833981519152611ecb816124a5565b6001600160a01b038316611ef257604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b0385168484613213565b600080516020614e7f833981519152611f1e816124a5565b6115808261326b565b600080516020614e7f833981519152611f3f816124a5565b610f5f611f4b8461242f565b836132c2565b6000610cf861091c8361242f565b600080611f6a6126eb565b546001600160a01b031692915050565b600080611f856126eb565b6002015492915050565b600080516020614e9f833981519152611fa7816124a5565b611fbf600080516020614e1f83398151915283612732565b50611fd8600080516020614f1f83398151915283612732565b50611ff1600080516020614dff83398151915283612732565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006120346122d2565b612043898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120716131e3565b600084815260208290526040902090915061208b9061332f565b9392505050565b600080516020614e7f8339815191526120aa816124a5565b610f5f8383613339565b606060006120c06123fe565b9050610e4260048201612422565b6120d782611145565b6120e0816124a5565b61121d8383612732565b6120f2613e0c565b60006120fc6123fe565b90506121088382612e12565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b8282101561220457838290600052602060002001805461217790614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546121a390614a67565b80156121f05780601f106121c5576101008083540402835291602001916121f0565b820191906000526020600020905b8154815290600101906020018083116121d357829003601f168201915b505050505081526020019060010190612158565b50505091525090949350505050565b6000610cf8600080516020614e1f83398151915283611e26565b600080516020614e7f833981519152612245816124a5565b611580826133d5565b600080612259612552565b6001015492915050565b6060600061226f6123fe565b9050610e4281600601612422565b6000806122886123fe565b90506122948382612e12565b600092835260020160205250604090205490565b600080516020614e7f8339815191526122c0816124a5565b610f5f6122cc8461242f565b8361346e565b600080611f85612552565b60008060006122ea612ea7565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b61232061259a565b600080516020614ebf833981519152612338816124a5565b61234182612b8f565b6123546001600160a01b03841683612bfd565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161238f91815260200190565b60405180910390a2506115806125d0565b600080516020614e7f8339815191526123b8816124a5565b6115806123c48361242f565b6134dd565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061208b83613578565b6000612439611f5f565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161246491906147e8565b602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614aa1565b6111fe81336135d4565b60006124b96123fe565b905060006124ca60098301846135ff565b9050806124ed57604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b6000806125388a8a8a8a8a8a8a61202a565b9050612544818461360b565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006125a4613635565b8054909150600119016125ca57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125da613635565b6001905550565b6000806125ec6131e3565b905060006125fa8585613659565b90508015611e1e57600085815260208390526040902061261a90856136fa565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61264f61370f565b565b61265961370f565b6000612663612552565b6040519091506126cb90600080516020614eff833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614829565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b61271761370f565b6000612721612ea7565b600281019390935550600390910155565b60008061273d6131e3565b9050600061274b8585613734565b90508015611e1e57600085815260208390526040902061261a90856137ac565b60006127756123fe565b9050600061278660098301846137c1565b9050806127a957604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612519565b60006127e36123fe565b90506127ef8382612e12565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897906125199085908590614652565b600061283e6123fe565b9050600061284c82876135ff565b90508061286e576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128cc938501929190910190613e2f565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061297a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661296e6137cd565b6001600160a01b031614155b1561264f5760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e3f8339815191526129b0816124a5565b60006129ba611f5f565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b06565b90506000612a276137cd565b9050836001600160a01b0316816001600160a01b031603612a5f5780846040516382afabc160e01b8152600401610f92929190614b23565b816001600160a01b0316846001600160a01b031614612a9557818460405163699a021f60e11b8152600401610f92929190614b23565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b35575060408051601f3d908101601f19168201909252612b3291810190614aa1565b60015b612b545781604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f8339815191528114612b8557604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137e9565b6000612b99611f7a565b90506000612ba561224e565b905081811015610f5f576000612bbb8284614a0a565b90506000612bc98247614a0a565b9050808511156114dc576040516344c8760560e11b8152600481018290526024810183905260448101869052606401610f92565b80471015612c20573060405163cd78605960e01b8152600401610f9291906145a9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c6d576040519150601f19603f3d011682016040523d82523d6000602084013e612c72565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461264f5760405163703e46dd60e11b815260040160405180910390fd5b6000612ce7612ea7565b90508060020154821115612d1657806002015482604051631728bc5b60e31b8152600401610f92929190614652565b6003810154336000908152602083905260409020544291612d3691614af3565b811115612d5e5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d80908590614af3565b1115612da75781600201548360405163d54b188760e01b8152600401610f92929190614652565b33600090815260018301602052604081208054859290612dc8908490614af3565b90915550612dd890503384612bfd565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612e1c818361383f565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e46612552565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612ed56123fe565b90506000612ee660048301846136fa565b905080612f085782604051632872fbf960e11b8152600401610f9291906145a9565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f8360405161251991906145a9565b6000612f41612ea7565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906125199085908590614652565b6000612f8e6123fe565b9050612f9a8382612e12565b600083815260028083016020908152604083209091018054600181018255908352912001612fc88382614ba2565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612519929190614c5b565b60006130046123fe565b9050600061301560048301846137ac565b9050806130375782604051631532e67160e21b8152600401610f9291906145a9565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af28360405161251991906145a9565b600061208b836001600160a01b038416613847565b60006130856123fe565b90506130918382612e12565b600083815260028083016020526040822001905b81548110156114dc57836040516020016130bf9190614c74565b604051602081830303815290604052805190602001208282815481106130e7576130e7614954565b906000526020600020016040516020016131019190614c90565b60405160208183030381529060405280519060200120036131db578154829061312c90600190614a0a565b8154811061313c5761313c614954565b9060005260206000200182828154811061315857613158614954565b90600052602060002001908161316e9190614d06565b508180548061317f5761317f614dd2565b60019003818190600052602060002001600061319b9190613e85565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131ce929190614c5b565b60405180910390a16114dc565b6001016130a5565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600061208b838361385f565b610f5f83846001600160a01b031663a9059cbb858560405160240161323992919061435b565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613889565b60006132756123fe565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132cc6123fe565b90506132d88382612e12565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612519565b6000610cf8825490565b60006133436123fe565b9050600061335460068301856136fa565b9050806133765783604051631a6107e360e31b8152600401610f9291906145a9565b6001600160a01b0384166000908152600883016020526040902061339a8482614ba2565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133df6123fe565b905060006133f060068301846137ac565b905080613412578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b0383166000908152600883016020526040812061343591613e85565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134786123fe565b90506134848382612e12565b600083815260028083016020908152604090922084516134ac93919092019190850190613e2f565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612519565b60006134e76123fe565b905060006134f582846137c1565b90508061351857604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061354690830182613ebf565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612519565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135c857602002820191906000526020600020905b8154815260200190600101908083116135b4575b50505050509050919050565b6135de8282611e26565b61158057808260405163e2517d3f60e01b8152600401610f9292919061435b565b600061208b83836138e3565b60008060008061361b868661392d565b92509250925061362b828261397a565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080613664612576565b90506136708484611e26565b6136f0576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136a63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b600061208b836001600160a01b0384166138e3565b613717613a33565b61264f57604051631afcd79f60e31b815260040160405180910390fd5b60008061373f612576565b905061374b8484611e26565b156136f0576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b600061208b836001600160a01b038416613a4d565b600061208b8383613a4d565b600080516020614e5f833981519152546001600160a01b031690565b6137f282613b36565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561383757610f5f8282613b92565b611580613c08565b600061208b83835b60009081526001919091016020526040902054151590565b600082600001828154811061387657613876614954565b9060005260206000200154905092915050565b600061389e6001600160a01b03841683613c27565b905080516000141580156138c35750808060200190518101906138c191906149d7565b155b15610f5f5782604051635274afe760e01b8152600401610f9291906145a9565b60006138ef8383613847565b61392557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139675760208401516040850151606086015160001a61395988828585613c35565b955095509550505050613973565b50508151600091506002905b9250925092565b600082600381111561398e5761398e614de8565b03613997575050565b60018260038111156139ab576139ab614de8565b036139c95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139dd576139dd614de8565b036139fe5760405163fce698f760e01b815260048101829052602401610f92565b6003826003811115613a1257613a12614de8565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a3d612623565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136f0576000613a71600183614a0a565b8554909150600090613a8590600190614a0a565b9050808214613aea576000866000018281548110613aa557613aa5614954565b9060005260206000200154905080876000018481548110613ac857613ac8614954565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613afb57613afb614dd2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b635780604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613baf9190614c74565b600060405180830381855af49150503d8060008114613bea576040519150601f19603f3d011682016040523d82523d6000602084013e613bef565b606091505b5091509150613bff858383613cfa565b95945050505050565b341561264f5760405163b398979f60e01b815260040160405180910390fd5b606061208b83836000613d46565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c665750600091506003905082613cf0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613cba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce657506000925060019150829050613cf0565b9250600091508190505b9450945094915050565b606082613d0f57613d0a82613de3565b61208b565b8151158015613d2657506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f9291906145a9565b606081471015613d6b573060405163cd78605960e01b8152600401610f9291906145a9565b600080856001600160a01b03168486604051613d879190614c74565b60006040518083038185875af1925050503d8060008114613dc4576040519150601f19603f3d011682016040523d82523d6000602084013e613dc9565b606091505b5091509150613dd9868383613cfa565b9695505050505050565b805115613df35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e75579160200282015b82811115613e755782518290613e659082614ba2565b5091602001919060010190613e4f565b50613e81929150613ed9565b5090565b508054613e9190614a67565b6000825580601f10613ea1575050565b601f0160209004906000526020600020908101906111fe9190613ef6565b50805460008255906000526020600020908101906111fe91905b80821115613e81576000613eed8282613e85565b50600101613ed9565b5b80821115613e815760008155600101613ef7565b600060208284031215613f1d57600080fd5b81356001600160e01b03198116811461208b57600080fd5b60005b83811015613f50578181015183820152602001613f38565b50506000910152565b60008151808452613f71816020860160208601613f35565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fd257601f19868403018952613fc0838351613f59565b98840198925090830190600101613fa4565b5090979650505050505050565b60208152600061208b6020830184613f85565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783518352928401929184019160010161400e565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140895761408961404b565b604052919050565b60006001600160401b038211156140aa576140aa61404b565b50601f01601f191660200190565b600082601f8301126140c957600080fd5b81356140dc6140d782614091565b614061565b8181528460208386010111156140f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561412457600080fd5b843561412f81614036565b9350602085013561413f81614036565b92506040850135915060608501356001600160401b0381111561416157600080fd5b61416d878288016140b8565b91505092959194509250565b60006020828403121561418b57600080fd5b81356001600160401b038111156141a157600080fd5b611e1e848285016140b8565b6000806000606084860312156141c257600080fd5b83356141cd81614036565b925060208401356141dd81614036565b929592945050506040919091013590565b600082601f8301126141ff57600080fd5b813560206001600160401b038083111561421b5761421b61404b565b8260051b61422a838201614061565b938452858101830193838101908886111561424457600080fd5b84880192505b85831015614280578235848111156142625760008081fd5b6142708a87838c01016140b8565b835250918401919084019061424a565b98975050505050505050565b60006020828403121561429e57600080fd5b81356001600160401b038111156142b457600080fd5b611e1e848285016141ee565b600080600080600080600080610100898b0312156142dd57600080fd5b88356142e881614036565b975060208901356142f881614036565b9650604089013561430881614036565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561433f57600080fd5b61434b8b828c016140b8565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561438657600080fd5b5035919050565b600080604083850312156143a057600080fd5b8235915060208301356143b281614036565b809150509250929050565b600080600080600060a086880312156143d557600080fd5b85356143e081614036565b945060208601356143f081614036565b935060408601359250606086013561440781614036565b9150608086013561441781614036565b809150509295509295909350565b6000806040838503121561443857600080fd5b82356001600160401b0381111561444e57600080fd5b61445a858286016140b8565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561448d57600080fd5b84356001600160401b03808211156144a457600080fd5b6144b0888389016140b8565b955060208701359450604087013591506144c982614469565b909250606086013590808211156144df57600080fd5b5061416d878288016141ee565b600080600080600080600060e0888a03121561450757600080fd5b873561451281614036565b9650602088013561452281614036565b9550604088013561453281614036565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561456d57600080fd5b823561457881614036565b915060208301356001600160401b0381111561459357600080fd5b61459f858286016140b8565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145d057600080fd5b82356145db81614036565b946020939093013593505050565b600080600080600060a0868803121561460157600080fd5b853561460c81614036565b945060208601356001600160401b0381111561462757600080fd5b614633888289016140b8565b9450506040860135925060608601359150608086013561441781614036565b918252602082015260400190565b60006020828403121561467257600080fd5b813561208b81614036565b6000806040838503121561469057600080fd5b50508035926020909101359150565b600080604083850312156146b257600080fd5b82356001600160401b03808211156146c957600080fd5b6146d5868387016140b8565b935060208501359150808211156146eb57600080fd5b5061459f858286016140b8565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561476957607f19898703018352614757868551613f59565b9550928401929184019160010161473b565b5093979650505050505050565b6040815260006147896040830185613f85565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147d957601f198784030185526147c78383516146f8565b948601949250908501906001016147ab565b50909998505050505050505050565b60208152600061208b6020830184613f59565b6000806040838503121561480e57600080fd5b823561481981614036565b915060208301356143b281614036565b93845260208401929092526040830152606082015260800190565b60006020828403121561485657600080fd5b813561208b81614469565b6000806040838503121561487457600080fd5b82356001600160401b0381111561488a57600080fd5b614896858286016140b8565b92505060208301356143b281614469565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783516001600160a01b0316835292840192918401916001016148c3565b60208152600061208b60208301846146f8565b6000806040838503121561490e57600080fd5b82356001600160401b038082111561492557600080fd5b614931868387016140b8565b9350602085013591508082111561494757600080fd5b5061459f858286016141ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561497c57600080fd5b81516001600160401b0381111561499257600080fd5b8201601f810184136149a357600080fd5b80516149b16140d782614091565b8181528560208385010111156149c657600080fd5b613bff826020830160208601613f35565b6000602082840312156149e957600080fd5b815161208b81614469565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149f4565b600060018060a01b038089168352808816602084015260c06040840152614a4760c0840188613f59565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a7b57607f821691505b602082108103614a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ab357600080fd5b5051919050565b8082028115828204841417610cf857610cf86149f4565b600082614aee57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149f4565b600060208284031215614b1857600080fd5b815161208b81614036565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b665750805b601f850160051c820191505b81811015614b8557828155600101614b72565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bbb57614bbb61404b565b614bcf81614bc98454614a67565b84614b3d565b602080601f831160018114614bfe5760008415614bec5750858301515b614bf68582614b8d565b865550614b85565b600085815260208120601f198616915b82811015614c2d57888601518255948401946001909101908401614c0e565b5085821015614c4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e1e6040830184613f59565b60008251614c86818460208701613f35565b9190910192915050565b6000808354614c9e81614a67565b60018281168015614cb65760018114614ccb57614cfa565b60ff1984168752821515830287019450614cfa565b8760005260208060002060005b85811015614cf15781548a820152908401908201614cd8565b50505082870194505b50929695505050505050565b818103614d11575050565b614d1b8254614a67565b6001600160401b03811115614d3257614d3261404b565b614d4081614bc98454614a67565b6000601f821160018114614d6e5760008315614d5c5750848201545b614d668482614b8d565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614da85782860154825560019586019590910190602001614d88565b5085831015614c4b5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa2646970667358221220d4fe695f798b2cdbd93ac75abfc29f73ff41617d251ff28aea4f45601429b4c364736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x345 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x45E JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x4C2 JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x26687C9F EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x585 JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x609 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x69E JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x6D3 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0x58E5CAE0 EQ PUSH2 0x708 JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x728 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x748 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x7ED JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x80D JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x82D JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x84D JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x870 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x892 JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x8BF JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x8E1 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x901 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x921 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x941 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x961 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0x991 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x9B1 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0x9C6 JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0x9E6 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA06 JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xA57 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xA6C JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xAC1 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xAE1 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xB01 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xB23 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xB45 JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xB65 JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xB92 JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xBB2 JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xBD2 JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xBFC JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xC1C JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xC3C JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xC91 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x34C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x3F0B JUMP JUMPDEST PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0xCFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FDF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x3FF2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0x415 CALLDATASIZE PUSH1 0x4 PUSH2 0x410E JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x459 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0xE48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x41AD JUMP JUMPDEST PUSH2 0xE56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x49B CALLDATASIZE PUSH1 0x4 PUSH2 0x428C JUMP JUMPDEST PUSH2 0xF03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E2 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x42C0 JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1165 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x1201 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x1223 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x43BD JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x5E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x624 CALLDATASIZE PUSH1 0x4 PUSH2 0x428C JUMP JUMPDEST PUSH2 0x1420 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x4425 JUMP JUMPDEST PUSH2 0x146F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x1499 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x679 CALLDATASIZE PUSH1 0x4 PUSH2 0x4477 JUMP JUMPDEST PUSH2 0x14B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x44EC JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST PUSH2 0x47E PUSH2 0x6AC CALLDATASIZE PUSH1 0x4 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1565 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x45BD JUMP JUMPDEST PUSH2 0x15A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1655 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x723 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E9 JUMP JUMPDEST PUSH2 0x1672 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x743 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x16FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39B PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x42C0 JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0x1A43 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x7E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1A65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x808 CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x828 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1AA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x848 CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1AD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x862 PUSH2 0x1AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP3 SWAP2 SWAP1 PUSH2 0x4776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH2 0x8AD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1CB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x47E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x8FC CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1D9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x91C CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x1DC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x93C CALLDATASIZE PUSH1 0x4 PUSH2 0x467D JUMP JUMPDEST PUSH2 0x1DF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0x95C CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x1E26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x981 PUSH2 0x97C CALLDATASIZE PUSH1 0x4 PUSH2 0x47FB JUMP JUMPDEST PUSH2 0x1E5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4829 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9AC CALLDATASIZE PUSH1 0x4 PUSH2 0x41AD JUMP JUMPDEST PUSH2 0x1EB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0x9E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4844 JUMP JUMPDEST PUSH2 0x1F06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA01 CALLDATASIZE PUSH1 0x4 PUSH2 0x4861 JUMP JUMPDEST PUSH2 0x1F27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xA52 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x1F51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C6 PUSH2 0x1F5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x1F7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xA9C CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x1F8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xABC CALLDATASIZE PUSH1 0x4 PUSH2 0x44EC JUMP JUMPDEST PUSH2 0x202A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xADC CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x2066 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xAFC CALLDATASIZE PUSH1 0x4 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x2092 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x20B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xB60 CALLDATASIZE PUSH1 0x4 PUSH2 0x438D JUMP JUMPDEST PUSH2 0x20CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB85 PUSH2 0xB80 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x371 PUSH2 0xBAD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x2213 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xBCD CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x222D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x224E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB38 PUSH2 0x2263 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0xC17 CALLDATASIZE PUSH1 0x4 PUSH2 0x4374 JUMP JUMPDEST PUSH2 0x227D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC37 CALLDATASIZE PUSH1 0x4 PUSH2 0x48FB JUMP JUMPDEST PUSH2 0x22A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH2 0x22D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BF PUSH2 0xC6C CALLDATASIZE PUSH1 0x4 PUSH2 0x4660 JUMP JUMPDEST PUSH2 0x22DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xC8C CALLDATASIZE PUSH1 0x4 PUSH2 0x45BD JUMP JUMPDEST PUSH2 0x2318 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47E PUSH2 0xCAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3CA PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH2 0xCF8 DUP3 PUSH2 0x23C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD0A PUSH2 0xE28 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xD27 JUMPI PUSH2 0xD27 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD5A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD45 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xE21 JUMPI PUSH2 0xD71 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD91 JUMPI PUSH2 0xD91 PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDB7 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xDFC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x496A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE0E JUMPI PUSH2 0xE0E PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD60 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE34 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x9 ADD PUSH2 0x2422 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0xC17 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE6E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xF1B DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0xF4B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x242F JUMP JUMPDEST SWAP1 POP PUSH2 0xF56 DUP2 PUSH2 0x24AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF1E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0xF9B JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA3 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFEB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100F SWAP2 SWAP1 PUSH2 0x49D7 JUMP JUMPDEST PUSH2 0x102E JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x1051 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x1061 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2526 JUMP JUMPDEST SWAP2 POP PUSH2 0x106C DUP3 PUSH2 0x2213 JUMP JUMPDEST PUSH2 0x108B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1095 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4652 JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x110D JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0xF92 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x111C SWAP1 DUP10 PUSH2 0x4A0A JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1138 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1150 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x116D PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1185 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x1B29E1BA PUSH2 0x11A7 PUSH2 0x1584 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11C5 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11FE PUSH2 0x25D0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x120A DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1213 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x25E1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCF8 PUSH2 0x763 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x123B PUSH2 0x2623 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1262 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x127E JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x128C JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x12AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x12D3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x12DB PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x12E3 PUSH2 0x2647 JUMP JUMPDEST PUSH2 0x12EB PUSH2 0x2651 JUMP JUMPDEST PUSH2 0x12F6 PUSH1 0x0 DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x130F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x1328 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x1341 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x134C PUSH2 0x26EB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x1398 DUP3 DUP3 PUSH2 0x270F JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x13E1 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1416 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF5F DUP3 DUP3 PUSH2 0x2732 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1438 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x145B DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3E JUMPI PUSH2 0xF3E PUSH2 0x4954 JUMP JUMPDEST SWAP1 POP PUSH2 0x1466 DUP2 PUSH2 0x276B JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x143B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1493 DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x27D9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x14A5 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x14C8 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x14DC PUSH2 0x14D4 DUP7 PUSH2 0x242F JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x2834 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x156D PUSH2 0x290A JUMP JUMPDEST PUSH2 0x1576 DUP3 PUSH2 0x2998 JUMP JUMPDEST PUSH2 0x1580 DUP3 DUP3 PUSH2 0x2ADB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x158F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x15BA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x15C3 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x15DB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x15F4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH2 0x160D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x25E1 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0xF5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x165F PUSH2 0x2C94 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x168A DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x53EA54C5 PUSH2 0x16AC PUSH2 0x1584 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1706 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x171E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1727 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x1730 DUP3 PUSH2 0x2CDD JUMP JUMPDEST POP PUSH2 0x11FE PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1745 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1751 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1835 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x17A8 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x17D4 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1821 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x17F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1821 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1804 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1789 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1849 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x185C DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xF64 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x186E DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x187B PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18DC SWAP2 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH2 0x18E6 SWAP1 DUP5 PUSH2 0x4ABA JUMP JUMPDEST PUSH2 0x18F0 SWAP2 SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FE DUP3 DUP5 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1940 JUMPI PUSH1 0x0 PUSH2 0x1923 PUSH2 0x2552 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1939 SWAP2 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x19BC DUP3 PUSH2 0x194C PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19AD SWAP2 SWAP1 PUSH2 0x4B06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2BFD JUMP JUMPDEST PUSH2 0x19CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 DUP14 AND SWAP2 DUP15 AND SWAP1 PUSH32 0x4EBD6343A4AE90EA9A2ADD4327D0439DE765F4B8BBB691CAAF0875EF36C54E81 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xEF9 PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A50 PUSH2 0x2EA7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A7D DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2ECB JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1A9E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x2F37 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AC0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1ACC DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x2F84 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AEA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x2FFA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1B00 PUSH2 0x1499 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B1D JUMPI PUSH2 0x1B1D PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1B50 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B3B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B6E JUMPI PUSH2 0x1B6E PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1BA7 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1B94 PUSH2 0x3E0C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1B8C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1CAD JUMPI PUSH2 0x1BBE PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BDE JUMPI PUSH2 0x1BDE PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C04 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C49 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x496A JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C5B JUMPI PUSH2 0x1C5B PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x1C88 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C7B JUMPI PUSH2 0x1C7B PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x20EA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C9A JUMPI PUSH2 0x1C9A PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1BAD JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1CC4 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1CD3 PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x3066 JUMP JUMPDEST PUSH2 0x1CF2 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1D17 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1D43 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D90 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D65 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D90 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1D73 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1DB5 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1DC1 DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x307B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DD2 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x1DDE DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E03 PUSH2 0x31E3 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x1E1E SWAP1 DUP5 PUSH2 0x3207 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E31 PUSH2 0x2576 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E6C PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1ECB DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3213 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F1E DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x326B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F3F DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x1F4B DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x32C2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH2 0x91C DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F6A PUSH2 0x26EB JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F85 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E9F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1FA7 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1FBF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH2 0x1FD8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH2 0x1FF1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4DFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2732 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2034 PUSH2 0x22D2 JUMP JUMPDEST PUSH2 0x2043 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x14E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2071 PUSH2 0x31E3 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x208B SWAP1 PUSH2 0x332F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x20AA DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x3339 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20C0 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH1 0x4 DUP3 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH2 0x20D7 DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x20E0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 PUSH2 0x2732 JUMP JUMPDEST PUSH2 0x20F2 PUSH2 0x3E0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20FC PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2108 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2204 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x2177 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x21A3 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x21F0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x21C5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x21F0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x21D3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2158 JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x1E26 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2245 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 DUP3 PUSH2 0x33D5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2259 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x226F PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 DUP2 PUSH1 0x6 ADD PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2288 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2294 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22C0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0xF5F PUSH2 0x22CC DUP5 PUSH2 0x242F JUMP JUMPDEST DUP4 PUSH2 0x346E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F85 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x22EA PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2320 PUSH2 0x259A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EBF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2338 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x2341 DUP3 PUSH2 0x2B8F JUMP JUMPDEST PUSH2 0x2354 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2BFD JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x238F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x1580 PUSH2 0x25D0 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E7F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x23B8 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x23C4 DUP4 PUSH2 0x242F JUMP JUMPDEST PUSH2 0x34DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xCF8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xCF8 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x208B DUP4 PUSH2 0x3578 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2439 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2464 SWAP2 SWAP1 PUSH2 0x47E8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCF8 SWAP2 SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH2 0x11FE DUP2 CALLER PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B9 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24CA PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x24ED JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x7ACACFD576383587962277516962C289D19F807BE443F4E303AB45ACE24931AC SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2538 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x202A JUMP JUMPDEST SWAP1 POP PUSH2 0x2544 DUP2 DUP5 PUSH2 0x360B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25A4 PUSH2 0x3635 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x25CA JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25DA PUSH2 0x3635 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25EC PUSH2 0x31E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25FA DUP6 DUP6 PUSH2 0x3659 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x261A SWAP1 DUP6 PUSH2 0x36FA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x264F PUSH2 0x370F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2659 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2663 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x26CB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4829 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x2717 PUSH2 0x370F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2721 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x273D PUSH2 0x31E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x274B DUP6 DUP6 PUSH2 0x3734 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1E1E JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x261A SWAP1 DUP6 PUSH2 0x37AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2775 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2786 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x37C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF0DD3DE472DDCD75AE2C17728A45801355FB6DD8615A7C53C15504B4279C09BE SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27E3 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x27EF DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE MLOAD PUSH32 0x8DB4DCEEAE8D620782D356DEC6A0148E893FF28620319F10F53DD2232B197897 SWAP1 PUSH2 0x2519 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x283E PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x284C DUP3 DUP8 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x286E JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x28CC SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3E2F JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP8 DUP2 MSTORE PUSH32 0x8F531E5EDE07D5741FD086BB787ED399A64704EB757B87CC80CF6635B274E5B5 SWAP2 POP PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x297A JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x296E PUSH2 0x37CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x29B0 DUP2 PUSH2 0x24A5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BA PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A1B SWAP2 SWAP1 PUSH2 0x4B06 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A27 PUSH2 0x37CD JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A5F JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A95 JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4B23 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2B35 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2B32 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4AA1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2B54 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x2B85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP4 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B99 PUSH2 0x1F7A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BA5 PUSH2 0x224E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 PUSH2 0x2BBB DUP3 DUP5 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2BC9 DUP3 SELFBALANCE PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xF92 JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x2C20 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C6D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C72 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF5F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CE7 PUSH2 0x2EA7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x2D16 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x2D36 SWAP2 PUSH2 0x4AF3 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x2D5E JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2D80 SWAP1 DUP6 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST GT ISZERO PUSH2 0x2DA7 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x4652 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x2DC8 SWAP1 DUP5 SWAP1 PUSH2 0x4AF3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2DD8 SWAP1 POP CALLER DUP5 PUSH2 0x2BFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x2E1C DUP2 DUP4 PUSH2 0x383F JUMP JUMPDEST PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E46 PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ED5 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EE6 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x36FA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F08 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F41 PUSH2 0x2EA7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x2519 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4652 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F8E PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x2F9A DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x2FC8 DUP4 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP PUSH32 0x1CD139430ED537AB9E8086952076CCE01EDD5BA6E30907AF0FFE3709FD3139E6 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP3 SWAP2 SWAP1 PUSH2 0x4C5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3004 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3015 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x37AC JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3037 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2519 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3847 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3085 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x3091 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x14DC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x30BF SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x30E7 JUMPI PUSH2 0x30E7 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3101 SWAP2 SWAP1 PUSH2 0x4C90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x31DB JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x312C SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x4A0A JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x313C JUMPI PUSH2 0x313C PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3158 JUMPI PUSH2 0x3158 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x316E SWAP2 SWAP1 PUSH2 0x4D06 JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x317F JUMPI PUSH2 0x317F PUSH2 0x4DD2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x319B SWAP2 SWAP1 PUSH2 0x3E85 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xFC8D82C9E7E7938446DA05458183EFA5916C443A2BAB87F97F94A8D47742B014 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31CE SWAP3 SWAP2 SWAP1 PUSH2 0x4C5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x30A5 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x385F JUMP JUMPDEST PUSH2 0xF5F DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3239 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3889 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3275 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32CC PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x32D8 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP7 DUP2 MSTORE SWAP2 DUP3 ADD MSTORE PUSH32 0x1B76230B39D2D0C1A2A77A90C170190D2280796ED56B280177256CE39DF1A664 SWAP2 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF8 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3343 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3354 PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x36FA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3376 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x339A DUP5 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33DF PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x33F0 PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x37AC JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3412 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3435 SWAP2 PUSH2 0x3E85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3478 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH2 0x3484 DUP4 DUP3 PUSH2 0x2E12 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x34AC SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x3E2F JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xA616BFC5BB0E46C6CAD727E1B55E3685067E1296D962A7F37017874A27AA0098 SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E7 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34F5 DUP3 DUP5 PUSH2 0x37C1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3518 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3546 SWAP1 DUP4 ADD DUP3 PUSH2 0x3EBF JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0x94DA5EECA10D4D6EE8455F99240C10B0C74B0CF5BF754AFB81C81E2704B9C427 SWAP1 PUSH1 0x20 ADD PUSH2 0x2519 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x35C8 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x35B4 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35DE DUP3 DUP3 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x1580 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP3 SWAP2 SWAP1 PUSH2 0x435B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x38E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x361B DUP7 DUP7 PUSH2 0x392D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x362B DUP3 DUP3 PUSH2 0x397A JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3664 PUSH2 0x2576 JUMP JUMPDEST SWAP1 POP PUSH2 0x3670 DUP5 DUP5 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x36F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x36A6 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x38E3 JUMP JUMPDEST PUSH2 0x3717 PUSH2 0x3A33 JUMP JUMPDEST PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x373F PUSH2 0x2576 JUMP JUMPDEST SWAP1 POP PUSH2 0x374B DUP5 DUP5 PUSH2 0x1E26 JUMP JUMPDEST ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x37F2 DUP3 PUSH2 0x3B36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3837 JUMPI PUSH2 0xF5F DUP3 DUP3 PUSH2 0x3B92 JUMP JUMPDEST PUSH2 0x1580 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208B DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3876 JUMPI PUSH2 0x3876 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x389E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3C27 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO DUP1 ISZERO PUSH2 0x38C3 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x38C1 SWAP2 SWAP1 PUSH2 0x49D7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF5F JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38EF DUP4 DUP4 PUSH2 0x3847 JUMP JUMPDEST PUSH2 0x3925 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xCF8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xCF8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3967 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3959 DUP9 DUP3 DUP6 DUP6 PUSH2 0x3C35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3973 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x398E JUMPI PUSH2 0x398E PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x3997 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39AB JUMPI PUSH2 0x39AB PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x39C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x39DD JUMPI PUSH2 0x39DD PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x39FE JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A12 JUMPI PUSH2 0x3A12 PUSH2 0x4DE8 JUMP JUMPDEST SUB PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xF92 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3D PUSH2 0x2623 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x36F0 JUMPI PUSH1 0x0 PUSH2 0x3A71 PUSH1 0x1 DUP4 PUSH2 0x4A0A JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3A85 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x4A0A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3AEA JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3AA5 JUMPI PUSH2 0x3AA5 PUSH2 0x4954 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3AC8 JUMPI PUSH2 0x3AC8 PUSH2 0x4954 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x3AFB JUMPI PUSH2 0x3AFB PUSH2 0x4DD2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xCF8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x3B63 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4E5F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BAF SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BFF DUP6 DUP4 DUP4 PUSH2 0x3CFA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x264F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x208B DUP4 DUP4 PUSH1 0x0 PUSH2 0x3D46 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x3C66 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x3CF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CBA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3CE6 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x3CF0 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3D0F JUMPI PUSH2 0x3D0A DUP3 PUSH2 0x3DE3 JUMP JUMPDEST PUSH2 0x208B JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D26 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xE21 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x3D6B JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH4 0xCD786059 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP2 SWAP1 PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3D87 SWAP2 SWAP1 PUSH2 0x4C74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DC4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DC9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3DD9 DUP7 DUP4 DUP4 PUSH2 0x3CFA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3DF3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x3E75 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3E75 JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x3E65 SWAP1 DUP3 PUSH2 0x4BA2 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3E4F JUMP JUMPDEST POP PUSH2 0x3E81 SWAP3 SWAP2 POP PUSH2 0x3ED9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x3E91 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x3EA1 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 PUSH2 0x3EF6 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x11FE SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E81 JUMPI PUSH1 0x0 PUSH2 0x3EED DUP3 DUP3 PUSH2 0x3E85 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3ED9 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3E81 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3EF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x208B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F50 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F38 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F71 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3FD2 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x3FC0 DUP4 DUP4 MLOAD PUSH2 0x3F59 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FA4 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F85 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x402A JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x400E JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4089 JUMPI PUSH2 0x4089 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40AA JUMPI PUSH2 0x40AA PUSH2 0x404B JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x40DC PUSH2 0x40D7 DUP3 PUSH2 0x4091 JUMP JUMPDEST PUSH2 0x4061 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x40F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x412F DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x413F DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x416D DUP8 DUP3 DUP9 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x418B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1E DUP5 DUP3 DUP6 ADD PUSH2 0x40B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x41C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x41CD DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x41DD DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x41FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x421B JUMPI PUSH2 0x421B PUSH2 0x404B JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x422A DUP4 DUP3 ADD PUSH2 0x4061 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x4244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x4280 JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x4262 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4270 DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x40B8 JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x424A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x429E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E1E DUP5 DUP3 DUP6 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x42DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x42E8 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x42F8 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x4308 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x433F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x434B DUP12 DUP3 DUP13 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x43A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4036 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x43D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x43E0 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x43F0 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x4407 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4417 DUP2 PUSH2 0x4036 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x444E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x445A DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x448D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x44A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44B0 DUP9 DUP4 DUP10 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x44C9 DUP3 PUSH2 0x4469 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x44DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x416D DUP8 DUP3 DUP9 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4512 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4522 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4532 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x456D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4578 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4593 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x45DB DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x460C DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4633 DUP9 DUP3 DUP10 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4417 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x208B DUP2 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46D5 DUP7 DUP4 DUP8 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4769 JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4757 DUP7 DUP6 MLOAD PUSH2 0x3F59 JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x473B JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4789 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3F85 JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47D9 JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x47C7 DUP4 DUP4 MLOAD PUSH2 0x46F8 JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x47AB JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x480E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4819 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4036 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x208B DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x488A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4896 DUP6 DUP3 DUP7 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x43B2 DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x402A JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x48C3 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46F8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x490E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4931 DUP7 DUP4 DUP8 ADD PUSH2 0x40B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4947 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459F DUP6 DUP3 DUP7 ADD PUSH2 0x41EE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x49A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x49B1 PUSH2 0x40D7 DUP3 PUSH2 0x4091 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x49C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BFF DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x208B DUP2 PUSH2 0x4469 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0xC0 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4A47 PUSH1 0xC0 DUP5 ADD DUP9 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x80 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP2 AND PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A7B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A9B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4AB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4AEE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0x49F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x208B DUP2 PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4B66 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4B85 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B72 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BBB JUMPI PUSH2 0x4BBB PUSH2 0x404B JUMP JUMPDEST PUSH2 0x4BCF DUP2 PUSH2 0x4BC9 DUP5 SLOAD PUSH2 0x4A67 JUMP JUMPDEST DUP5 PUSH2 0x4B3D JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4BFE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x4BEC JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x4BF6 DUP6 DUP3 PUSH2 0x4B8D JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x4B85 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C2D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4C0E JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x4C4B JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1E1E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F59 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4C86 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F35 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x4C9E DUP2 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x4CB6 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4CCB JUMPI PUSH2 0x4CFA JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4CFA JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4CF1 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x4CD8 JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x4D11 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4D1B DUP3 SLOAD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4D32 JUMPI PUSH2 0x4D32 PUSH2 0x404B JUMP JUMPDEST PUSH2 0x4D40 DUP2 PUSH2 0x4BC9 DUP5 SLOAD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4D6E JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x4D5C JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x4D66 DUP5 DUP3 PUSH2 0x4B8D JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x14DC JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DA8 JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x4D88 JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x4C4B JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x7358221220D4FE PUSH10 0x5F798B2CDBD93AC75ABF 0xC2 SWAP16 PUSH20 0xFF41617D251FF28AEA4F45601429B4C364736F6C PUSH4 0x43000818 STOP CALLER ", + "sourceMap": "2613:24241:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;470:14:31;;463:22;445:41;;433:2;418:18;1695:212:1;;;;;;;;22529:530:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1360:126:25:-;;;;;;;;;;-1:-1:-1;1360:126:25;-1:-1:-1;;;;;;;;;;;1360:126:25;;;;;2062:25:31;;;2050:2;2035:18;1360:126:25;1916:177:31;14066:235:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14801:153:24:-;;;;;;;;;;-1:-1:-1;14801:153:24;;;;;:::i;:::-;-1:-1:-1;;;14801:153:24;;;;;;;;;;-1:-1:-1;;;;;;4773:33:31;;;4755:52;;4743:2;4728:18;14801:153:24;4611:202:31;20676:150:24;;;;;;;;;;-1:-1:-1;20676:150:24;;;;;:::i;:::-;;:::i;15912:256::-;;;;;;;;;;-1:-1:-1;15912:256:24;;;;;:::i;:::-;;:::i;:::-;;21724:281;;;;;;;;;;-1:-1:-1;21724:281:24;;;;;:::i;:::-;;:::i;1674:108:25:-;;;;;;;;;;-1:-1:-1;1674:108:25;-1:-1:-1;;;;;;;;;;;1674:108:25;;9182:1802;;;;;;;;;;-1:-1:-1;9182:1802:25;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;16402:217:30:-;;;;;;;;;;;;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;14461:184:24:-;;;;;;;;;;-1:-1:-1;14461:184:24;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;21251:185:24:-;;;;;;;;;;-1:-1:-1;21251:185:24;;;;;:::i;:::-;;:::i;3336:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3336:68:24;;7833:892;;;;;;;;;;-1:-1:-1;7833:892:24;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;3810:78:24:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3810:78:24;;22123:287;;;;;;;;;;-1:-1:-1;22123:287:24;;;;;:::i;:::-;;:::i;17710:164::-;;;;;;;;;;-1:-1:-1;17710:164:24;;;;;:::i;:::-;;:::i;9634:218:30:-;;;;;;;;;;;;;:::i;17122:277:24:-;;;;;;;;;;-1:-1:-1;17122:277:24;;;;;:::i;:::-;;:::i;6805:617:25:-;;;;;;;;;;-1:-1:-1;6805:617:25;;;;;:::i;:::-;;:::i;4158:214:3:-;;;;;;:::i;:::-;;:::i;9333:164:24:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25123:486::-;;;;;;;;;;-1:-1:-1;25123:486:24;;;;;:::i;:::-;;:::i;3705:134:3:-;;;;;;;;;;;;;:::i;13896:466:24:-;;;;;;;;;;-1:-1:-1;13896:466:24;;;;;:::i;:::-;;:::i;26286:170::-;;;;;;;;;;-1:-1:-1;26286:170:24;;;;;:::i;:::-;;:::i;11891:352:30:-;;;;;;;;;;-1:-1:-1;11891:352:30;;;;;:::i;:::-;;:::i;3527:80:24:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3527:80:24;;11871:2079:25;;;;;;;;;;-1:-1:-1;11871:2079:25;;;;;:::i;:::-;;:::i;5241:229:26:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;23660:140:24:-;;;;;;;;;;-1:-1:-1;23660:140:24;;;;;:::i;:::-;;:::i;26704:148::-;;;;;;;;;;-1:-1:-1;26704:148:24;;;;;:::i;:::-;;:::i;18652:220::-;;;;;;;;;;-1:-1:-1;18652:220:24;;;;;:::i;:::-;;:::i;23930:146::-;;;;;;;;;;-1:-1:-1;23930:146:24;;;;;:::i;:::-;;:::i;19829:745::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;4288:82::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4288:82:24;;18618:362:30;;;;;;;;;;-1:-1:-1;18618:362:30;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3980:70:24:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3980:70:24;;18961:226;;;;;;;;;;-1:-1:-1;18961:226:24;;;;;:::i;:::-;;:::i;11403:347:30:-;;;;;;;;;;-1:-1:-1;11403:347:30;;;;;:::i;:::-;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;14542:433:25:-;;;;;;;;;;-1:-1:-1;14542:433:25;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;15405:233:24:-;;;;;;;;;;-1:-1:-1;15405:233:24;;;;;:::i;:::-;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;23382:151:24;;;;;;;;;;-1:-1:-1;23382:151:24;;;;;:::i;:::-;;:::i;17980:227::-;;;;;;;;;;-1:-1:-1;17980:227:24;;;;;:::i;:::-;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;20951:180:24;;;;;;;;;;-1:-1:-1;20951:180:24;;;;;:::i;:::-;;:::i;9055:163::-;;;;;;;;;;;;;:::i;9599:159::-;;;;;;;;;;;;;:::i;25691:264::-;;;;;;;;;;-1:-1:-1;25691:264:24;;;;;:::i;:::-;;:::i;7544:547:25:-;;;;;;;;;;-1:-1:-1;7544:547:25;;;;;:::i;:::-;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;24521:151:24:-;;;;;;;;;;-1:-1:-1;24521:151:24;;;;;:::i;:::-;;:::i;4473:76::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4473:76:24;;15608:231:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;10490:320:30:-;;;;;;;;;;-1:-1:-1;10490:320:30;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11400:129:24:-;;;;;;;;;;-1:-1:-1;11400:129:24;;;;;:::i;:::-;;:::i;24738:132::-;;;;;;;;;;-1:-1:-1;24738:132:24;;;;;:::i;:::-;;:::i;15971:179:25:-;;;;;;;;;;;;;:::i;18184:237:30:-;;;;;;;;;;;;;:::i;10942:317::-;;;;;;;;;;-1:-1:-1;10942:317:30;;;;;:::i;:::-;;:::i;18312:230:24:-;;;;;;;;;;-1:-1:-1;18312:230:24;;;;;:::i;:::-;;:::i;6506:171:25:-;;;;;;;;;;;;;:::i;5750:286:26:-;;;;;;;;;;-1:-1:-1;5750:286:26;;;;;:::i;:::-;;:::i;13069:313:24:-;;;;;;;;;;-1:-1:-1;13069:313:24;;;;;:::i;:::-;;:::i;17482:146::-;;;;;;;;;;-1:-1:-1;17482:146:24;;;;;:::i;:::-;;:::i;3147:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3147:66:24;;1695:212:1;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;22529:530:24:-;22579:28;22619:37;22659:24;:22;:24::i;:::-;22619:64;;22694:35;22745:20;:27;-1:-1:-1;;;;;22732:41:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22694:79;;22789:9;22784:232;22808:20;:27;22804:1;:31;22784:232;;;22899:19;:17;:19::i;:::-;-1:-1:-1;;;;;22881:69:24;;22968:20;22989:1;22968:23;;;;;;;;:::i;:::-;;;;;;;22881:124;;;;;;;;;;;;;2062:25:31;;2050:2;2035:18;;1916:177;22881:124:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22881:124:24;;;;;;;;;;;;:::i;:::-;22856:19;22876:1;22856:22;;;;;;;;:::i;:::-;;;;;;;;;;:149;22837:3;;22784:232;;;-1:-1:-1;23033:19:24;22529:530;-1:-1:-1;;22529:530:24:o;14066:235:30:-;14129:30;14171:37;14211:33;:31;:33::i;:::-;14171:73;;14261:33;:1;:24;;:31;:33::i;:::-;14254:40;;;14066:235;:::o;20676:150:24:-;20747:11;20777:42;20791:27;20806:11;20791:14;:27::i;15912:256::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;16029:16:24;::::1;16025:77;;16068:23;;-1:-1:-1::0;;;16068:23:24::1;;;;;;;;;;;16025:77;16111:50;::::0;-1:-1:-1;;;16111:50:24;;16142:4:::1;16111:50;::::0;::::1;22418:34:31::0;-1:-1:-1;;;;;22488:15:31;;;22468:18;;;22461:43;22520:18;;;22513:34;;;16111:22:24;::::1;::::0;::::1;::::0;22353:18:31;;16111:50:24::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15912:256:::0;;;;:::o;21724:281::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;21832:9:24::1;21827:172;21851:12;:19;21847:1;:23;21827:172;;;21891:19;21913:31;21928:12;21941:1;21928:15;;;;;;;;:::i;:::-;;;;;;;21913:14;:31::i;:::-;21891:53;;21958:30;21976:11;21958:17;:30::i;:::-;-1:-1:-1::0;21872:3:24::1;;21827:172;;;;21724:281:::0;;:::o;9182:1802:25:-;9449:14;;-1:-1:-1;;;;;9555:30:25;;9580:4;9555:30;9551:103;;9629:13;9608:35;;-1:-1:-1;;;9608:35:25;;;;;;;;:::i;:::-;;;;;;;;9551:103;9741:19;:17;:19::i;:::-;-1:-1:-1;;;;;9723:50:25;;9774:11;9723:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9718:133;;9828:11;9809:31;;-1:-1:-1;;;9809:31:25;;;;;;;;:::i;9718:133::-;9927:9;9908:15;:28;9904:90;;9959:24;;-1:-1:-1;;;9959:24:25;;;;;2062:25:31;;;2035:18;;9959:24:25;1916:177:31;9904:90:25;10039:98;10053:13;10068:11;10081:5;10088:7;10097:6;10105:9;10116;10127;10039:13;:98::i;:::-;10030:107;;10203:20;10216:6;10203:12;:20::i;:::-;10198:90;;10270:6;10246:31;;-1:-1:-1;;;10246:31:25;;;;;;;;:::i;10198:90::-;10298:30;10331:26;:24;:26::i;:::-;-1:-1:-1;;;;;10399:22:25;;;10367:29;10399:22;;;;;;;;;;;:29;;;;;;;;;10530:17;;;;10298:59;;-1:-1:-1;10399:29:25;10521:26;;10517:104;;;10592:17;;;;10570:40;;-1:-1:-1;;;10570:40:25;;;;10584:6;;10570:40;;;:::i;10517:104::-;10731:18;;10720:29;;10716:110;;10796:18;;10772:43;;-1:-1:-1;;;10772:43:25;;;;10787:7;;10772:43;;;:::i;10716:110::-;10919:17;;;;10910:26;;:6;:26;:::i;:::-;10894:42;;10947:30;;9182:1802;;;;;;;;;;;:::o;16402:217:30:-;16467:4;16483:37;16523:33;:31;:33::i;:::-;16573:14;;:39;;;;16402:217;-1:-1:-1;;16402:217:30:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;14461:184:24:-;3251:21:5;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;14567:20:24::2;:36;14604:24;:22;:24::i;:::-;14630:7;14567:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3282:1:5::1;3293:20:::0;:18;:20::i;:::-;14461:184:24;:::o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;21251:185:24:-;21331:28;21378:51;21401:27;21416:11;21401:14;:27::i;7833:892::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;8030:22:24::1;:20;:22::i;:::-;8062:24;:22;:24::i;:::-;8096:22;:20;:22::i;:::-;8129:44;2362:4:0;8160:12:24::0;8129:10:::1;:44::i;:::-;;8183;-1:-1:-1::0;;;;;;;;;;;8214:12:24::1;8183:10;:44::i;:::-;;8237:40;-1:-1:-1::0;;;;;;;;;;;8264:12:24::1;8237:10;:40::i;:::-;;8287:35;-1:-1:-1::0;;;;;;;;;;;8313:8:24::1;8287:10;:35::i;:::-;;8333:26;8362:22;:20;:22::i;:::-;8395:20:::0;;-1:-1:-1;;;;;8395:20:24;;::::1;-1:-1:-1::0;;;;;;8395:20:24;;::::1;;::::0;;;8425:15;::::1;:30:::0;;;;::::1;::::0;;;::::1;;::::0;;8465:16:::1;::::0;::::1;:32:::0;;;8333:51;-1:-1:-1;8572:8:24::1;8627;8661:57;8572:8:::0;8627;8661:22:::1;:57::i;:::-;8020:705;;;5070:14:2::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;23513:50:31;;5142:14:2;;23501:2:31;23486:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;7833:892:24;;;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:4;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;22123:287:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;22234:9:24::1;22229:175;22253:12;:19;22249:1;:23;22229:175;;;22293:19;22315:31;22330:12;22343:1;22330:15;;;;;;;;:::i;22315:31::-;22293:53;;22360:33;22381:11;22360:20;:33::i;:::-;-1:-1:-1::0;22274:3:24::1;;22229:175;;17710:164:::0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17819:48:24::1;17834:27;17849:11;17834:14;:27::i;:::-;17863:3;17819:14;:48::i;9634:218:30:-:0;9686:30;9728:37;9768:33;:31;:33::i;:::-;9728:73;-1:-1:-1;9818:27:30;9728:73;9818:25;:27::i;17122:277:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17317:75:24::1;17329:27;17344:11;17329:14;:27::i;:::-;17358:3;17363:12;17377:14;17317:11;:75::i;:::-;17122:277:::0;;;;;:::o;6805:617:25:-;7112:289;;;-1:-1:-1;;;;;;;;;;;7112:289:25;;;23917:25:31;-1:-1:-1;;;;;24016:15:31;;;23996:18;;;23989:43;;;;24068:15;;;24048:18;;;24041:43;24120:15;;;24100:18;;;24093:43;24152:19;;;24145:35;;;24196:19;;;24189:35;;;24240:19;;;24233:35;;;24284:19;;;24277:35;;;7047:7:25;;23889:19:31;;7112:289:25;;;;;;;;;;;;;7085:330;;;;;;7066:349;;6805:617;;;;;;;;;:::o;4158:214:3:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;9333:164:24:-;9388:7;9407:26;9436:22;:20;:22::i;:::-;9475:15;;;-1:-1:-1;;;;;9475:15:24;;9333:164;-1:-1:-1;;9333:164:24:o;25123:486::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25289:28:24::1;25308:8;25289:18;:28::i;:::-;25358:37;-1:-1:-1::0;;;;;;;;;;;25391:3:24::1;25358:10;:37::i;:::-;;25405:38;-1:-1:-1::0;;;;;;;;;;;25439:3:24::1;25405:10;:38::i;:::-;;25453:36;-1:-1:-1::0;;;;;;;;;;;25485:3:24::1;25453:10;:36::i;:::-;-1:-1:-1::0;25505:22:24::1;::::0;-1:-1:-1;;;;;25505:22:24;::::1;::::0;::::1;::::0;;;::::1;25570:32;-1:-1:-1::0;;;;;25570:22:24;::::1;25593:8:::0;25570:22:::1;:32::i;3705:134:3:-:0;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:3;:::o;13896:466:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;14150:20:24::1;:37;14201:24;:22;:24::i;:::-;14239:11;14264:3;14281:19;14314:5;14333:12;14150:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;26286:170:::0;3251:21:5;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;26388:26:24::2;26407:6;26388:18;:26::i;:::-;26424:25;26442:6;26424:17;:25::i;:::-;3282:1:5::1;3293:20:::0;:18;:20::i;11891:352:30:-;11973:28;12013:37;12053:33;:31;:33::i;:::-;12013:73;;12136:35;12156:11;12169:1;12136:19;:35::i;:::-;12189:1;:20;;:33;12210:11;12189:33;;;;;;;;;;;:47;;12182:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11891:352;;;:::o;11871:2079:25:-;3251:21:5;:19;:21::i;:::-;12215:14:25::1;12231:21:::0;12256:203:::1;12282:13;12309:11;12334:5;12353:7;12374:6;12394:9;12417;12440;12256:12;:203::i;:::-;12214:245;;;;12586:67;12600:6;12608:5;12615:7;12624:6;12632:9;12643;12586:13;:67::i;:::-;12774:20;12876:5;12832:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;12814:56:25::1;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12798:74;::::0;:13;:74:::1;:::i;:::-;12797:84;;;;:::i;:::-;12774:107:::0;-1:-1:-1;12946:27:25::1;12976:28;12774:107:::0;12976:13;:28:::1;:::i;:::-;12946:58;;13114:11;-1:-1:-1::0;;;;;13097:28:25::1;:13;-1:-1:-1::0;;;;;13097:28:25::1;;13093:171;;13141:30;13174:26;:24;:26::i;:::-;13141:59;;13240:13;13214:1;:22;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;13093:171:25::1;13332:92;13411:12;13358:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;13340:57:25::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13332:78:25::1;::::0;::::1;:92::i;:::-;13502:51;-1:-1:-1::0;;;;;13502:30:25;::::1;13533:19:::0;13502:30:::1;:51::i;:::-;13599:344;::::0;;-1:-1:-1;;;;;26693:15:31;;;26675:34;;26745:15;;;26740:2;26725:18;;26718:43;26777:18;;;26770:34;;;26835:2;26820:18;;26813:34;;;26878:3;26863:19;;26856:35;;;26655:3;26907:19;;26900:35;;;13599:344:25;;::::1;::::0;;::::1;::::0;::::1;::::0;26624:3:31;26609:19;13599:344:25::1;;;;;;;12137:1813;;;;3293:20:5::0;:18;:20::i;5241:229:26:-;5295:23;5320:24;5356:25;5384:21;:19;:21::i;:::-;5356:49;;5423:1;:18;;;5443:1;:19;;;5415:48;;;;;5241:229;;:::o;23660:140:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23758:35:24::1;23777:15;23758:18;:35::i;26704:148::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;26808:37:24::1;26831:5;26838:6;26808:22;:37::i;18652:220::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18803:62:24::1;18825:27;18840:11;18825:14;:27::i;:::-;18854:10;18803:21;:62::i;23930:146::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24031:38:24::1;24053:15;24031:21;:38::i;19829:745::-:0;19882:28;19912:25;20016:31;20050:21;:19;:21::i;:::-;20016:55;;20081:29;20126:14;:21;-1:-1:-1;;;;;20113:35:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20081:67;;20158:42;20217:14;:21;-1:-1:-1;;;;;20203:36:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;20158:81;;20255:9;20250:258;20274:14;:21;20270:1;:25;20250:258;;;20353:19;:17;:19::i;:::-;-1:-1:-1;;;;;20335:69:24;;20405:14;20420:1;20405:17;;;;;;;;:::i;:::-;;;;;;;20335:88;;;;;;;;;;;;;2062:25:31;;2050:2;2035:18;;1916:177;20335:88:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20335:88:24;;;;;;;;;;;;:::i;:::-;20316:13;20330:1;20316:16;;;;;;;;:::i;:::-;;;;;;:107;;;;20468:29;20479:14;20494:1;20479:17;;;;;;;;:::i;:::-;;;;;;;20468:10;:29::i;:::-;20437:25;20463:1;20437:28;;;;;;;;:::i;:::-;;;;;;;;;;:60;20297:3;;20250:258;;;-1:-1:-1;20526:13:24;;20541:25;;-1:-1:-1;19829:745:24;-1:-1:-1;;19829:745:24:o;18618:362:30:-;18692:17;18721:37;18761:33;:31;:33::i;:::-;18721:73;-1:-1:-1;18810:48:30;:24;;;18844:13;18810:33;:48::i;:::-;18805:123;;18903:13;18881:36;;-1:-1:-1;;;18881:36:30;;;;;;;;:::i;18805:123::-;-1:-1:-1;;;;;18945:28:30;;;;;;:13;;;:28;;;;;18938:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18618:362;;;:::o;18961:226:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19115:65:24::1;19140:27;19155:11;19140:14;:27::i;:::-;19169:10;19115:24;:65::i;11403:347:30:-:0;11487:19;11518:37;11558:33;:31;:33::i;:::-;11518:73;;11641:35;11661:11;11674:1;11641:19;:35::i;:::-;11694:33;;;;:20;;:33;;-1:-1:-1;11694:33:30;;;:49;;;;;;11403:347::o;2492:233:1:-;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;14542:433:25:-;14640:19;14661:18;14681:21;14704;14737:30;14770:26;:24;:26::i;:::-;-1:-1:-1;;;;;14838:23:25;;;14806:29;14838:23;;;;;;;;;;;:30;;;;;;;;;-1:-1:-1;;;14838:30:25;;;;14886:18;;14906:17;;;;14925:20;;;;14947;;;;;14886:18;;14906:17;;-1:-1:-1;14925:20:25;;-1:-1:-1;14947:20:25;14542:433::o;15405:233:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;15519:16:24;::::1;15515:77;;15558:23;;-1:-1:-1::0;;;15558:23:24::1;;;;;;;;;;;15515:77;15601:30;-1:-1:-1::0;;;;;15601:18:24;::::1;15620:2:::0;15624:6;15601:18:::1;:30::i;23382:151::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23484:42:24::1;23513:12;23484:28;:42::i;17980:227::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18130:70:24::1;18156:27;18171:11;18156:14;:27::i;:::-;18185:14;18130:25;:70::i;20951:180::-:0;21033:19;21071:53;21096:27;21111:11;21096:14;:27::i;9055:163::-;9114:7;9133:26;9162:22;:20;:22::i;:::-;9201:10;-1:-1:-1;;;;;9201:10:24;;9055:163;-1:-1:-1;;9055:163:24:o;9599:159::-;9648:7;9667:26;9696:22;:20;:22::i;:::-;9735:16;;;;9599:159;-1:-1:-1;;9599:159:24:o;25691:264::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25774:38:24::1;-1:-1:-1::0;;;;;;;;;;;25808:3:24::1;25774:11;:38::i;:::-;;25822:39;-1:-1:-1::0;;;;;;;;;;;25857:3:24::1;25822:11;:39::i;:::-;;25871:37;-1:-1:-1::0;;;;;;;;;;;25904:3:24::1;25871:11;:37::i;:::-;-1:-1:-1::0;25924:24:24::1;::::0;-1:-1:-1;;;;;25924:24:24;::::1;::::0;::::1;::::0;;;::::1;25691:264:::0;;:::o;7544:547:25:-;7782:7;7917:20;:18;:20::i;:::-;7959:93;7979:13;7994:11;8007:5;8014:7;8023:6;8031:9;8042;7959:19;:93::i;:::-;7847:223;;-1:-1:-1;;;7847:223:25;;;27204:27:31;27247:11;;;27240:27;;;;27283:12;;;27276:28;27320:12;;7847:223:25;26946:392:31;2893:222:1;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;:::-;3072:36;2893:222;-1:-1:-1;;;2893:222:1:o;24521:151:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24631:34:24::1;24645:13;24660:4;24631:13;:34::i;15608:231:30:-:0;15667:23;15702:37;15742:33;:31;:33::i;:::-;15702:73;-1:-1:-1;15792:40:30;:31;;;:38;:40::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;10490:320:30:-:0;10560:22;;:::i;:::-;10594:37;10634:33;:31;:33::i;:::-;10594:73;;10717:35;10737:11;10750:1;10717:19;:35::i;:::-;10770:33;;;;:20;;;;:33;;;;;;;;10763:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10770:33;;10763:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10763:40:30;;-1:-1:-1;10763:40:30;;10490:320;-1:-1:-1;;;;10490:320:30:o;11400:129:24:-;11465:4;11488:34;-1:-1:-1;;;;;;;;;;;11518:3:24;11488:7;:34::i;24738:132::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24832:31:24::1;24849:13;24832:16;:31::i;15971:179:25:-:0;16026:7;16045:30;16078:26;:24;:26::i;:::-;16121:22;;;;15971:179;-1:-1:-1;;15971:179:25:o;18184:237:30:-;18247:32;18291:37;18331:33;:31;:33::i;:::-;18291:73;;18381:33;:1;:24;;:31;:33::i;10942:317::-;11015:11;11038:37;11078:33;:31;:33::i;:::-;11038:73;;11161:35;11181:11;11194:1;11161:19;:35::i;:::-;11214:33;;;;:20;;:33;;-1:-1:-1;11214:33:30;;;:38;;10942:317::o;18312:230:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18469:66:24::1;18493:27;18508:11;18493:14;:27::i;:::-;18522:12;18469:23;:66::i;6506:171:25:-:0;6557:7;6576:30;6609:26;:24;:26::i;5750:286:26:-;5843:19;5864:23;5899:25;5927:21;:19;:21::i;:::-;-1:-1:-1;;;;;5966:33:26;;;:24;:33;;;;;;;;;;;;6001:18;;;;:27;;;;;;5966:33;;5750:286;-1:-1:-1;;;5750:286:26:o;13069:313:24:-;3251:21:5;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;13269:26:24::2;13288:6;13269:18;:26::i;:::-;13306:27;-1:-1:-1::0;;;;;13306:19:24;::::2;13326:6:::0;13306:19:::2;:27::i;:::-;13357:9;-1:-1:-1::0;;;;;13348:27:24::2;;13368:6;13348:27;;;;2062:25:31::0;;2050:2;2035:18;;1916:177;13348:27:24::2;;;;;;;;3282:1:5::1;3293:20:::0;:18;:20::i;17482:146:24:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;17578:43:24::1;17593:27;17608:11;17593:14;:27::i;:::-;17578:14;:43::i;3443:202:0:-:0;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1133:40:6;;;3602:36:0;1034:146:6;2450:198:30;2597:35;;2450:198::o;7776:300:23:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;19329:200:24:-;19402:19;19458;:17;:19::i;:::-;-1:-1:-1;;;;;19440:69:24;;19510:11;19440:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4148:103:0:-;4214:30;4225:4;966:10:4;4214::0;:30::i;13002:360:30:-;13077:37;13117:33;:31;:33::i;:::-;13077:73;-1:-1:-1;13161:10:30;13174:41;:24;;;13203:11;13174:28;:41::i;:::-;13161:54;;13231:5;13226:83;;13259:39;;-1:-1:-1;;;13259:39:30;;;;;2062:25:31;;;2035:18;;13259:39:30;1916:177:31;13226:83:30;13324:31;;2062:25:31;;;13324:31:30;;2050:2:31;2035:18;13324:31:30;;;;;;;;13067:295;;13002:360;:::o;8234:476:25:-;8504:14;8530;8547:89;8563:13;8578:11;8591:5;8598:7;8607:6;8615:9;8626;8547:15;:89::i;:::-;8530:106;-1:-1:-1;8655:25:25;8530:106;8670:9;8655:14;:25::i;:::-;8646:34;8234:476;-1:-1:-1;;;;;;;;;;8234:476:25:o;3915:177::-;4048:28;;3915:177::o;2787::0:-;2920:28;;2787:177::o;3326:384:5:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:5;3522:88;;3569:30;;-1:-1:-1;;;3569:30:5;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;3716:283::-;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:5:o;3217:348:1:-;3303:4;3319:40;3362:36;:34;:36::i;:::-;3319:79;;3408:12;3423:31;3440:4;3446:7;3423:16;:31::i;:::-;3408:46;;3468:7;3464:71;;;3491:14;:20;;;;;;;;;;:33;;3516:7;3491:24;:33::i;:::-;;3551:7;3217:348;-1:-1:-1;;;;3217:348:1:o;8737:170:2:-;8870:21;;8737:170::o;3231:65:0:-;6931:20:2;:18;:20::i;:::-;3231:65:0:o;6152:287:25:-;6931:20:2;:18;:20::i;:::-;6220:30:25::1;6253:26;:24;:26::i;:::-;6334:88;::::0;6220:59;;-1:-1:-1;6334:88:25::1;::::0;-1:-1:-1;;;;;;;;;;;1716:66:25;6362:28:::1;::::0;6392:14:::1;::::0;6408:13:::1;::::0;6334:88:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;6334:88:25;;::::1;::::0;;;;;;6311:121;;6334:88:::1;6311:121:::0;;::::1;::::0;6290:18:::1;::::0;;::::1;:142:::0;6152:287::o;5386:165:24:-;5511:24;;5386:165::o;2624:269:26:-;6931:20:2;:18;:20::i;:::-;2743:25:26::1;2771:21;:19;:21::i;:::-;2802:18;::::0;::::1;:36:::0;;;;-1:-1:-1;2848:19:26::1;::::0;;::::1;:38:::0;2624:269::o;3668:353:1:-;3755:4;3771:40;3814:36;:34;:36::i;:::-;3771:79;;3860:12;3875:32;3893:4;3899:7;3875:17;:32::i;:::-;3860:47;;3921:7;3917:74;;;3944:14;:20;;;;;;;;;;:36;;3972:7;3944:27;:36::i;13565:371:30:-;13643:37;13683:33;:31;:33::i;:::-;13643:73;-1:-1:-1;13727:12:30;13742:44;:24;;;13774:11;13742:31;:44::i;:::-;13727:59;;13802:7;13797:84;;13832:38;;-1:-1:-1;;;13832:38:30;;;;;2062:25:31;;;2035:18;;13832:38:30;1916:177:31;13797:84:30;13896:33;;2062:25:31;;;13896:33:30;;2050:2:31;2035:18;13896:33:30;1916:177:31;6525:356:30;6610:37;6650:33;:31;:33::i;:::-;6610:73;;6733:35;6753:11;6766:1;6733:19;:35::i;:::-;6779:33;;;;:20;;;:33;;;;;;;:44;;;6839:35;;;;;6800:11;;6820:3;;6839:35;:::i;5127:670::-;5298:37;5338:33;:31;:33::i;:::-;5298:73;-1:-1:-1;5441:10:30;5454:35;5298:73;5477:11;5454:22;:35::i;:::-;5441:48;;5504:5;5499:77;;5532:33;;-1:-1:-1;;;5532:33:30;;;;;2062:25:31;;;2035:18;;5532:33:30;1916:177:31;5499:77:30;5621:128;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5585:33:30;;;:20;;;;:33;;;;;:164;;;;;;;;;;;-1:-1:-1;;5585:164:30;;;;;;;;;;;;;5621:128;;5585:33;;:164;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5765:25:30;;2062::31;;;5765::30;;-1:-1:-1;2050:2:31;2035:18;5765:25:30;;;;;;;5288:509;;5127:670;;;;:::o;4599:312:3:-;4679:4;-1:-1:-1;;;;;4688:6:3;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:3;:32;:30;:32::i;:::-;-1:-1:-1;;;;;4749:42:3;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:3;;;;;;;;;;;10382:881:24;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10547:29:24::1;10597:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;10579:63:24::1;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10547:97;;10654:25;10682:32;:30;:32::i;:::-;10654:60;;10821:17;-1:-1:-1::0;;;;;10800:38:24::1;:17;-1:-1:-1::0;;;;;10800:38:24::1;::::0;10796:138:::1;;10886:17;10905;10861:62;;-1:-1:-1::0;;;10861:62:24::1;;;;;;;;;:::i;10796:138::-;11058:21;-1:-1:-1::0;;;;;11037:42:24::1;:17;-1:-1:-1::0;;;;;11037:42:24::1;;11033:153;;11134:21;11157:17;11102:73;;-1:-1:-1::0;;;11102:73:24::1;;;;;;;;;:::i;11033:153::-;11238:17;-1:-1:-1::0;;;;;11201:55:24::1;11219:17;-1:-1:-1::0;;;;;11201:55:24::1;;;;;;;;;;;10478:785;;10382:881:::0;;:::o;6052:538:3:-;6169:17;-1:-1:-1;;;;;6151:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:3;;;;;;;;-1:-1:-1;;6151:52:3;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:3;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:3;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:3;;;;;2062:25:31;;;2035:18;;6312:34:3;1916:177:31;6241:120:3;6374:54;6404:17;6423:4;6374:29;:54::i;11706:1044:24:-;11773:21;11797:18;:16;:18::i;:::-;11773:42;;11825:27;11855:24;:22;:24::i;:::-;11825:54;;12058:13;12036:19;:35;12032:712;;;12325:19;12347:35;12363:19;12347:13;:35;:::i;:::-;12325:57;-1:-1:-1;12396:26:24;12425:35;12325:57;12425:21;:35;:::i;:::-;12396:64;;12615:18;12606:6;:27;12602:132;;;12660:59;;-1:-1:-1;;;12660:59:24;;;;;28692:25:31;;;28733:18;;;28726:34;;;28776:18;;;28769:34;;;28665:18;;12660:59:24;28490:319:31;1531:331:19;1640:6;1616:21;:30;1612:109;;;1704:4;1669:41;;-1:-1:-1;;;1669:41:19;;;;;;;;:::i;1612:109::-;1732:12;1750:9;-1:-1:-1;;;;;1750:14:19;1772:6;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1731:52;;;1798:7;1793:63;;1828:17;;-1:-1:-1;;;1828:17:19;;;;;;;;;;;5028:213:3;5102:4;-1:-1:-1;;;;;5111:6:3;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:3;;;;;;;;;;;3303:1314:26;3365:25;3393:21;:19;:21::i;:::-;3365:49;;3505:1;:18;;;3496:6;:27;3492:116;;;3570:1;:18;;;3590:6;3546:51;;-1:-1:-1;;;3546:51:26;;;;;;;;;:::i;3492:116::-;3918:19;;;;3904:10;3644:19;3879:36;;;;;;;;;;;3666:15;;3879:58;;;:::i;:::-;3865:11;:72;3861:201;;;3972:10;3986:1;3953:30;;;:18;;;:30;;;;;;;;:34;;;4001:36;;;;;;:50;;;3861:201;4200:18;;;;4177:10;4158:30;;;;:18;;;:30;;;;;;:39;;4191:6;;4158:39;:::i;:::-;:60;4154:158;;;4274:1;:18;;;4294:6;4241:60;;-1:-1:-1;;;4241:60:26;;;;;;;;;:::i;4154:158::-;4453:10;4434:30;;;;:18;;;:30;;;;;:40;;4468:6;;4434:30;:40;;4468:6;;4434:40;:::i;:::-;;;;-1:-1:-1;4519:37:26;;-1:-1:-1;4527:10:26;4549:6;4519:29;:37::i;:::-;4572:38;;2062:25:31;;;4591:10:26;;4572:38;;2050:2:31;2035:18;4572:38:26;;;;;;;3355:1262;;3303:1314;:::o;12363:268:30:-;12519:40;:1;12547:11;12519:27;:40::i;:::-;12514:111;;12582:32;;-1:-1:-1;;;12582:32:30;;;;;2062:25:31;;;2035:18;;12582:32:30;1916:177:31;15430:357:25;15629:30;15662:26;:24;:26::i;:::-;15731:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15698:23:25;;;-1:-1:-1;15698:23:25;;;;;;;;;:30;;;;;;;;;;-1:-1:-1;15698:30:25;;;;:82;;;;;;;;;;;;;;;;;;;;;15430:357::o;1289:162:26:-;1412:23;;1289:162::o;14644:345:30:-;14715:37;14755:33;:31;:33::i;:::-;14715:73;-1:-1:-1;14798:10:30;14811:43;:31;;;14847:6;14811:35;:43::i;:::-;14798:56;;14870:5;14865:77;;14924:6;14898:33;;-1:-1:-1;;;14898:33:30;;;;;;;;:::i;14865:77::-;14957:25;14975:6;14957:25;;;;;;:::i;4819:268:26:-;4901:25;4929:21;:19;:21::i;:::-;4960:18;;;:26;;;4996:19;;;:28;;;5040:40;;4901:49;;-1:-1:-1;5040:40:26;;;;4981:5;;5018:6;;5040:40;:::i;8228:408:30:-;8333:37;8373:33;:31;:33::i;:::-;8333:73;;8456:35;8476:11;8489:1;8456:19;:35::i;:::-;8502:33;;;;:20;;;;:33;;;;;;;:47;;;:64;;;;;;;;;;;;;;8555:10;8502:64;;:::i;:::-;;8582:47;8605:11;8618:10;8582:47;;;;;;;:::i;15125:356::-;15199:37;15239:33;:31;:33::i;:::-;15199:73;-1:-1:-1;15282:12:30;15297:46;:31;;;15336:6;15297:38;:46::i;:::-;15282:61;;15359:7;15354:78;;15414:6;15389:32;;-1:-1:-1;;;15389:32:30;;;;;;;;:::i;15354:78::-;15447:27;15467:6;15447:27;;;;;;:::i;8871:165:23:-;8951:4;8974:55;8984:3;-1:-1:-1;;;;;9004:23:23;;8974:9;:55::i;8801:758:30:-;8909:37;8949:33;:31;:33::i;:::-;8909:73;;9032:35;9052:11;9065:1;9032:19;:35::i;:::-;9078:29;9110:33;;;:20;;;;:33;;;;;:47;;9167:386;9191:19;;9187:23;;9167:386;;;9310:10;9293:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;9283:39;;;;;;9262:12;9275:1;9262:15;;;;;;;;:::i;:::-;;;;;;;;9245:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;9235:44;;;;;;:87;9231:312;;9373:19;;9360:12;;9373:23;;9395:1;;9373:23;:::i;:::-;9360:37;;;;;;;;:::i;:::-;;;;;;;;9342:12;9355:1;9342:15;;;;;;;;:::i;:::-;;;;;;;;:55;;;;;;:::i;:::-;;9415:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;9456:49;9481:11;9494:10;9456:49;;;;;;;:::i;:::-;;;;;;;;9523:5;;9231:312;9212:3;;9167:386;;1250:207:1;1403:38;;1250:207::o;9574:156:23:-;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;1303:160:16:-;1385:71;1405:5;1427;-1:-1:-1;;;;;1427:14:16;;1444:2;1448:5;1412:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1412:43:16;;;;;;;;;;;1385:19;:71::i;15973:322:30:-;16069:37;16109:33;:31;:33::i;:::-;16152:14;;;:66;;-1:-1:-1;;16152:66:30;;;;;;;;;;16233:55;;445:41:31;;;16152:14:30;;-1:-1:-1;16233:55:30;;433:2:31;418:18;16233:55:30;;;;;;;16059:236;15973:322;:::o;7067:419::-;7171:37;7211:33;:31;:33::i;:::-;7171:73;;7294:35;7314:11;7327:1;7294:19;:35::i;:::-;7340:33;;;;:20;;;:33;;;;;;;;;:49;;:66;;-1:-1:-1;;7340:66:30;;;;;;;;;;7422:57;;34397:25:31;;;34438:18;;;34431:50;7422:57:30;;34370:18:31;7422:57:30;34229:258:31;9117:115:23;9180:7;9206:19;9214:3;4556:18;;4474:107;17023:439:30;17124:37;17164:33;:31;:33::i;:::-;17124:73;-1:-1:-1;17208:10:30;17221:43;:24;;;17250:13;17221:28;:43::i;:::-;17208:56;;17280:5;17275:81;;17331:13;17308:37;;-1:-1:-1;;;17308:37:30;;;;;;;;:::i;17275:81::-;-1:-1:-1;;;;;17366:28:30;;;;;;:13;;;:28;;;;;:44;17397:13;17366:28;:44;:::i;:::-;-1:-1:-1;17426:29:30;;-1:-1:-1;;;;;17426:29:30;;;;;;;;17114:348;;17023:439;;:::o;17597:412::-;17673:37;17713:33;:31;:33::i;:::-;17673:73;-1:-1:-1;17757:12:30;17772:46;:24;;;17804:13;17772:31;:46::i;:::-;17757:61;;17834:7;17829:82;;17886:13;17864:36;;-1:-1:-1;;;17864:36:30;;;;;;;;:::i;17829:82::-;-1:-1:-1;;;;;17928:28:30;;;;;;:13;;;:28;;;;;17921:35;;;:::i;:::-;17971:31;;-1:-1:-1;;;;;17971:31:30;;;;;;;;17663:346;;17597:412;:::o;7664:404::-;7775:37;7815:33;:31;:33::i;:::-;7775:73;;7898:35;7918:11;7931:1;7898:19;:35::i;:::-;7944:33;;;;:20;;;;:33;;;;;;;;:62;;;;:47;;;;;:62;;;;;:::i;:::-;-1:-1:-1;8022:39:30;;2062:25:31;;;8022:39:30;;2050:2:31;2035:18;8022:39:30;1916:177:31;5940:434:30;6012:37;6052:33;:31;:33::i;:::-;6012:73;-1:-1:-1;6133:12:30;6148:38;6012:73;6174:11;6148:25;:38::i;:::-;6133:53;;6201:7;6196:78;;6231:32;;-1:-1:-1;;;6231:32:30;;;;;2062:25:31;;;2035:18;;6231:32:30;1916:177:31;6196:78:30;6291:33;;;;:20;;;;:33;;;;;6284:40;;;;;;;;-1:-1:-1;;6284:40:30;;;6291:33;;6284:40;;;;6291:33;6284:40;:::i;:::-;-1:-1:-1;;6340:27:30;;2062:25:31;;;6340:27:30;;2050:2:31;2035:18;6340:27:30;1916:177:31;5581:109:23;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;5930:123:23:-;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;3702:255:21:-;3780:7;3800:17;3819:18;3839:16;3859:27;3870:4;3876:9;3859:10;:27::i;:::-;3799:87;;;;;;3896:28;3908:5;3915:8;3896:11;:28::i;:::-;-1:-1:-1;3941:9:21;;3702:255;-1:-1:-1;;;;3702:255:21:o;2251:183:5:-;2388:30;;2251:183::o;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:4;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8316:150:23;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:23;;8409:4;:50::i;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;7892:388:0;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:4;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8634:156:23;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:23;;8730:7;:53::i;6221:129::-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;1957:138:11:-;-1:-1:-1;;;;;;;;;;;2035:53:11;-1:-1:-1;;;;;2035:53:11;;1957:138::o;2779:335::-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:11;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;6431:138:23:-;6511:4;6534:28;6544:3;6556:5;4264:129;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4059:629:16:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:16;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4664:5;4631:40;;-1:-1:-1;;;4631:40:16;;;;;;;;:::i;2241:406:23:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:23;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:23;2618:12;;2129:766:21;2210:7;2219:12;2233:7;2256:9;:16;2276:2;2256:22;2252:637;;2592:4;2577:20;;2571:27;2641:4;2626:20;;2620:27;2698:4;2683:20;;2677:27;2294:9;2669:36;2739:25;2750:4;2669:36;2571:27;2620;2739:10;:25::i;:::-;2732:32;;;;;;;;;;;2252:637;-1:-1:-1;;2860:16:21;;2811:1;;-1:-1:-1;2815:35:21;;2252:637;2129:766;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;-1:-1:-1;;;7439:23:21;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;-1:-1:-1;;;7550:46:21;;;;;2062:25:31;;;2035:18;;7550:46:21;1916:177:31;7479:243:21;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;-1:-1:-1;;;7679:32:21;;;;;2062:25:31;;;2035:18;;7679:32:21;1916:177:31;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;2815:1368:23:-;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:23;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;2186:281:11;2263:17;-1:-1:-1;;;;;2263:29:11;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:11;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:11;;-1:-1:-1;;;;;;2387:73:11;-1:-1:-1;;;;;2387:73:11;;;;;;;;;;2186:281::o;4106:253:19:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:19;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:19:o;6598:122:11:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:11;;;;;;;;;;;2705:151:19;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;5140:1530:21:-;5266:7;;;-1:-1:-1;;;;;6186:79:21;;6182:164;;;-1:-1:-1;6297:1:21;;-1:-1:-1;6301:30:21;;-1:-1:-1;6333:1:21;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;36770:25:31;;;36843:4;36831:17;;36811:18;;;36804:45;;;;36865:18;;;36858:34;;;36908:18;;;36901:34;;;6457:24:21;;36742:19:31;;6457:24:21;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:21;;-1:-1:-1;;6457:24:21;;;-1:-1:-1;;;;;;;6495:20:21;;6491:113;;-1:-1:-1;6547:1:21;;-1:-1:-1;6551:29:21;;-1:-1:-1;6547:1:21;;-1:-1:-1;6531:62:21;;6491:113;6622:6;-1:-1:-1;6630:20:21;;-1:-1:-1;6630:20:21;;-1:-1:-1;5140:1530:21;;;;;;;;;:::o;4625:582:19:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:19;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:19;;;;;;;;:::i;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3394:4;3359:41;;-1:-1:-1;;;3359:41:19;;;;;;;;:::i;3303:108::-;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:19;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:19:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:19;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14:286:31;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:31;;209:43;;199:71;;266:1;263;256:12;497:250;582:1;592:113;606:6;603:1;600:13;592:113;;;682:11;;;676:18;663:11;;;656:39;628:2;621:10;592:113;;;-1:-1:-1;;739:1:31;721:16;;714:27;497:250::o;752:271::-;794:3;832:5;826:12;859:6;854:3;847:19;875:76;944:6;937:4;932:3;928:14;921:4;914:5;910:16;875:76;:::i;:::-;1005:2;984:15;-1:-1:-1;;980:29:31;971:39;;;;1012:4;967:50;;752:271;-1:-1:-1;;752:271:31:o;1028:598::-;1080:3;1111;1143:5;1137:12;1170:6;1165:3;1158:19;1196:4;1225;1220:3;1216:14;1209:21;;1283:4;1273:6;1270:1;1266:14;1259:5;1255:26;1251:37;1322:4;1315:5;1311:16;1345:1;1355:245;1369:6;1366:1;1363:13;1355:245;;;1456:2;1452:7;1444:5;1438:4;1434:16;1430:30;1425:3;1418:43;1482:38;1515:4;1506:6;1500:13;1482:38;:::i;:::-;1578:12;;;;1474:46;-1:-1:-1;1543:15:31;;;;1391:1;1384:9;1355:245;;;-1:-1:-1;1616:4:31;;1028:598;-1:-1:-1;;;;;;;1028:598:31:o;1631:280::-;1830:2;1819:9;1812:21;1793:4;1850:55;1901:2;1890:9;1886:18;1878:6;1850:55;:::i;2098:632::-;2269:2;2321:21;;;2391:13;;2294:18;;;2413:22;;;2240:4;;2269:2;2492:15;;;;2466:2;2451:18;;;2240:4;2535:169;2549:6;2546:1;2543:13;2535:169;;;2610:13;;2598:26;;2679:15;;;;2644:12;;;;2571:1;2564:9;2535:169;;;-1:-1:-1;2721:3:31;;2098:632;-1:-1:-1;;;;;;2098:632:31:o;2735:131::-;-1:-1:-1;;;;;2810:31:31;;2800:42;;2790:70;;2856:1;2853;2846:12;2871:127;2932:10;2927:3;2923:20;2920:1;2913:31;2963:4;2960:1;2953:15;2987:4;2984:1;2977:15;3003:275;3074:2;3068:9;3139:2;3120:13;;-1:-1:-1;;3116:27:31;3104:40;;-1:-1:-1;;;;;3159:34:31;;3195:22;;;3156:62;3153:88;;;3221:18;;:::i;:::-;3257:2;3250:22;3003:275;;-1:-1:-1;3003:275:31:o;3283:186::-;3331:4;-1:-1:-1;;;;;3353:30:31;;3350:56;;;3386:18;;:::i;:::-;-1:-1:-1;3452:2:31;3431:15;-1:-1:-1;;3427:29:31;3458:4;3423:40;;3283:186::o;3474:462::-;3516:5;3569:3;3562:4;3554:6;3550:17;3546:27;3536:55;;3587:1;3584;3577:12;3536:55;3623:6;3610:20;3654:48;3670:31;3698:2;3670:31;:::i;:::-;3654:48;:::i;:::-;3727:2;3718:7;3711:19;3773:3;3766:4;3761:2;3753:6;3749:15;3745:26;3742:35;3739:55;;;3790:1;3787;3780:12;3739:55;3855:2;3848:4;3840:6;3836:17;3829:4;3820:7;3816:18;3803:55;3903:1;3878:16;;;3896:4;3874:27;3867:38;;;;3882:7;3474:462;-1:-1:-1;;;3474:462:31:o;3941:665::-;4036:6;4044;4052;4060;4113:3;4101:9;4092:7;4088:23;4084:33;4081:53;;;4130:1;4127;4120:12;4081:53;4169:9;4156:23;4188:31;4213:5;4188:31;:::i;:::-;4238:5;-1:-1:-1;4295:2:31;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;:::-;4360:7;-1:-1:-1;4414:2:31;4399:18;;4386:32;;-1:-1:-1;4469:2:31;4454:18;;4441:32;-1:-1:-1;;;;;4485:30:31;;4482:50;;;4528:1;4525;4518:12;4482:50;4551:49;4592:7;4583:6;4572:9;4568:22;4551:49;:::i;:::-;4541:59;;;3941:665;;;;;;;:::o;4818:321::-;4887:6;4940:2;4928:9;4919:7;4915:23;4911:32;4908:52;;;4956:1;4953;4946:12;4908:52;4983:23;;-1:-1:-1;;;;;5018:30:31;;5015:50;;;5061:1;5058;5051:12;5015:50;5084:49;5125:7;5116:6;5105:9;5101:22;5084:49;:::i;5326:472::-;5419:6;5427;5435;5488:2;5476:9;5467:7;5463:23;5459:32;5456:52;;;5504:1;5501;5494:12;5456:52;5543:9;5530:23;5562:31;5587:5;5562:31;:::i;:::-;5612:5;-1:-1:-1;5669:2:31;5654:18;;5641:32;5682:33;5641:32;5682:33;:::i;:::-;5326:472;;5734:7;;-1:-1:-1;;;5788:2:31;5773:18;;;;5760:32;;5326:472::o;5803:942::-;5856:5;5909:3;5902:4;5894:6;5890:17;5886:27;5876:55;;5927:1;5924;5917:12;5876:55;5950:20;;5989:4;-1:-1:-1;;;;;6042:10:31;;;6039:36;;;6055:18;;:::i;:::-;6101:2;6098:1;6094:10;6124:28;6148:2;6144;6140:11;6124:28;:::i;:::-;6186:15;;;6256;;;6252:24;;;6217:12;;;;6288:15;;;6285:35;;;6316:1;6313;6306:12;6285:35;6352:2;6344:6;6340:15;6329:26;;6364:352;6380:6;6375:3;6372:15;6364:352;;;6466:3;6453:17;6502:2;6489:11;6486:19;6483:109;;;6546:1;6575:2;6571;6564:14;6483:109;6617:56;6669:3;6664:2;6650:11;6642:6;6638:24;6634:33;6617:56;:::i;:::-;6605:69;;-1:-1:-1;6397:12:31;;;;6694;;;;6364:352;;;6734:5;5803:942;-1:-1:-1;;;;;;;;5803:942:31:o;6750:357::-;6844:6;6897:2;6885:9;6876:7;6872:23;6868:32;6865:52;;;6913:1;6910;6903:12;6865:52;6940:23;;-1:-1:-1;;;;;6975:30:31;;6972:50;;;7018:1;7015;7008:12;6972:50;7041:60;7093:7;7084:6;7073:9;7069:22;7041:60;:::i;7112:1014::-;7243:6;7251;7259;7267;7275;7283;7291;7299;7352:3;7340:9;7331:7;7327:23;7323:33;7320:53;;;7369:1;7366;7359:12;7320:53;7408:9;7395:23;7427:31;7452:5;7427:31;:::i;:::-;7477:5;-1:-1:-1;7534:2:31;7519:18;;7506:32;7547:33;7506:32;7547:33;:::i;:::-;7599:7;-1:-1:-1;7658:2:31;7643:18;;7630:32;7671:33;7630:32;7671:33;:::i;:::-;7723:7;-1:-1:-1;7777:2:31;7762:18;;7749:32;;-1:-1:-1;7828:3:31;7813:19;;7800:33;;-1:-1:-1;7880:3:31;7865:19;;7852:33;;-1:-1:-1;7932:3:31;7917:19;;7904:33;;-1:-1:-1;7988:3:31;7973:19;;7960:33;-1:-1:-1;;;;;8005:30:31;;8002:50;;;8048:1;8045;8038:12;8002:50;8071:49;8112:7;8103:6;8092:9;8088:22;8071:49;:::i;:::-;8061:59;;;7112:1014;;;;;;;;;;;:::o;8131:274::-;-1:-1:-1;;;;;8323:32:31;;;;8305:51;;8387:2;8372:18;;8365:34;8293:2;8278:18;;8131:274::o;8410:180::-;8469:6;8522:2;8510:9;8501:7;8497:23;8493:32;8490:52;;;8538:1;8535;8528:12;8490:52;-1:-1:-1;8561:23:31;;8410:180;-1:-1:-1;8410:180:31:o;8780:315::-;8848:6;8856;8909:2;8897:9;8888:7;8884:23;8880:32;8877:52;;;8925:1;8922;8915:12;8877:52;8961:9;8948:23;8938:33;;9021:2;9010:9;9006:18;8993:32;9034:31;9059:5;9034:31;:::i;:::-;9084:5;9074:15;;;8780:315;;;;;:::o;9100:740::-;9195:6;9203;9211;9219;9227;9280:3;9268:9;9259:7;9255:23;9251:33;9248:53;;;9297:1;9294;9287:12;9248:53;9336:9;9323:23;9355:31;9380:5;9355:31;:::i;:::-;9405:5;-1:-1:-1;9462:2:31;9447:18;;9434:32;9475:33;9434:32;9475:33;:::i;:::-;9527:7;-1:-1:-1;9581:2:31;9566:18;;9553:32;;-1:-1:-1;9637:2:31;9622:18;;9609:32;9650:33;9609:32;9650:33;:::i;:::-;9702:7;-1:-1:-1;9761:3:31;9746:19;;9733:33;9775;9733;9775;:::i;:::-;9827:7;9817:17;;;9100:740;;;;;;;;:::o;9845:389::-;9923:6;9931;9984:2;9972:9;9963:7;9959:23;9955:32;9952:52;;;10000:1;9997;9990:12;9952:52;10027:23;;-1:-1:-1;;;;;10062:30:31;;10059:50;;;10105:1;10102;10095:12;10059:50;10128:49;10169:7;10160:6;10149:9;10145:22;10128:49;:::i;:::-;10118:59;10224:2;10209:18;;;;10196:32;;-1:-1:-1;;;;9845:389:31:o;10239:118::-;10325:5;10318:13;10311:21;10304:5;10301:32;10291:60;;10347:1;10344;10337:12;10362:775;10490:6;10498;10506;10514;10567:3;10555:9;10546:7;10542:23;10538:33;10535:53;;;10584:1;10581;10574:12;10535:53;10611:23;;-1:-1:-1;;;;;10683:14:31;;;10680:34;;;10710:1;10707;10700:12;10680:34;10733:49;10774:7;10765:6;10754:9;10750:22;10733:49;:::i;:::-;10723:59;;10829:2;10818:9;10814:18;10801:32;10791:42;;10883:2;10872:9;10868:18;10855:32;10842:45;;10896:28;10918:5;10896:28;:::i;:::-;10943:5;;-1:-1:-1;11001:2:31;10986:18;;10973:32;;11017:16;;;11014:36;;;11046:1;11043;11036:12;11014:36;;11069:62;11123:7;11112:8;11101:9;11097:24;11069:62;:::i;11142:805::-;11255:6;11263;11271;11279;11287;11295;11303;11356:3;11344:9;11335:7;11331:23;11327:33;11324:53;;;11373:1;11370;11363:12;11324:53;11412:9;11399:23;11431:31;11456:5;11431:31;:::i;:::-;11481:5;-1:-1:-1;11538:2:31;11523:18;;11510:32;11551:33;11510:32;11551:33;:::i;:::-;11603:7;-1:-1:-1;11662:2:31;11647:18;;11634:32;11675:33;11634:32;11675:33;:::i;:::-;11142:805;;;;-1:-1:-1;11727:7:31;;11781:2;11766:18;;11753:32;;-1:-1:-1;11832:3:31;11817:19;;11804:33;;11884:3;11869:19;;11856:33;;-1:-1:-1;11936:3:31;11921:19;;;11908:33;;-1:-1:-1;11142:805:31;-1:-1:-1;;11142:805:31:o;11952:455::-;12029:6;12037;12090:2;12078:9;12069:7;12065:23;12061:32;12058:52;;;12106:1;12103;12096:12;12058:52;12145:9;12132:23;12164:31;12189:5;12164:31;:::i;:::-;12214:5;-1:-1:-1;12270:2:31;12255:18;;12242:32;-1:-1:-1;;;;;12286:30:31;;12283:50;;;12329:1;12326;12319:12;12283:50;12352:49;12393:7;12384:6;12373:9;12369:22;12352:49;:::i;:::-;12342:59;;;11952:455;;;;;:::o;12412:203::-;-1:-1:-1;;;;;12576:32:31;;;;12558:51;;12546:2;12531:18;;12412:203::o;12620:315::-;12688:6;12696;12749:2;12737:9;12728:7;12724:23;12720:32;12717:52;;;12765:1;12762;12755:12;12717:52;12804:9;12791:23;12823:31;12848:5;12823:31;:::i;:::-;12873:5;12925:2;12910:18;;;;12897:32;;-1:-1:-1;;;12620:315:31:o;12940:750::-;13060:6;13068;13076;13084;13092;13145:3;13133:9;13124:7;13120:23;13116:33;13113:53;;;13162:1;13159;13152:12;13113:53;13201:9;13188:23;13220:31;13245:5;13220:31;:::i;:::-;13270:5;-1:-1:-1;13326:2:31;13311:18;;13298:32;-1:-1:-1;;;;;13342:30:31;;13339:50;;;13385:1;13382;13375:12;13339:50;13408:49;13449:7;13440:6;13429:9;13425:22;13408:49;:::i;:::-;13398:59;;;13504:2;13493:9;13489:18;13476:32;13466:42;;13555:2;13544:9;13540:18;13527:32;13517:42;;13611:3;13600:9;13596:19;13583:33;13625;13650:7;13625:33;:::i;13695:248::-;13869:25;;;13925:2;13910:18;;13903:34;13857:2;13842:18;;13695:248::o;13948:247::-;14007:6;14060:2;14048:9;14039:7;14035:23;14031:32;14028:52;;;14076:1;14073;14066:12;14028:52;14115:9;14102:23;14134:31;14159:5;14134:31;:::i;14200:248::-;14268:6;14276;14329:2;14317:9;14308:7;14304:23;14300:32;14297:52;;;14345:1;14342;14335:12;14297:52;-1:-1:-1;;14368:23:31;;;14438:2;14423:18;;;14410:32;;-1:-1:-1;14200:248:31:o;14453:541::-;14541:6;14549;14602:2;14590:9;14581:7;14577:23;14573:32;14570:52;;;14618:1;14615;14608:12;14570:52;14645:23;;-1:-1:-1;;;;;14717:14:31;;;14714:34;;;14744:1;14741;14734:12;14714:34;14767:49;14808:7;14799:6;14788:9;14784:22;14767:49;:::i;:::-;14757:59;;14869:2;14858:9;14854:18;14841:32;14825:48;;14898:2;14888:8;14885:16;14882:36;;;14914:1;14911;14904:12;14882:36;;14937:51;14980:7;14969:8;14958:9;14954:24;14937:51;:::i;14999:855::-;15049:3;15088:4;15083:3;15079:14;15120:5;15114:12;15109:3;15102:25;15146:4;15213;15206:5;15202:16;15196:23;15189:31;15182:39;15175:4;15170:3;15166:14;15159:63;15268:4;15261:5;15257:16;15251:23;15306:4;15299;15294:3;15290:14;15283:28;15333:4;15366:12;15360:19;15401:6;15395:4;15388:20;15435:3;15430;15426:13;15417:22;;15492:3;15482:6;15479:1;15475:14;15470:3;15466:24;15462:34;15448:48;;15537:4;15523:12;15519:23;15505:37;;15560:1;15570:256;15584:6;15581:1;15578:13;15570:256;;;15673:3;15669:8;15663:3;15655:6;15651:16;15647:31;15640:5;15633:46;15702:40;15735:6;15726;15720:13;15702:40;:::i;:::-;15692:50;-1:-1:-1;15765:15:31;;;;15802:14;;;;15606:1;15599:9;15570:256;;;-1:-1:-1;15842:6:31;;14999:855;-1:-1:-1;;;;;;;14999:855:31:o;15859:1026::-;16186:2;16175:9;16168:21;16149:4;16212:55;16263:2;16252:9;16248:18;16240:6;16212:55;:::i;:::-;16286:2;16336:9;16328:6;16324:22;16319:2;16308:9;16304:18;16297:50;16367:6;16402;16396:13;16433:6;16425;16418:22;16468:2;16460:6;16456:15;16449:22;;16527:2;16517:6;16514:1;16510:14;16502:6;16498:27;16494:36;16565:2;16557:6;16553:15;16586:1;16596:260;16610:6;16607:1;16604:13;16596:260;;;16700:2;16696:7;16687:6;16679;16675:19;16671:33;16666:3;16659:46;16728:48;16769:6;16760;16754:13;16728:48;:::i;:::-;16834:12;;;;16718:58;-1:-1:-1;16799:15:31;;;;16632:1;16625:9;16596:260;;;-1:-1:-1;16873:6:31;;15859:1026;-1:-1:-1;;;;;;;;;15859:1026:31:o;16890:218::-;17037:2;17026:9;17019:21;17000:4;17057:45;17098:2;17087:9;17083:18;17075:6;17057:45;:::i;17366:388::-;17434:6;17442;17495:2;17483:9;17474:7;17470:23;17466:32;17463:52;;;17511:1;17508;17501:12;17463:52;17550:9;17537:23;17569:31;17594:5;17569:31;:::i;:::-;17619:5;-1:-1:-1;17676:2:31;17661:18;;17648:32;17689:33;17648:32;17689:33;:::i;17759:391::-;17990:25;;;18046:2;18031:18;;18024:34;;;;18089:2;18074:18;;18067:34;18132:2;18117:18;;18110:34;17977:3;17962:19;;17759:391::o;18631:241::-;18687:6;18740:2;18728:9;18719:7;18715:23;18711:32;18708:52;;;18756:1;18753;18746:12;18708:52;18795:9;18782:23;18814:28;18836:5;18814:28;:::i;18877:450::-;18952:6;18960;19013:2;19001:9;18992:7;18988:23;18984:32;18981:52;;;19029:1;19026;19019:12;18981:52;19056:23;;-1:-1:-1;;;;;19091:30:31;;19088:50;;;19134:1;19131;19124:12;19088:50;19157:49;19198:7;19189:6;19178:9;19174:22;19157:49;:::i;:::-;19147:59;;;19256:2;19245:9;19241:18;19228:32;19269:28;19291:5;19269:28;:::i;19557:658::-;19728:2;19780:21;;;19850:13;;19753:18;;;19872:22;;;19699:4;;19728:2;19951:15;;;;19925:2;19910:18;;;19699:4;19994:195;20008:6;20005:1;20002:13;19994:195;;;20073:13;;-1:-1:-1;;;;;20069:39:31;20057:52;;20164:15;;;;20129:12;;;;20105:1;20023:9;19994:195;;20220:258;20399:2;20388:9;20381:21;20362:4;20419:53;20468:2;20457:9;20453:18;20445:6;20419:53;:::i;20483:577::-;20596:6;20604;20657:2;20645:9;20636:7;20632:23;20628:32;20625:52;;;20673:1;20670;20663:12;20625:52;20700:23;;-1:-1:-1;;;;;20772:14:31;;;20769:34;;;20799:1;20796;20789:12;20769:34;20822:49;20863:7;20854:6;20843:9;20839:22;20822:49;:::i;:::-;20812:59;;20924:2;20913:9;20909:18;20896:32;20880:48;;20953:2;20943:8;20940:16;20937:36;;;20969:1;20966;20959:12;20937:36;;20992:62;21046:7;21035:8;21024:9;21020:24;20992:62;:::i;21393:127::-;21454:10;21449:3;21445:20;21442:1;21435:31;21485:4;21482:1;21475:15;21509:4;21506:1;21499:15;21525:648;21605:6;21658:2;21646:9;21637:7;21633:23;21629:32;21626:52;;;21674:1;21671;21664:12;21626:52;21701:16;;-1:-1:-1;;;;;21729:30:31;;21726:50;;;21772:1;21769;21762:12;21726:50;21795:22;;21848:4;21840:13;;21836:27;-1:-1:-1;21826:55:31;;21877:1;21874;21867:12;21826:55;21906:2;21900:9;21931:48;21947:31;21975:2;21947:31;:::i;21931:48::-;22002:2;21995:5;21988:17;22042:7;22037:2;22032;22028;22024:11;22020:20;22017:33;22014:53;;;22063:1;22060;22053:12;22014:53;22076:67;22140:2;22135;22128:5;22124:14;22119:2;22115;22111:11;22076:67;:::i;22558:245::-;22625:6;22678:2;22666:9;22657:7;22653:23;22649:32;22646:52;;;22694:1;22691;22684:12;22646:52;22726:9;22720:16;22745:28;22767:5;22745:28;:::i;22808:127::-;22869:10;22864:3;22860:20;22857:1;22850:31;22900:4;22897:1;22890:15;22924:4;22921:1;22914:15;22940:128;23007:9;;;23028:11;;;23025:37;;;23042:18;;:::i;24323:667::-;24598:4;24644:1;24640;24635:3;24631:11;24627:19;24685:2;24677:6;24673:15;24662:9;24655:34;24737:2;24729:6;24725:15;24720:2;24709:9;24705:18;24698:43;24777:3;24772:2;24761:9;24757:18;24750:31;24798:46;24839:3;24828:9;24824:19;24816:6;24798:46;:::i;:::-;24875:2;24860:18;;24853:34;;;;24918:3;24903:19;;24896:35;;;;-1:-1:-1;24968:15:31;;24962:3;24947:19;;;24940:44;24790:54;24323:667;-1:-1:-1;;;24323:667:31:o;24995:380::-;25074:1;25070:12;;;;25117;;;25138:61;;25192:4;25184:6;25180:17;25170:27;;25138:61;25245:2;25237:6;25234:14;25214:18;25211:38;25208:161;;25291:10;25286:3;25282:20;25279:1;25272:31;25326:4;25323:1;25316:15;25354:4;25351:1;25344:15;25208:161;;24995:380;;;:::o;25380:184::-;25450:6;25503:2;25491:9;25482:7;25478:23;25474:32;25471:52;;;25519:1;25516;25509:12;25471:52;-1:-1:-1;25542:16:31;;25380:184;-1:-1:-1;25380:184:31:o;25569:168::-;25642:9;;;25673;;25690:15;;;25684:22;;25670:37;25660:71;;25711:18;;:::i;25742:217::-;25782:1;25808;25798:132;;25852:10;25847:3;25843:20;25840:1;25833:31;25887:4;25884:1;25877:15;25915:4;25912:1;25905:15;25798:132;-1:-1:-1;25944:9:31;;25742:217::o;25964:125::-;26029:9;;;26050:10;;;26047:36;;;26063:18;;:::i;26094:251::-;26164:6;26217:2;26205:9;26196:7;26192:23;26188:32;26185:52;;;26233:1;26230;26223:12;26185:52;26265:9;26259:16;26284:31;26309:5;26284:31;:::i;28181:304::-;-1:-1:-1;;;;;28411:15:31;;;28393:34;;28463:15;;28458:2;28443:18;;28436:43;28343:2;28328:18;;28181:304::o;29150:543::-;29252:2;29247:3;29244:11;29241:446;;;29288:1;29312:5;29309:1;29302:16;29356:4;29353:1;29343:18;29426:2;29414:10;29410:19;29407:1;29403:27;29397:4;29393:38;29462:4;29450:10;29447:20;29444:47;;;-1:-1:-1;29485:4:31;29444:47;29540:2;29535:3;29531:12;29528:1;29524:20;29518:4;29514:31;29504:41;;29595:82;29613:2;29606:5;29603:13;29595:82;;;29658:17;;;29639:1;29628:13;29595:82;;;29599:3;;;29150:543;;;:::o;29698:166::-;-1:-1:-1;;29826:1:31;29822:11;;;29818:24;29814:29;29804:40;29850:1;29846:11;;;;29801:57;;29698:166::o;29869:1345::-;29989:10;;-1:-1:-1;;;;;30011:30:31;;30008:56;;;30044:18;;:::i;:::-;30073:97;30163:6;30123:38;30155:4;30149:11;30123:38;:::i;:::-;30117:4;30073:97;:::i;:::-;30225:4;;30282:2;30271:14;;30299:1;30294:663;;;;31001:1;31018:6;31015:89;;;-1:-1:-1;31070:19:31;;;31064:26;31015:89;31130:67;31190:6;31183:5;31130:67;:::i;:::-;31124:4;31117:81;;30264:944;;30294:663;29097:1;29090:14;;;29134:4;29121:18;;-1:-1:-1;;30330:20:31;;;30448:236;30462:7;30459:1;30456:14;30448:236;;;30551:19;;;30545:26;30530:42;;30643:27;;;;30611:1;30599:14;;;;30478:19;;30448:236;;;30452:3;30712:6;30703:7;30700:19;30697:201;;;30773:19;;;30767:26;-1:-1:-1;;30856:1:31;30852:14;;;30868:3;30848:24;30844:37;30840:42;30825:58;30810:74;;30697:201;-1:-1:-1;;;;;30944:1:31;30928:14;;;30924:22;30911:36;;-1:-1:-1;29869:1345:31:o;31219:291::-;31396:6;31385:9;31378:25;31439:2;31434;31423:9;31419:18;31412:30;31359:4;31459:45;31500:2;31489:9;31485:18;31477:6;31459:45;:::i;31515:289::-;31646:3;31684:6;31678:13;31700:66;31759:6;31754:3;31747:4;31739:6;31735:17;31700:66;:::i;:::-;31782:16;;;;;31515:289;-1:-1:-1;;31515:289:31:o;31809:843::-;31937:3;31966:1;31999:6;31993:13;32029:36;32055:9;32029:36;:::i;:::-;32084:1;32101:17;;;32127:133;;;;32274:1;32269:358;;;;32094:533;;32127:133;-1:-1:-1;;32160:24:31;;32148:37;;32233:14;;32226:22;32214:35;;32205:45;;;-1:-1:-1;32127:133:31;;32269:358;32300:6;32297:1;32290:17;32330:4;32375;32372:1;32362:18;32402:1;32416:165;32430:6;32427:1;32424:13;32416:165;;;32508:14;;32495:11;;;32488:35;32551:16;;;;32445:10;;32416:165;;;32420:3;;;32610:6;32605:3;32601:16;32594:23;;32094:533;-1:-1:-1;32643:3:31;;31809:843;-1:-1:-1;;;;;;31809:843:31:o;32657:1435::-;32776:3;32770:4;32767:13;32764:26;;32783:5;;32657:1435::o;32764:26::-;32813:37;32845:3;32839:10;32813:37;:::i;:::-;-1:-1:-1;;;;;32862:30:31;;32859:56;;;32895:18;;:::i;:::-;32924:97;33014:6;32974:38;33006:4;33000:11;32974:38;:::i;32924:97::-;33047:1;33075:2;33067:6;33064:14;33092:1;33087:748;;;;33879:1;33896:6;33893:89;;;-1:-1:-1;33948:19:31;;;33942:26;33893:89;34008:67;34068:6;34061:5;34008:67;:::i;:::-;34002:4;33995:81;;33057:1029;;33087:748;29097:1;29090:14;;;29134:4;29121:18;;-1:-1:-1;;33123:20:31;;;29097:1;29090:14;;;29134:4;29121:18;;33287:9;33309:251;33323:7;33320:1;33317:14;33309:251;;;33405:21;;;33399:28;33384:44;;33455:1;33528:18;;;;33483:15;;;;33346:4;33339:12;33309:251;;;33313:3;33588:6;33579:7;33576:19;33573:203;;;33649:21;;33643:28;-1:-1:-1;;33746:3:31;33734:1;33730:14;;;33726:24;33722:37;33718:42;33703:58;33688:74;;;-1:-1:-1;;33822:1:31;33806:14;;;33802:22;33789:36;;-1:-1:-1;32657:1435:31:o;34097:127::-;34158:10;34153:3;34149:20;34146:1;34139:31;34189:4;34186:1;34179:15;34213:4;34210:1;34203:15;36119:127;36180:10;36175:3;36171:20;36168:1;36161:31;36211:4;36208:1;36201:15;36235:4;36232:1;36225:15" + }, + "methodIdentifiers": { + "BOOKING_OPERATOR_ROLE()": "852b3ccb", + "BOT_ADMIN_ROLE()": "33746274", + "CHEQUE_OPERATOR_ROLE()": "63e86cc8", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DOMAIN_TYPEHASH()": "20606b70", + "GAS_WITHDRAWER_ROLE()": "383aba87", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "SERVICE_ADMIN_ROLE()": "d09445c2", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "WITHDRAWER_ROLE()": "85f438c1", + "addMessengerBot(address,uint256)": "51889d6b", + "addPublicKey(address,bytes)": "ccde65dc", + "addService(string,uint256,bool,string[])": "432cf639", + "addServiceCapability(string,string)": "7512e55b", + "addSupportedToken(address)": "6d69fcaf", + "addWantedServices(string[])": "1c5db99e", + "buyBookingToken(uint256)": "26687c9f", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "getAllServiceHashes()": "42072bbd", + "getBookingTokenAddress()": "4f3f4639", + "getDomainSeparator()": "ed24911d", + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getPrefundAmount()": "c39409e1", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceCapabilities(string)": "319d13f3", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceFee(string)": "18274da4", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getServiceRestrictedRate(string)": "b5124635", + "getSupportedServices()": "7eec56c7", + "getSupportedTokens()": "d3c7c2c7", + "getTotalChequePayments()": "e96cf7ad", + "getWantedServiceHashes()": "136f50ca", + "getWantedServices()": "08564c19", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "initialize(address,address,uint256,address,address)": "33e1a223", + "isBotAllowed(address)": "e0b78add", + "mintBookingToken(address,string,uint256,uint256,address)": "58e5cae0", + "offChainPaymentSupported()": "241bbbfc", + "onERC721Received(address,address,uint256,bytes)": "150b7a02", + "proxiableUUID()": "52d1902d", + "removeMessengerBot(address)": "c6640e68", + "removePublicKey(address)": "e7bfce9a", + "removeService(string)": "f51acaea", + "removeServiceCapability(string,string)": "8c20f574", + "removeSupportedToken(address)": "76319190", + "removeWantedServices(string[])": "39e4c705", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setGasMoneyWithdrawal(uint256,uint256)": "6fc22cd1", + "setOffChainPaymentSupported(bool)": "a31aa039", + "setServiceCapabilities(string,string[])": "ebc20d20", + "setServiceFee(string,uint256)": "41bf7c69", + "setServiceRestrictedRate(string,bool)": "a7d022f8", + "supportsInterface(bytes4)": "01ffc9a7", + "transferERC20(address,address,uint256)": "9db5dbe4", + "transferERC721(address,address,uint256)": "1aca6376", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929", + "withdraw(address,uint256)": "f3fef3a3", + "withdrawGasMoney(uint256)": "5c988994" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"latestImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountNoUpgradeNeeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"DepositorNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefundLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PrefundNotSpentYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ZeroValueDeposit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidChequeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidDeveloperFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceCapabilitiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ServiceFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"ServiceRestrictedRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BOOKING_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BOT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHEQUE_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasMoney\",\"type\":\"uint256\"}],\"name\":\"addMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"addService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"addServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"addWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"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\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service[]\",\"name\":\"services\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"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\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prefundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"mintBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"removeMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"removePublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"removeService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"removeServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"removeWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setGasMoneyWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isSupported\",\"type\":\"bool\"}],\"name\":\"setOffChainPaymentSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"setServiceCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setServiceFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"setServiceRestrictedRate\",\"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\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC721\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGasMoney\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security-contact\":\"https://r.xyz/program/camino-network\",\"details\":\"This contract uses UUPS style upgradeability. The authorization function `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is restricted to only upgrade to the implementation address registered on the {CMAccountManager} contract.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addPublicKey(address,bytes)\":{\"params\":{\"data\":\"public key data\",\"pubKeyAddress\":\"address of the public key\"}},\"addService(string,uint256,bool,string[])\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"capabilities\":\"Capabilities of the service (if any, optional)\",\"fee\":\"Fee of the service in aCAM (wei in ETH terminology)\",\"serviceName\":\"Service name to add to the account as a supported service\"}},\"addSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"addWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"buyBookingToken(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getBookingTokenAddress()\":{\"returns\":{\"_0\":\"BookingToken address\"}},\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getManagerAddress()\":{\"returns\":{\"_0\":\"CMAccountManager address\"}},\"getPrefundAmount()\":{\"returns\":{\"_0\":\"prefund amount\"}},\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}},\"getWantedServices()\":{\"returns\":{\"serviceNames\":\"List of service names\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isBotAllowed(address)\":{\"params\":{\"bot\":\"The bot's address\"}},\"mintBookingToken(address,string,uint256,uint256,address)\":{\"params\":{\"expirationTimestamp\":\"The expiration timestamp\",\"paymentToken\":\"The payment token, if address(0) then native\",\"price\":\"The price of the token\",\"reservedFor\":\"The account to reserve the token for\",\"uri\":\"The URI of the token\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"removeWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"params\":{\"limit\":\"Amount of gas money to withdraw in wei per period\",\"period\":\"Duration of the withdrawal period in seconds\"}},\"setOffChainPaymentSupported(bool)\":{\"params\":{\"_isSupported\":\"true if off-chain payment is supported\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferERC20(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to transfer\",\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC20 token\"}},\"transferERC721(address,address,uint256)\":{\"params\":{\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC721 token\",\"tokenId\":\"The token id of the token\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdrawGasMoney(uint256)\":{\"params\":{\"amount\":\"The amount to withdraw in aCAM (wei)\"}}},\"title\":\"Camino Messenger Account\",\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountImplementationMismatch(address,address)\":[{\"notice\":\"CMAccount implementation address does not match the one in the manager\"}],\"CMAccountNoUpgradeNeeded(address,address)\":[{\"notice\":\"New implementation is the same as the current implementation, no update needed\"}],\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"DepositorNotAllowed(address)\":[{\"notice\":\"Error to revert with if depositer is not allowed\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}],\"PrefundNotSpentYet(uint256,uint256,uint256)\":[{\"notice\":\"Error to revert with if the prefund is not spent yet\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Error to revert if transfer to zero address\"}],\"ZeroValueDeposit(address)\":[{\"notice\":\"Error to revert zero value deposits\"}]},\"events\":{\"CMAccountUpgraded(address,address)\":{\"notice\":\"CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\"},\"ChequeCashedIn(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"},\"Deposit(address,uint256)\":{\"notice\":\"Deposit event, emitted when there is a new deposit\"},\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"},\"MessengerBotAdded(address)\":{\"notice\":\"Messenger bot added\"},\"MessengerBotRemoved(address)\":{\"notice\":\"Messenger bot removed\"},\"Withdraw(address,uint256)\":{\"notice\":\"Withdraw event, emitted when there is a new withdrawal\"}},\"kind\":\"user\",\"methods\":{\"BOOKING_OPERATOR_ROLE()\":{\"notice\":\"Booking operator role can mint and buy booking tokens using the functions on this contract. This is generally used by the bots. The price for the booking token is paid by this contract.\"},\"BOT_ADMIN_ROLE()\":{\"notice\":\"Bot admin role can add & remove bots and set gas money withdrawal parameters.\"},\"CHEQUE_OPERATOR_ROLE()\":{\"notice\":\"Cheque operator role can issue cheques to be paid by this CMAccount contract.\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"GAS_WITHDRAWER_ROLE()\":{\"notice\":\"Gas withdrawer role can withdraw gas money from the contract. This is intended to be used by the bots and is granted when `addMessengerBot` is called.\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"SERVICE_ADMIN_ROLE()\":{\"notice\":\"Service admin role can add & remove supported & wanted services.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"WITHDRAWER_ROLE()\":{\"notice\":\"Withdrawer role can withdraw funds from the contract.\"},\"addMessengerBot(address,uint256)\":{\"notice\":\"Adds messenger bot with initial gas money.\"},\"addPublicKey(address,bytes)\":{\"notice\":\"Add public key with address These public keys are intended to be used with for off-chain encryption of private booking data.\"},\"addService(string,uint256,bool,string[])\":{\"notice\":\"Adds a service to the account as a supported service. `serviceName` is defined as pkg + service name in protobuf. For example: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"addServiceCapability(string,string)\":{\"notice\":\"Add a single capability to the service by name\"},\"addSupportedToken(address)\":{\"notice\":\"Adds a supported payment token.\"},\"addWantedServices(string[])\":{\"notice\":\"Adds wanted services.\"},\"buyBookingToken(uint256)\":{\"notice\":\"Buys booking token.\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Returns the CMAccountManager address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceCapabilities(string)\":{\"notice\":\"Get service capabilities by name. Overloading the getServiceCapabilities function.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceFee(string)\":{\"notice\":\"Get service fee by name. Overloading the getServiceFee function.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getServiceRestrictedRate(string)\":{\"notice\":\"Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\"},\"getSupportedServices()\":{\"notice\":\"Get all supported services. Return a list of service names and a list of service objects.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"getWantedServices()\":{\"notice\":\"Get all wanted services.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Returns true if an address is authorized to sign cheques\"},\"mintBookingToken(address,string,uint256,uint256,address)\":{\"notice\":\"Mints booking token.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"removeMessengerBot(address)\":{\"notice\":\"Removes messenger bot by revoking the roles.\"},\"removePublicKey(address)\":{\"notice\":\"Remove public key by address\"},\"removeService(string)\":{\"notice\":\"Remove a service from the account by its name\"},\"removeServiceCapability(string,string)\":{\"notice\":\"Remove a single capability from the service by name\"},\"removeSupportedToken(address)\":{\"notice\":\"Removes a supported payment token.\"},\"removeWantedServices(string[])\":{\"notice\":\"Removes wanted services.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"notice\":\"Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\"},\"setOffChainPaymentSupported(bool)\":{\"notice\":\"Sets if off-chain payment is supported.\"},\"setServiceCapabilities(string,string[])\":{\"notice\":\"Set all capabilities for a service by name\"},\"setServiceFee(string,uint256)\":{\"notice\":\"Set the fee of a service by name\"},\"setServiceRestrictedRate(string,bool)\":{\"notice\":\"Set the restricted rate of a service by name\"},\"transferERC20(address,address,uint256)\":{\"notice\":\"Transfers ERC20 tokens. This function reverts if `to` is the zero address.\"},\"transferERC721(address,address,uint256)\":{\"notice\":\"Transfers ERC721 tokens. This function reverts if `to` is the zero address.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw CAM from the CMAccount This function reverts if the amount is bigger then the prefund left to spend. This is to prevent spam by forcing user to spend the full prefund for cheques, so they can not just create an account and withdraw the prefund.\"},\"withdrawGasMoney(uint256)\":{\"notice\":\"Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\"}},\"notice\":\"A CM Account manages funds, minting/buying of booking tokens, provided or wanted services, and multiple bots for distributors and suppliers on Camino Messenger ecosystem. Registering bots is done by role based access control. Bot's with `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract. Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`. `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the contract to be used as gas money. This restricted with a `limit` (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting values are 10 CAM per 24 hours. `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by calling the corresponding functions on the {BookingToken} contract. The buy operation pays the price of the Booking Token with the funds on the {CMAccount} contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/CMAccount.sol\":\"CMAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xc603154d2a4d8f88d4d3c11090a8224f572c4b1f8baced3ea46cdec49f4674ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://573f2a2512341950ba78fcee72e3f50b728e5e27269292bfc4dc835b2d2a03aa\",\"dweb:/ipfs/QmWvKXstgHKFZen4RD56PM4PeE7MaqunEpxKxaj5FhJUNc\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xc1435f102633849858e75d7bed14c636f25448ceb3406d82992b0f2df52f4306\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce1815e3a1da24f91b8e2ec24cf09d0d46e0fbeddcbe2cb0d8b2e05b91ceb7b3\",\"dweb:/ipfs/QmYTy1AQB5EV5jwuGsB49yykng2oG3x5ss4bDjFNxk3He4\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/account/CMAccount.sol\":{\"keccak256\":\"0x574b1ad19f884553ad06ca2e24a336e72045ae3c5526c842cff8803fee35b3bf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://30676eec59b41c5fc5ef5e471873abace3c07795ce0fffffcd13d4bbc4736b6c\",\"dweb:/ipfs/QmSmkYNnXvqvhLxmxCCqWtgiHPhYxJGXC5xRdgGkVJaSa1\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0xad4b70b55529953adbada8fa4c5f6333f7ef1c3c8510506827746697d4da2726\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3abcd63bfe1dbe193feac1832ce350c44ff9159e52b655dd6b3f7cbbaa4f95ce\",\"dweb:/ipfs/QmTjmhbtZF4NPBNRz5baapKg8YYBGy9pn6yEN6G1RbZHXP\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8461844c200384ba3200b76838af47fa1903a713ee101f1dc7f2f4c3225c43e9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd1565ca7a63c5de78072e929f6533426c213568c27d6404fa73fa2c319272f0\",\"dweb:/ipfs/QmfLLWoSgnLcwBhUGg1V6KSnY5czbTVhT28BL74QAT53yL\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x9f4d055ee7a2a9d0d17e511c943f103c7bd209926a4c8923ef7f3f4d072f2eca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81dacf1bd7d2879bd2e2456cea8fbe32765cbcff515795ed498e5dbfff54a97b\",\"dweb:/ipfs/QmZZW9QfyAyWpnPSqZrpbYPfC5igYBwS9CtjGpWBBCpzCY\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x6998e0652edba34b8168dad687606f6d82dd743cc928ffd7b4d489049de56af1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97e183226c2cb03d487b61adb01581fdea2956f60ef087a695e3b029d3ace3f8\",\"dweb:/ipfs/QmdN6KxCwcZLAd4hCSUT5JorLHRxMiiEwgSVwiAiEvg8Tv\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/ChequeManager.sol": { + "ChequeManager": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DOMAIN_TYPEHASH()": "20606b70", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "getDomainSeparator()": "ed24911d", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getTotalChequePayments()": "e96cf7ad", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "isBotAllowed(address)": "e0b78add", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidChequeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidDeveloperFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}]},\"events\":{\"ChequeCashedIn(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Abstract function to get the manager address. This must be implemented by the inheriting contract.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Abstract function to check if a bot is allowed to sign cheques. This must be implemented by the inheriting contract.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"}},\"notice\":\"ChequeManager manages, verifies, and cashes in the messenger cheques. EIP712 Domain name & version: DOMAIN_NAME = \\\"CaminoMessenger\\\" DOMAIN_VERSION= \\\"1\\\"\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/ChequeManager.sol\":\"ChequeManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0xad4b70b55529953adbada8fa4c5f6333f7ef1c3c8510506827746697d4da2726\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3abcd63bfe1dbe193feac1832ce350c44ff9159e52b655dd6b3f7cbbaa4f95ce\",\"dweb:/ipfs/QmTjmhbtZF4NPBNRz5baapKg8YYBGy9pn6yEN6G1RbZHXP\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/GasMoneyManager.sol": { + "GasMoneyManager": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}}},\"title\":\"GasMoneyManager\",\"version\":1},\"userdoc\":{\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"}},\"kind\":\"user\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"}},\"notice\":\"GasMoneyManager manages gas money withdrawals for a {CMAccount}. Gas money withdrawals are restricted to a withdrawal limit and period.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/GasMoneyManager.sol\":\"GasMoneyManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8461844c200384ba3200b76838af47fa1903a713ee101f1dc7f2f4c3225c43e9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd1565ca7a63c5de78072e929f6533426c213568c27d6404fa73fa2c319272f0\",\"dweb:/ipfs/QmfLLWoSgnLcwBhUGg1V6KSnY5czbTVhT28BL74QAT53yL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenApprovalFailed", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "61056e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "opcodes": "PUSH2 0x56E PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B29E1BA EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0x53EA54C5 EQ PUSH2 0x67 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0x312 JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x82 CALLDATASIZE PUSH1 0x4 PUSH2 0x364 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x45C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3337E731 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2EA5D6D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x5D4BADB2 SWAP1 PUSH2 0x2C0 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x330 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x35F DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x388 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x398 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3DA JUMPI PUSH2 0x3DA PUSH2 0x33E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x402 JUMPI PUSH2 0x402 PUSH2 0x33E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP9 POP POP POP POP POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x450 PUSH1 0xA0 DUP9 ADD PUSH2 0x354 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x481 DUP2 PUSH2 0x2FA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xA0 PUSH1 0x20 DUP5 ADD MSTORE DUP7 MLOAD DUP1 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI DUP9 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP3 ADD PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xC0 DUP3 DUP7 ADD ADD MSTORE PUSH1 0xC0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x52E PUSH1 0x80 DUP4 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xE8 SGT 0xCB SWAP3 0xEB 0xB6 0xF6 BASEFEE 0xBE 0xDA ADDMOD LOG2 PUSH5 0x7D33ACCDA4 CODESIZE 0xF6 CALLDATACOPY SWAP2 JUMP 0x2C 0xAB PUSH24 0xD87C6F603764736F6C634300081800330000000000000000 ", + "sourceMap": "471:2489:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;471:2489:27;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@buyBookingToken_5867": { + "entryPoint": 135, + "id": 5867, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@mintBookingToken_5793": { + "entryPoint": 652, + "id": 5793, + "parameterSlots": 6, + "returnSlots": 0 + }, + "abi_decode_contract_IERC20": { + "entryPoint": 852, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798": { + "entryPoint": 868, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 786, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 1164, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_contract$_IERC20_$1798_fromMemory": { + "entryPoint": 1116, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_contract_IERC20": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 1205, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 830, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 762, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:4661:31", + "nodeType": "YulBlock", + "src": "0:4661:31", + "statements": [ + { + "nativeSrc": "6:3:31", + "nodeType": "YulBlock", + "src": "6:3:31", + "statements": [] + }, + { + "body": { + "nativeSrc": "59:86:31", + "nodeType": "YulBlock", + "src": "59:86:31", + "statements": [ + { + "body": { + "nativeSrc": "123:16:31", + "nodeType": "YulBlock", + "src": "123:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "132:1:31", + "nodeType": "YulLiteral", + "src": "132:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "135:1:31", + "nodeType": "YulLiteral", + "src": "135:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "125:6:31", + "nodeType": "YulIdentifier", + "src": "125:6:31" + }, + "nativeSrc": "125:12:31", + "nodeType": "YulFunctionCall", + "src": "125:12:31" + }, + "nativeSrc": "125:12:31", + "nodeType": "YulExpressionStatement", + "src": "125:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "82:5:31", + "nodeType": "YulIdentifier", + "src": "82:5:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:31", + "nodeType": "YulIdentifier", + "src": "93:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "108:3:31", + "nodeType": "YulLiteral", + "src": "108:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "113:1:31", + "nodeType": "YulLiteral", + "src": "113:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "104:3:31", + "nodeType": "YulIdentifier", + "src": "104:3:31" + }, + "nativeSrc": "104:11:31", + "nodeType": "YulFunctionCall", + "src": "104:11:31" + }, + { + "kind": "number", + "nativeSrc": "117:1:31", + "nodeType": "YulLiteral", + "src": "117:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:31", + "nodeType": "YulIdentifier", + "src": "100:3:31" + }, + "nativeSrc": "100:19:31", + "nodeType": "YulFunctionCall", + "src": "100:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "89:3:31", + "nodeType": "YulIdentifier", + "src": "89:3:31" + }, + "nativeSrc": "89:31:31", + "nodeType": "YulFunctionCall", + "src": "89:31:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "79:2:31", + "nodeType": "YulIdentifier", + "src": "79:2:31" + }, + "nativeSrc": "79:42:31", + "nodeType": "YulFunctionCall", + "src": "79:42:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "72:6:31", + "nodeType": "YulIdentifier", + "src": "72:6:31" + }, + "nativeSrc": "72:50:31", + "nodeType": "YulFunctionCall", + "src": "72:50:31" + }, + "nativeSrc": "69:70:31", + "nodeType": "YulIf", + "src": "69:70:31" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "14:131:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "48:5:31", + "nodeType": "YulTypedName", + "src": "48:5:31", + "type": "" + } + ], + "src": "14:131:31" + }, + { + "body": { + "nativeSrc": "237:228:31", + "nodeType": "YulBlock", + "src": "237:228:31", + "statements": [ + { + "body": { + "nativeSrc": "283:16:31", + "nodeType": "YulBlock", + "src": "283:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "292:1:31", + "nodeType": "YulLiteral", + "src": "292:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "295:1:31", + "nodeType": "YulLiteral", + "src": "295:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "285:6:31", + "nodeType": "YulIdentifier", + "src": "285:6:31" + }, + "nativeSrc": "285:12:31", + "nodeType": "YulFunctionCall", + "src": "285:12:31" + }, + "nativeSrc": "285:12:31", + "nodeType": "YulExpressionStatement", + "src": "285:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "258:7:31", + "nodeType": "YulIdentifier", + "src": "258:7:31" + }, + { + "name": "headStart", + "nativeSrc": "267:9:31", + "nodeType": "YulIdentifier", + "src": "267:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "254:3:31", + "nodeType": "YulIdentifier", + "src": "254:3:31" + }, + "nativeSrc": "254:23:31", + "nodeType": "YulFunctionCall", + "src": "254:23:31" + }, + { + "kind": "number", + "nativeSrc": "279:2:31", + "nodeType": "YulLiteral", + "src": "279:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "250:3:31", + "nodeType": "YulIdentifier", + "src": "250:3:31" + }, + "nativeSrc": "250:32:31", + "nodeType": "YulFunctionCall", + "src": "250:32:31" + }, + "nativeSrc": "247:52:31", + "nodeType": "YulIf", + "src": "247:52:31" + }, + { + "nativeSrc": "308:36:31", + "nodeType": "YulVariableDeclaration", + "src": "308:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "334:9:31", + "nodeType": "YulIdentifier", + "src": "334:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "321:12:31", + "nodeType": "YulIdentifier", + "src": "321:12:31" + }, + "nativeSrc": "321:23:31", + "nodeType": "YulFunctionCall", + "src": "321:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "312:5:31", + "nodeType": "YulTypedName", + "src": "312:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "378:5:31", + "nodeType": "YulIdentifier", + "src": "378:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "353:24:31", + "nodeType": "YulIdentifier", + "src": "353:24:31" + }, + "nativeSrc": "353:31:31", + "nodeType": "YulFunctionCall", + "src": "353:31:31" + }, + "nativeSrc": "353:31:31", + "nodeType": "YulExpressionStatement", + "src": "353:31:31" + }, + { + "nativeSrc": "393:15:31", + "nodeType": "YulAssignment", + "src": "393:15:31", + "value": { + "name": "value", + "nativeSrc": "403:5:31", + "nodeType": "YulIdentifier", + "src": "403:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "393:6:31", + "nodeType": "YulIdentifier", + "src": "393:6:31" + } + ] + }, + { + "nativeSrc": "417:42:31", + "nodeType": "YulAssignment", + "src": "417:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "444:9:31", + "nodeType": "YulIdentifier", + "src": "444:9:31" + }, + { + "kind": "number", + "nativeSrc": "455:2:31", + "nodeType": "YulLiteral", + "src": "455:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "440:3:31", + "nodeType": "YulIdentifier", + "src": "440:3:31" + }, + "nativeSrc": "440:18:31", + "nodeType": "YulFunctionCall", + "src": "440:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "427:12:31", + "nodeType": "YulIdentifier", + "src": "427:12:31" + }, + "nativeSrc": "427:32:31", + "nodeType": "YulFunctionCall", + "src": "427:32:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "417:6:31", + "nodeType": "YulIdentifier", + "src": "417:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "150:315:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "195:9:31", + "nodeType": "YulTypedName", + "src": "195:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "206:7:31", + "nodeType": "YulTypedName", + "src": "206:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "218:6:31", + "nodeType": "YulTypedName", + "src": "218:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "226:6:31", + "nodeType": "YulTypedName", + "src": "226:6:31", + "type": "" + } + ], + "src": "150:315:31" + }, + { + "body": { + "nativeSrc": "502:95:31", + "nodeType": "YulBlock", + "src": "502:95:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "519:1:31", + "nodeType": "YulLiteral", + "src": "519:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "526:3:31", + "nodeType": "YulLiteral", + "src": "526:3:31", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "531:10:31", + "nodeType": "YulLiteral", + "src": "531:10:31", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "522:3:31", + "nodeType": "YulIdentifier", + "src": "522:3:31" + }, + "nativeSrc": "522:20:31", + "nodeType": "YulFunctionCall", + "src": "522:20:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "512:6:31", + "nodeType": "YulIdentifier", + "src": "512:6:31" + }, + "nativeSrc": "512:31:31", + "nodeType": "YulFunctionCall", + "src": "512:31:31" + }, + "nativeSrc": "512:31:31", + "nodeType": "YulExpressionStatement", + "src": "512:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "559:1:31", + "nodeType": "YulLiteral", + "src": "559:1:31", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "562:4:31", + "nodeType": "YulLiteral", + "src": "562:4:31", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "552:6:31", + "nodeType": "YulIdentifier", + "src": "552:6:31" + }, + "nativeSrc": "552:15:31", + "nodeType": "YulFunctionCall", + "src": "552:15:31" + }, + "nativeSrc": "552:15:31", + "nodeType": "YulExpressionStatement", + "src": "552:15:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "583:1:31", + "nodeType": "YulLiteral", + "src": "583:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "586:4:31", + "nodeType": "YulLiteral", + "src": "586:4:31", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "576:6:31", + "nodeType": "YulIdentifier", + "src": "576:6:31" + }, + "nativeSrc": "576:15:31", + "nodeType": "YulFunctionCall", + "src": "576:15:31" + }, + "nativeSrc": "576:15:31", + "nodeType": "YulExpressionStatement", + "src": "576:15:31" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "470:127:31", + "nodeType": "YulFunctionDefinition", + "src": "470:127:31" + }, + { + "body": { + "nativeSrc": "659:85:31", + "nodeType": "YulBlock", + "src": "659:85:31", + "statements": [ + { + "nativeSrc": "669:29:31", + "nodeType": "YulAssignment", + "src": "669:29:31", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "691:6:31", + "nodeType": "YulIdentifier", + "src": "691:6:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "678:12:31", + "nodeType": "YulIdentifier", + "src": "678:12:31" + }, + "nativeSrc": "678:20:31", + "nodeType": "YulFunctionCall", + "src": "678:20:31" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "669:5:31", + "nodeType": "YulIdentifier", + "src": "669:5:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "732:5:31", + "nodeType": "YulIdentifier", + "src": "732:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "707:24:31", + "nodeType": "YulIdentifier", + "src": "707:24:31" + }, + "nativeSrc": "707:31:31", + "nodeType": "YulFunctionCall", + "src": "707:31:31" + }, + "nativeSrc": "707:31:31", + "nodeType": "YulExpressionStatement", + "src": "707:31:31" + } + ] + }, + "name": "abi_decode_contract_IERC20", + "nativeSrc": "602:142:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "638:6:31", + "nodeType": "YulTypedName", + "src": "638:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "649:5:31", + "nodeType": "YulTypedName", + "src": "649:5:31", + "type": "" + } + ], + "src": "602:142:31" + }, + { + "body": { + "nativeSrc": "929:1254:31", + "nodeType": "YulBlock", + "src": "929:1254:31", + "statements": [ + { + "body": { + "nativeSrc": "976:16:31", + "nodeType": "YulBlock", + "src": "976:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "985:1:31", + "nodeType": "YulLiteral", + "src": "985:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "988:1:31", + "nodeType": "YulLiteral", + "src": "988:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "978:6:31", + "nodeType": "YulIdentifier", + "src": "978:6:31" + }, + "nativeSrc": "978:12:31", + "nodeType": "YulFunctionCall", + "src": "978:12:31" + }, + "nativeSrc": "978:12:31", + "nodeType": "YulExpressionStatement", + "src": "978:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "950:7:31", + "nodeType": "YulIdentifier", + "src": "950:7:31" + }, + { + "name": "headStart", + "nativeSrc": "959:9:31", + "nodeType": "YulIdentifier", + "src": "959:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "946:3:31", + "nodeType": "YulIdentifier", + "src": "946:3:31" + }, + "nativeSrc": "946:23:31", + "nodeType": "YulFunctionCall", + "src": "946:23:31" + }, + { + "kind": "number", + "nativeSrc": "971:3:31", + "nodeType": "YulLiteral", + "src": "971:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "942:3:31", + "nodeType": "YulIdentifier", + "src": "942:3:31" + }, + "nativeSrc": "942:33:31", + "nodeType": "YulFunctionCall", + "src": "942:33:31" + }, + "nativeSrc": "939:53:31", + "nodeType": "YulIf", + "src": "939:53:31" + }, + { + "nativeSrc": "1001:36:31", + "nodeType": "YulVariableDeclaration", + "src": "1001:36:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1027:9:31", + "nodeType": "YulIdentifier", + "src": "1027:9:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1014:12:31", + "nodeType": "YulIdentifier", + "src": "1014:12:31" + }, + "nativeSrc": "1014:23:31", + "nodeType": "YulFunctionCall", + "src": "1014:23:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "1005:5:31", + "nodeType": "YulTypedName", + "src": "1005:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1071:5:31", + "nodeType": "YulIdentifier", + "src": "1071:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1046:24:31", + "nodeType": "YulIdentifier", + "src": "1046:24:31" + }, + "nativeSrc": "1046:31:31", + "nodeType": "YulFunctionCall", + "src": "1046:31:31" + }, + "nativeSrc": "1046:31:31", + "nodeType": "YulExpressionStatement", + "src": "1046:31:31" + }, + { + "nativeSrc": "1086:15:31", + "nodeType": "YulAssignment", + "src": "1086:15:31", + "value": { + "name": "value", + "nativeSrc": "1096:5:31", + "nodeType": "YulIdentifier", + "src": "1096:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1086:6:31", + "nodeType": "YulIdentifier", + "src": "1086:6:31" + } + ] + }, + { + "nativeSrc": "1110:47:31", + "nodeType": "YulVariableDeclaration", + "src": "1110:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1142:9:31", + "nodeType": "YulIdentifier", + "src": "1142:9:31" + }, + { + "kind": "number", + "nativeSrc": "1153:2:31", + "nodeType": "YulLiteral", + "src": "1153:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1138:3:31", + "nodeType": "YulIdentifier", + "src": "1138:3:31" + }, + "nativeSrc": "1138:18:31", + "nodeType": "YulFunctionCall", + "src": "1138:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1125:12:31", + "nodeType": "YulIdentifier", + "src": "1125:12:31" + }, + "nativeSrc": "1125:32:31", + "nodeType": "YulFunctionCall", + "src": "1125:32:31" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "1114:7:31", + "nodeType": "YulTypedName", + "src": "1114:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "1191:7:31", + "nodeType": "YulIdentifier", + "src": "1191:7:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1166:24:31", + "nodeType": "YulIdentifier", + "src": "1166:24:31" + }, + "nativeSrc": "1166:33:31", + "nodeType": "YulFunctionCall", + "src": "1166:33:31" + }, + "nativeSrc": "1166:33:31", + "nodeType": "YulExpressionStatement", + "src": "1166:33:31" + }, + { + "nativeSrc": "1208:17:31", + "nodeType": "YulAssignment", + "src": "1208:17:31", + "value": { + "name": "value_1", + "nativeSrc": "1218:7:31", + "nodeType": "YulIdentifier", + "src": "1218:7:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1208:6:31", + "nodeType": "YulIdentifier", + "src": "1208:6:31" + } + ] + }, + { + "nativeSrc": "1234:46:31", + "nodeType": "YulVariableDeclaration", + "src": "1234:46:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1265:9:31", + "nodeType": "YulIdentifier", + "src": "1265:9:31" + }, + { + "kind": "number", + "nativeSrc": "1276:2:31", + "nodeType": "YulLiteral", + "src": "1276:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1261:3:31", + "nodeType": "YulIdentifier", + "src": "1261:3:31" + }, + "nativeSrc": "1261:18:31", + "nodeType": "YulFunctionCall", + "src": "1261:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1248:12:31", + "nodeType": "YulIdentifier", + "src": "1248:12:31" + }, + "nativeSrc": "1248:32:31", + "nodeType": "YulFunctionCall", + "src": "1248:32:31" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1238:6:31", + "nodeType": "YulTypedName", + "src": "1238:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1289:28:31", + "nodeType": "YulVariableDeclaration", + "src": "1289:28:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1307:2:31", + "nodeType": "YulLiteral", + "src": "1307:2:31", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1311:1:31", + "nodeType": "YulLiteral", + "src": "1311:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1303:3:31", + "nodeType": "YulIdentifier", + "src": "1303:3:31" + }, + "nativeSrc": "1303:10:31", + "nodeType": "YulFunctionCall", + "src": "1303:10:31" + }, + { + "kind": "number", + "nativeSrc": "1315:1:31", + "nodeType": "YulLiteral", + "src": "1315:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1299:3:31", + "nodeType": "YulIdentifier", + "src": "1299:3:31" + }, + "nativeSrc": "1299:18:31", + "nodeType": "YulFunctionCall", + "src": "1299:18:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1293:2:31", + "nodeType": "YulTypedName", + "src": "1293:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1344:16:31", + "nodeType": "YulBlock", + "src": "1344:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1353:1:31", + "nodeType": "YulLiteral", + "src": "1353:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1356:1:31", + "nodeType": "YulLiteral", + "src": "1356:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1346:6:31", + "nodeType": "YulIdentifier", + "src": "1346:6:31" + }, + "nativeSrc": "1346:12:31", + "nodeType": "YulFunctionCall", + "src": "1346:12:31" + }, + "nativeSrc": "1346:12:31", + "nodeType": "YulExpressionStatement", + "src": "1346:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1332:6:31", + "nodeType": "YulIdentifier", + "src": "1332:6:31" + }, + { + "name": "_1", + "nativeSrc": "1340:2:31", + "nodeType": "YulIdentifier", + "src": "1340:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1329:2:31", + "nodeType": "YulIdentifier", + "src": "1329:2:31" + }, + "nativeSrc": "1329:14:31", + "nodeType": "YulFunctionCall", + "src": "1329:14:31" + }, + "nativeSrc": "1326:34:31", + "nodeType": "YulIf", + "src": "1326:34:31" + }, + { + "nativeSrc": "1369:32:31", + "nodeType": "YulVariableDeclaration", + "src": "1369:32:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1383:9:31", + "nodeType": "YulIdentifier", + "src": "1383:9:31" + }, + { + "name": "offset", + "nativeSrc": "1394:6:31", + "nodeType": "YulIdentifier", + "src": "1394:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1379:3:31", + "nodeType": "YulIdentifier", + "src": "1379:3:31" + }, + "nativeSrc": "1379:22:31", + "nodeType": "YulFunctionCall", + "src": "1379:22:31" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1373:2:31", + "nodeType": "YulTypedName", + "src": "1373:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1449:16:31", + "nodeType": "YulBlock", + "src": "1449:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1458:1:31", + "nodeType": "YulLiteral", + "src": "1458:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1461:1:31", + "nodeType": "YulLiteral", + "src": "1461:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1451:6:31", + "nodeType": "YulIdentifier", + "src": "1451:6:31" + }, + "nativeSrc": "1451:12:31", + "nodeType": "YulFunctionCall", + "src": "1451:12:31" + }, + "nativeSrc": "1451:12:31", + "nodeType": "YulExpressionStatement", + "src": "1451:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1428:2:31", + "nodeType": "YulIdentifier", + "src": "1428:2:31" + }, + { + "kind": "number", + "nativeSrc": "1432:4:31", + "nodeType": "YulLiteral", + "src": "1432:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1424:3:31", + "nodeType": "YulIdentifier", + "src": "1424:3:31" + }, + "nativeSrc": "1424:13:31", + "nodeType": "YulFunctionCall", + "src": "1424:13:31" + }, + { + "name": "dataEnd", + "nativeSrc": "1439:7:31", + "nodeType": "YulIdentifier", + "src": "1439:7:31" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1420:3:31", + "nodeType": "YulIdentifier", + "src": "1420:3:31" + }, + "nativeSrc": "1420:27:31", + "nodeType": "YulFunctionCall", + "src": "1420:27:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1413:6:31", + "nodeType": "YulIdentifier", + "src": "1413:6:31" + }, + "nativeSrc": "1413:35:31", + "nodeType": "YulFunctionCall", + "src": "1413:35:31" + }, + "nativeSrc": "1410:55:31", + "nodeType": "YulIf", + "src": "1410:55:31" + }, + { + "nativeSrc": "1474:26:31", + "nodeType": "YulVariableDeclaration", + "src": "1474:26:31", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1497:2:31", + "nodeType": "YulIdentifier", + "src": "1497:2:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1484:12:31", + "nodeType": "YulIdentifier", + "src": "1484:12:31" + }, + "nativeSrc": "1484:16:31", + "nodeType": "YulFunctionCall", + "src": "1484:16:31" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "1478:2:31", + "nodeType": "YulTypedName", + "src": "1478:2:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1523:22:31", + "nodeType": "YulBlock", + "src": "1523:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1525:16:31", + "nodeType": "YulIdentifier", + "src": "1525:16:31" + }, + "nativeSrc": "1525:18:31", + "nodeType": "YulFunctionCall", + "src": "1525:18:31" + }, + "nativeSrc": "1525:18:31", + "nodeType": "YulExpressionStatement", + "src": "1525:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1515:2:31", + "nodeType": "YulIdentifier", + "src": "1515:2:31" + }, + { + "name": "_1", + "nativeSrc": "1519:2:31", + "nodeType": "YulIdentifier", + "src": "1519:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1512:2:31", + "nodeType": "YulIdentifier", + "src": "1512:2:31" + }, + "nativeSrc": "1512:10:31", + "nodeType": "YulFunctionCall", + "src": "1512:10:31" + }, + "nativeSrc": "1509:36:31", + "nodeType": "YulIf", + "src": "1509:36:31" + }, + { + "nativeSrc": "1554:17:31", + "nodeType": "YulVariableDeclaration", + "src": "1554:17:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1568:2:31", + "nodeType": "YulLiteral", + "src": "1568:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1564:3:31", + "nodeType": "YulIdentifier", + "src": "1564:3:31" + }, + "nativeSrc": "1564:7:31", + "nodeType": "YulFunctionCall", + "src": "1564:7:31" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "1558:2:31", + "nodeType": "YulTypedName", + "src": "1558:2:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1580:23:31", + "nodeType": "YulVariableDeclaration", + "src": "1580:23:31", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1600:2:31", + "nodeType": "YulLiteral", + "src": "1600:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1594:5:31", + "nodeType": "YulIdentifier", + "src": "1594:5:31" + }, + "nativeSrc": "1594:9:31", + "nodeType": "YulFunctionCall", + "src": "1594:9:31" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1584:6:31", + "nodeType": "YulTypedName", + "src": "1584:6:31", + "type": "" + } + ] + }, + { + "nativeSrc": "1612:71:31", + "nodeType": "YulVariableDeclaration", + "src": "1612:71:31", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1634:6:31", + "nodeType": "YulIdentifier", + "src": "1634:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1658:2:31", + "nodeType": "YulIdentifier", + "src": "1658:2:31" + }, + { + "kind": "number", + "nativeSrc": "1662:4:31", + "nodeType": "YulLiteral", + "src": "1662:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1654:3:31", + "nodeType": "YulIdentifier", + "src": "1654:3:31" + }, + "nativeSrc": "1654:13:31", + "nodeType": "YulFunctionCall", + "src": "1654:13:31" + }, + { + "name": "_4", + "nativeSrc": "1669:2:31", + "nodeType": "YulIdentifier", + "src": "1669:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1650:3:31", + "nodeType": "YulIdentifier", + "src": "1650:3:31" + }, + "nativeSrc": "1650:22:31", + "nodeType": "YulFunctionCall", + "src": "1650:22:31" + }, + { + "kind": "number", + "nativeSrc": "1674:2:31", + "nodeType": "YulLiteral", + "src": "1674:2:31", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1646:3:31", + "nodeType": "YulIdentifier", + "src": "1646:3:31" + }, + "nativeSrc": "1646:31:31", + "nodeType": "YulFunctionCall", + "src": "1646:31:31" + }, + { + "name": "_4", + "nativeSrc": "1679:2:31", + "nodeType": "YulIdentifier", + "src": "1679:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1642:3:31", + "nodeType": "YulIdentifier", + "src": "1642:3:31" + }, + "nativeSrc": "1642:40:31", + "nodeType": "YulFunctionCall", + "src": "1642:40:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1630:3:31", + "nodeType": "YulIdentifier", + "src": "1630:3:31" + }, + "nativeSrc": "1630:53:31", + "nodeType": "YulFunctionCall", + "src": "1630:53:31" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1616:10:31", + "nodeType": "YulTypedName", + "src": "1616:10:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1742:22:31", + "nodeType": "YulBlock", + "src": "1742:22:31", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1744:16:31", + "nodeType": "YulIdentifier", + "src": "1744:16:31" + }, + "nativeSrc": "1744:18:31", + "nodeType": "YulFunctionCall", + "src": "1744:18:31" + }, + "nativeSrc": "1744:18:31", + "nodeType": "YulExpressionStatement", + "src": "1744:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1701:10:31", + "nodeType": "YulIdentifier", + "src": "1701:10:31" + }, + { + "name": "_1", + "nativeSrc": "1713:2:31", + "nodeType": "YulIdentifier", + "src": "1713:2:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1698:2:31", + "nodeType": "YulIdentifier", + "src": "1698:2:31" + }, + "nativeSrc": "1698:18:31", + "nodeType": "YulFunctionCall", + "src": "1698:18:31" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1721:10:31", + "nodeType": "YulIdentifier", + "src": "1721:10:31" + }, + { + "name": "memPtr", + "nativeSrc": "1733:6:31", + "nodeType": "YulIdentifier", + "src": "1733:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1718:2:31", + "nodeType": "YulIdentifier", + "src": "1718:2:31" + }, + "nativeSrc": "1718:22:31", + "nodeType": "YulFunctionCall", + "src": "1718:22:31" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1695:2:31", + "nodeType": "YulIdentifier", + "src": "1695:2:31" + }, + "nativeSrc": "1695:46:31", + "nodeType": "YulFunctionCall", + "src": "1695:46:31" + }, + "nativeSrc": "1692:72:31", + "nodeType": "YulIf", + "src": "1692:72:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1780:2:31", + "nodeType": "YulLiteral", + "src": "1780:2:31", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1784:10:31", + "nodeType": "YulIdentifier", + "src": "1784:10:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1773:6:31", + "nodeType": "YulIdentifier", + "src": "1773:6:31" + }, + "nativeSrc": "1773:22:31", + "nodeType": "YulFunctionCall", + "src": "1773:22:31" + }, + "nativeSrc": "1773:22:31", + "nodeType": "YulExpressionStatement", + "src": "1773:22:31" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1811:6:31", + "nodeType": "YulIdentifier", + "src": "1811:6:31" + }, + { + "name": "_3", + "nativeSrc": "1819:2:31", + "nodeType": "YulIdentifier", + "src": "1819:2:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1804:6:31", + "nodeType": "YulIdentifier", + "src": "1804:6:31" + }, + "nativeSrc": "1804:18:31", + "nodeType": "YulFunctionCall", + "src": "1804:18:31" + }, + "nativeSrc": "1804:18:31", + "nodeType": "YulExpressionStatement", + "src": "1804:18:31" + }, + { + "body": { + "nativeSrc": "1868:16:31", + "nodeType": "YulBlock", + "src": "1868:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1877:1:31", + "nodeType": "YulLiteral", + "src": "1877:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1880:1:31", + "nodeType": "YulLiteral", + "src": "1880:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1870:6:31", + "nodeType": "YulIdentifier", + "src": "1870:6:31" + }, + "nativeSrc": "1870:12:31", + "nodeType": "YulFunctionCall", + "src": "1870:12:31" + }, + "nativeSrc": "1870:12:31", + "nodeType": "YulExpressionStatement", + "src": "1870:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1845:2:31", + "nodeType": "YulIdentifier", + "src": "1845:2:31" + }, + { + "name": "_3", + "nativeSrc": "1849:2:31", + "nodeType": "YulIdentifier", + "src": "1849:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1841:3:31", + "nodeType": "YulIdentifier", + "src": "1841:3:31" + }, + "nativeSrc": "1841:11:31", + "nodeType": "YulFunctionCall", + "src": "1841:11:31" + }, + { + "kind": "number", + "nativeSrc": "1854:2:31", + "nodeType": "YulLiteral", + "src": "1854:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1837:3:31", + "nodeType": "YulIdentifier", + "src": "1837:3:31" + }, + "nativeSrc": "1837:20:31", + "nodeType": "YulFunctionCall", + "src": "1837:20:31" + }, + { + "name": "dataEnd", + "nativeSrc": "1859:7:31", + "nodeType": "YulIdentifier", + "src": "1859:7:31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1834:2:31", + "nodeType": "YulIdentifier", + "src": "1834:2:31" + }, + "nativeSrc": "1834:33:31", + "nodeType": "YulFunctionCall", + "src": "1834:33:31" + }, + "nativeSrc": "1831:53:31", + "nodeType": "YulIf", + "src": "1831:53:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1910:6:31", + "nodeType": "YulIdentifier", + "src": "1910:6:31" + }, + { + "kind": "number", + "nativeSrc": "1918:2:31", + "nodeType": "YulLiteral", + "src": "1918:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1906:3:31", + "nodeType": "YulIdentifier", + "src": "1906:3:31" + }, + "nativeSrc": "1906:15:31", + "nodeType": "YulFunctionCall", + "src": "1906:15:31" + }, + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1927:2:31", + "nodeType": "YulIdentifier", + "src": "1927:2:31" + }, + { + "kind": "number", + "nativeSrc": "1931:2:31", + "nodeType": "YulLiteral", + "src": "1931:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1923:3:31", + "nodeType": "YulIdentifier", + "src": "1923:3:31" + }, + "nativeSrc": "1923:11:31", + "nodeType": "YulFunctionCall", + "src": "1923:11:31" + }, + { + "name": "_3", + "nativeSrc": "1936:2:31", + "nodeType": "YulIdentifier", + "src": "1936:2:31" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1893:12:31", + "nodeType": "YulIdentifier", + "src": "1893:12:31" + }, + "nativeSrc": "1893:46:31", + "nodeType": "YulFunctionCall", + "src": "1893:46:31" + }, + "nativeSrc": "1893:46:31", + "nodeType": "YulExpressionStatement", + "src": "1893:46:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1963:6:31", + "nodeType": "YulIdentifier", + "src": "1963:6:31" + }, + { + "name": "_3", + "nativeSrc": "1971:2:31", + "nodeType": "YulIdentifier", + "src": "1971:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1959:3:31", + "nodeType": "YulIdentifier", + "src": "1959:3:31" + }, + "nativeSrc": "1959:15:31", + "nodeType": "YulFunctionCall", + "src": "1959:15:31" + }, + { + "kind": "number", + "nativeSrc": "1976:2:31", + "nodeType": "YulLiteral", + "src": "1976:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1955:3:31", + "nodeType": "YulIdentifier", + "src": "1955:3:31" + }, + "nativeSrc": "1955:24:31", + "nodeType": "YulFunctionCall", + "src": "1955:24:31" + }, + { + "kind": "number", + "nativeSrc": "1981:1:31", + "nodeType": "YulLiteral", + "src": "1981:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1948:6:31", + "nodeType": "YulIdentifier", + "src": "1948:6:31" + }, + "nativeSrc": "1948:35:31", + "nodeType": "YulFunctionCall", + "src": "1948:35:31" + }, + "nativeSrc": "1948:35:31", + "nodeType": "YulExpressionStatement", + "src": "1948:35:31" + }, + { + "nativeSrc": "1992:16:31", + "nodeType": "YulAssignment", + "src": "1992:16:31", + "value": { + "name": "memPtr", + "nativeSrc": "2002:6:31", + "nodeType": "YulIdentifier", + "src": "2002:6:31" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1992:6:31", + "nodeType": "YulIdentifier", + "src": "1992:6:31" + } + ] + }, + { + "nativeSrc": "2017:42:31", + "nodeType": "YulAssignment", + "src": "2017:42:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2044:9:31", + "nodeType": "YulIdentifier", + "src": "2044:9:31" + }, + { + "kind": "number", + "nativeSrc": "2055:2:31", + "nodeType": "YulLiteral", + "src": "2055:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2040:3:31", + "nodeType": "YulIdentifier", + "src": "2040:3:31" + }, + "nativeSrc": "2040:18:31", + "nodeType": "YulFunctionCall", + "src": "2040:18:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2027:12:31", + "nodeType": "YulIdentifier", + "src": "2027:12:31" + }, + "nativeSrc": "2027:32:31", + "nodeType": "YulFunctionCall", + "src": "2027:32:31" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "2017:6:31", + "nodeType": "YulIdentifier", + "src": "2017:6:31" + } + ] + }, + { + "nativeSrc": "2068:43:31", + "nodeType": "YulAssignment", + "src": "2068:43:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2095:9:31", + "nodeType": "YulIdentifier", + "src": "2095:9:31" + }, + { + "kind": "number", + "nativeSrc": "2106:3:31", + "nodeType": "YulLiteral", + "src": "2106:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2091:3:31", + "nodeType": "YulIdentifier", + "src": "2091:3:31" + }, + "nativeSrc": "2091:19:31", + "nodeType": "YulFunctionCall", + "src": "2091:19:31" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2078:12:31", + "nodeType": "YulIdentifier", + "src": "2078:12:31" + }, + "nativeSrc": "2078:33:31", + "nodeType": "YulFunctionCall", + "src": "2078:33:31" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "2068:6:31", + "nodeType": "YulIdentifier", + "src": "2068:6:31" + } + ] + }, + { + "nativeSrc": "2120:57:31", + "nodeType": "YulAssignment", + "src": "2120:57:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2161:9:31", + "nodeType": "YulIdentifier", + "src": "2161:9:31" + }, + { + "kind": "number", + "nativeSrc": "2172:3:31", + "nodeType": "YulLiteral", + "src": "2172:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2157:3:31", + "nodeType": "YulIdentifier", + "src": "2157:3:31" + }, + "nativeSrc": "2157:19:31", + "nodeType": "YulFunctionCall", + "src": "2157:19:31" + } + ], + "functionName": { + "name": "abi_decode_contract_IERC20", + "nativeSrc": "2130:26:31", + "nodeType": "YulIdentifier", + "src": "2130:26:31" + }, + "nativeSrc": "2130:47:31", + "nodeType": "YulFunctionCall", + "src": "2130:47:31" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "2120:6:31", + "nodeType": "YulIdentifier", + "src": "2120:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798", + "nativeSrc": "749:1434:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "855:9:31", + "nodeType": "YulTypedName", + "src": "855:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "866:7:31", + "nodeType": "YulTypedName", + "src": "866:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "878:6:31", + "nodeType": "YulTypedName", + "src": "878:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "886:6:31", + "nodeType": "YulTypedName", + "src": "886:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "894:6:31", + "nodeType": "YulTypedName", + "src": "894:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "902:6:31", + "nodeType": "YulTypedName", + "src": "902:6:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "910:6:31", + "nodeType": "YulTypedName", + "src": "910:6:31", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "918:6:31", + "nodeType": "YulTypedName", + "src": "918:6:31", + "type": "" + } + ], + "src": "749:1434:31" + }, + { + "body": { + "nativeSrc": "2289:76:31", + "nodeType": "YulBlock", + "src": "2289:76:31", + "statements": [ + { + "nativeSrc": "2299:26:31", + "nodeType": "YulAssignment", + "src": "2299:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2311:9:31", + "nodeType": "YulIdentifier", + "src": "2311:9:31" + }, + { + "kind": "number", + "nativeSrc": "2322:2:31", + "nodeType": "YulLiteral", + "src": "2322:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2307:3:31", + "nodeType": "YulIdentifier", + "src": "2307:3:31" + }, + "nativeSrc": "2307:18:31", + "nodeType": "YulFunctionCall", + "src": "2307:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2299:4:31", + "nodeType": "YulIdentifier", + "src": "2299:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2341:9:31", + "nodeType": "YulIdentifier", + "src": "2341:9:31" + }, + { + "name": "value0", + "nativeSrc": "2352:6:31", + "nodeType": "YulIdentifier", + "src": "2352:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2334:6:31", + "nodeType": "YulIdentifier", + "src": "2334:6:31" + }, + "nativeSrc": "2334:25:31", + "nodeType": "YulFunctionCall", + "src": "2334:25:31" + }, + "nativeSrc": "2334:25:31", + "nodeType": "YulExpressionStatement", + "src": "2334:25:31" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "2188:177:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2258:9:31", + "nodeType": "YulTypedName", + "src": "2258:9:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2269:6:31", + "nodeType": "YulTypedName", + "src": "2269:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2280:4:31", + "nodeType": "YulTypedName", + "src": "2280:4:31", + "type": "" + } + ], + "src": "2188:177:31" + }, + { + "body": { + "nativeSrc": "2483:214:31", + "nodeType": "YulBlock", + "src": "2483:214:31", + "statements": [ + { + "body": { + "nativeSrc": "2529:16:31", + "nodeType": "YulBlock", + "src": "2529:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2538:1:31", + "nodeType": "YulLiteral", + "src": "2538:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2541:1:31", + "nodeType": "YulLiteral", + "src": "2541:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2531:6:31", + "nodeType": "YulIdentifier", + "src": "2531:6:31" + }, + "nativeSrc": "2531:12:31", + "nodeType": "YulFunctionCall", + "src": "2531:12:31" + }, + "nativeSrc": "2531:12:31", + "nodeType": "YulExpressionStatement", + "src": "2531:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2504:7:31", + "nodeType": "YulIdentifier", + "src": "2504:7:31" + }, + { + "name": "headStart", + "nativeSrc": "2513:9:31", + "nodeType": "YulIdentifier", + "src": "2513:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2500:3:31", + "nodeType": "YulIdentifier", + "src": "2500:3:31" + }, + "nativeSrc": "2500:23:31", + "nodeType": "YulFunctionCall", + "src": "2500:23:31" + }, + { + "kind": "number", + "nativeSrc": "2525:2:31", + "nodeType": "YulLiteral", + "src": "2525:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2496:3:31", + "nodeType": "YulIdentifier", + "src": "2496:3:31" + }, + "nativeSrc": "2496:32:31", + "nodeType": "YulFunctionCall", + "src": "2496:32:31" + }, + "nativeSrc": "2493:52:31", + "nodeType": "YulIf", + "src": "2493:52:31" + }, + { + "nativeSrc": "2554:26:31", + "nodeType": "YulAssignment", + "src": "2554:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2570:9:31", + "nodeType": "YulIdentifier", + "src": "2570:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2564:5:31", + "nodeType": "YulIdentifier", + "src": "2564:5:31" + }, + "nativeSrc": "2564:16:31", + "nodeType": "YulFunctionCall", + "src": "2564:16:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2554:6:31", + "nodeType": "YulIdentifier", + "src": "2554:6:31" + } + ] + }, + { + "nativeSrc": "2589:38:31", + "nodeType": "YulVariableDeclaration", + "src": "2589:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2612:9:31", + "nodeType": "YulIdentifier", + "src": "2612:9:31" + }, + { + "kind": "number", + "nativeSrc": "2623:2:31", + "nodeType": "YulLiteral", + "src": "2623:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2608:3:31", + "nodeType": "YulIdentifier", + "src": "2608:3:31" + }, + "nativeSrc": "2608:18:31", + "nodeType": "YulFunctionCall", + "src": "2608:18:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2602:5:31", + "nodeType": "YulIdentifier", + "src": "2602:5:31" + }, + "nativeSrc": "2602:25:31", + "nodeType": "YulFunctionCall", + "src": "2602:25:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2593:5:31", + "nodeType": "YulTypedName", + "src": "2593:5:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2661:5:31", + "nodeType": "YulIdentifier", + "src": "2661:5:31" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2636:24:31", + "nodeType": "YulIdentifier", + "src": "2636:24:31" + }, + "nativeSrc": "2636:31:31", + "nodeType": "YulFunctionCall", + "src": "2636:31:31" + }, + "nativeSrc": "2636:31:31", + "nodeType": "YulExpressionStatement", + "src": "2636:31:31" + }, + { + "nativeSrc": "2676:15:31", + "nodeType": "YulAssignment", + "src": "2676:15:31", + "value": { + "name": "value", + "nativeSrc": "2686:5:31", + "nodeType": "YulIdentifier", + "src": "2686:5:31" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2676:6:31", + "nodeType": "YulIdentifier", + "src": "2676:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_contract$_IERC20_$1798_fromMemory", + "nativeSrc": "2370:327:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2441:9:31", + "nodeType": "YulTypedName", + "src": "2441:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2452:7:31", + "nodeType": "YulTypedName", + "src": "2452:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2464:6:31", + "nodeType": "YulTypedName", + "src": "2464:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2472:6:31", + "nodeType": "YulTypedName", + "src": "2472:6:31", + "type": "" + } + ], + "src": "2370:327:31" + }, + { + "body": { + "nativeSrc": "2831:145:31", + "nodeType": "YulBlock", + "src": "2831:145:31", + "statements": [ + { + "nativeSrc": "2841:26:31", + "nodeType": "YulAssignment", + "src": "2841:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2853:9:31", + "nodeType": "YulIdentifier", + "src": "2853:9:31" + }, + { + "kind": "number", + "nativeSrc": "2864:2:31", + "nodeType": "YulLiteral", + "src": "2864:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2849:3:31", + "nodeType": "YulIdentifier", + "src": "2849:3:31" + }, + "nativeSrc": "2849:18:31", + "nodeType": "YulFunctionCall", + "src": "2849:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2841:4:31", + "nodeType": "YulIdentifier", + "src": "2841:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2883:9:31", + "nodeType": "YulIdentifier", + "src": "2883:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2898:6:31", + "nodeType": "YulIdentifier", + "src": "2898:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2914:3:31", + "nodeType": "YulLiteral", + "src": "2914:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2919:1:31", + "nodeType": "YulLiteral", + "src": "2919:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2910:3:31", + "nodeType": "YulIdentifier", + "src": "2910:3:31" + }, + "nativeSrc": "2910:11:31", + "nodeType": "YulFunctionCall", + "src": "2910:11:31" + }, + { + "kind": "number", + "nativeSrc": "2923:1:31", + "nodeType": "YulLiteral", + "src": "2923:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2906:3:31", + "nodeType": "YulIdentifier", + "src": "2906:3:31" + }, + "nativeSrc": "2906:19:31", + "nodeType": "YulFunctionCall", + "src": "2906:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2894:3:31", + "nodeType": "YulIdentifier", + "src": "2894:3:31" + }, + "nativeSrc": "2894:32:31", + "nodeType": "YulFunctionCall", + "src": "2894:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2876:6:31", + "nodeType": "YulIdentifier", + "src": "2876:6:31" + }, + "nativeSrc": "2876:51:31", + "nodeType": "YulFunctionCall", + "src": "2876:51:31" + }, + "nativeSrc": "2876:51:31", + "nodeType": "YulExpressionStatement", + "src": "2876:51:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2947:9:31", + "nodeType": "YulIdentifier", + "src": "2947:9:31" + }, + { + "kind": "number", + "nativeSrc": "2958:2:31", + "nodeType": "YulLiteral", + "src": "2958:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2943:3:31", + "nodeType": "YulIdentifier", + "src": "2943:3:31" + }, + "nativeSrc": "2943:18:31", + "nodeType": "YulFunctionCall", + "src": "2943:18:31" + }, + { + "name": "value1", + "nativeSrc": "2963:6:31", + "nodeType": "YulIdentifier", + "src": "2963:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2936:6:31", + "nodeType": "YulIdentifier", + "src": "2936:6:31" + }, + "nativeSrc": "2936:34:31", + "nodeType": "YulFunctionCall", + "src": "2936:34:31" + }, + "nativeSrc": "2936:34:31", + "nodeType": "YulExpressionStatement", + "src": "2936:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "2702:274:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2792:9:31", + "nodeType": "YulTypedName", + "src": "2792:9:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2803:6:31", + "nodeType": "YulTypedName", + "src": "2803:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2811:6:31", + "nodeType": "YulTypedName", + "src": "2811:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2822:4:31", + "nodeType": "YulTypedName", + "src": "2822:4:31", + "type": "" + } + ], + "src": "2702:274:31" + }, + { + "body": { + "nativeSrc": "3059:199:31", + "nodeType": "YulBlock", + "src": "3059:199:31", + "statements": [ + { + "body": { + "nativeSrc": "3105:16:31", + "nodeType": "YulBlock", + "src": "3105:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3114:1:31", + "nodeType": "YulLiteral", + "src": "3114:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3117:1:31", + "nodeType": "YulLiteral", + "src": "3117:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3107:6:31", + "nodeType": "YulIdentifier", + "src": "3107:6:31" + }, + "nativeSrc": "3107:12:31", + "nodeType": "YulFunctionCall", + "src": "3107:12:31" + }, + "nativeSrc": "3107:12:31", + "nodeType": "YulExpressionStatement", + "src": "3107:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3080:7:31", + "nodeType": "YulIdentifier", + "src": "3080:7:31" + }, + { + "name": "headStart", + "nativeSrc": "3089:9:31", + "nodeType": "YulIdentifier", + "src": "3089:9:31" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3076:3:31", + "nodeType": "YulIdentifier", + "src": "3076:3:31" + }, + "nativeSrc": "3076:23:31", + "nodeType": "YulFunctionCall", + "src": "3076:23:31" + }, + { + "kind": "number", + "nativeSrc": "3101:2:31", + "nodeType": "YulLiteral", + "src": "3101:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3072:3:31", + "nodeType": "YulIdentifier", + "src": "3072:3:31" + }, + "nativeSrc": "3072:32:31", + "nodeType": "YulFunctionCall", + "src": "3072:32:31" + }, + "nativeSrc": "3069:52:31", + "nodeType": "YulIf", + "src": "3069:52:31" + }, + { + "nativeSrc": "3130:29:31", + "nodeType": "YulVariableDeclaration", + "src": "3130:29:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3149:9:31", + "nodeType": "YulIdentifier", + "src": "3149:9:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3143:5:31", + "nodeType": "YulIdentifier", + "src": "3143:5:31" + }, + "nativeSrc": "3143:16:31", + "nodeType": "YulFunctionCall", + "src": "3143:16:31" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3134:5:31", + "nodeType": "YulTypedName", + "src": "3134:5:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3212:16:31", + "nodeType": "YulBlock", + "src": "3212:16:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3221:1:31", + "nodeType": "YulLiteral", + "src": "3221:1:31", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3224:1:31", + "nodeType": "YulLiteral", + "src": "3224:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3214:6:31", + "nodeType": "YulIdentifier", + "src": "3214:6:31" + }, + "nativeSrc": "3214:12:31", + "nodeType": "YulFunctionCall", + "src": "3214:12:31" + }, + "nativeSrc": "3214:12:31", + "nodeType": "YulExpressionStatement", + "src": "3214:12:31" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3181:5:31", + "nodeType": "YulIdentifier", + "src": "3181:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3202:5:31", + "nodeType": "YulIdentifier", + "src": "3202:5:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3195:6:31", + "nodeType": "YulIdentifier", + "src": "3195:6:31" + }, + "nativeSrc": "3195:13:31", + "nodeType": "YulFunctionCall", + "src": "3195:13:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3188:6:31", + "nodeType": "YulIdentifier", + "src": "3188:6:31" + }, + "nativeSrc": "3188:21:31", + "nodeType": "YulFunctionCall", + "src": "3188:21:31" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "3178:2:31", + "nodeType": "YulIdentifier", + "src": "3178:2:31" + }, + "nativeSrc": "3178:32:31", + "nodeType": "YulFunctionCall", + "src": "3178:32:31" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3171:6:31", + "nodeType": "YulIdentifier", + "src": "3171:6:31" + }, + "nativeSrc": "3171:40:31", + "nodeType": "YulFunctionCall", + "src": "3171:40:31" + }, + "nativeSrc": "3168:60:31", + "nodeType": "YulIf", + "src": "3168:60:31" + }, + { + "nativeSrc": "3237:15:31", + "nodeType": "YulAssignment", + "src": "3237:15:31", + "value": { + "name": "value", + "nativeSrc": "3247:5:31", + "nodeType": "YulIdentifier", + "src": "3247:5:31" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3237:6:31", + "nodeType": "YulIdentifier", + "src": "3237:6:31" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "2981:277:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3025:9:31", + "nodeType": "YulTypedName", + "src": "3025:9:31", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3036:7:31", + "nodeType": "YulTypedName", + "src": "3036:7:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3048:6:31", + "nodeType": "YulTypedName", + "src": "3048:6:31", + "type": "" + } + ], + "src": "2981:277:31" + }, + { + "body": { + "nativeSrc": "3420:218:31", + "nodeType": "YulBlock", + "src": "3420:218:31", + "statements": [ + { + "nativeSrc": "3430:26:31", + "nodeType": "YulAssignment", + "src": "3430:26:31", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3442:9:31", + "nodeType": "YulIdentifier", + "src": "3442:9:31" + }, + { + "kind": "number", + "nativeSrc": "3453:2:31", + "nodeType": "YulLiteral", + "src": "3453:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3438:3:31", + "nodeType": "YulIdentifier", + "src": "3438:3:31" + }, + "nativeSrc": "3438:18:31", + "nodeType": "YulFunctionCall", + "src": "3438:18:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3430:4:31", + "nodeType": "YulIdentifier", + "src": "3430:4:31" + } + ] + }, + { + "nativeSrc": "3465:29:31", + "nodeType": "YulVariableDeclaration", + "src": "3465:29:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3483:3:31", + "nodeType": "YulLiteral", + "src": "3483:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3488:1:31", + "nodeType": "YulLiteral", + "src": "3488:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3479:3:31", + "nodeType": "YulIdentifier", + "src": "3479:3:31" + }, + "nativeSrc": "3479:11:31", + "nodeType": "YulFunctionCall", + "src": "3479:11:31" + }, + { + "kind": "number", + "nativeSrc": "3492:1:31", + "nodeType": "YulLiteral", + "src": "3492:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3475:3:31", + "nodeType": "YulIdentifier", + "src": "3475:3:31" + }, + "nativeSrc": "3475:19:31", + "nodeType": "YulFunctionCall", + "src": "3475:19:31" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3469:2:31", + "nodeType": "YulTypedName", + "src": "3469:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3510:9:31", + "nodeType": "YulIdentifier", + "src": "3510:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3525:6:31", + "nodeType": "YulIdentifier", + "src": "3525:6:31" + }, + { + "name": "_1", + "nativeSrc": "3533:2:31", + "nodeType": "YulIdentifier", + "src": "3533:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3521:3:31", + "nodeType": "YulIdentifier", + "src": "3521:3:31" + }, + "nativeSrc": "3521:15:31", + "nodeType": "YulFunctionCall", + "src": "3521:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3503:6:31", + "nodeType": "YulIdentifier", + "src": "3503:6:31" + }, + "nativeSrc": "3503:34:31", + "nodeType": "YulFunctionCall", + "src": "3503:34:31" + }, + "nativeSrc": "3503:34:31", + "nodeType": "YulExpressionStatement", + "src": "3503:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3557:9:31", + "nodeType": "YulIdentifier", + "src": "3557:9:31" + }, + { + "kind": "number", + "nativeSrc": "3568:2:31", + "nodeType": "YulLiteral", + "src": "3568:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3553:3:31", + "nodeType": "YulIdentifier", + "src": "3553:3:31" + }, + "nativeSrc": "3553:18:31", + "nodeType": "YulFunctionCall", + "src": "3553:18:31" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "3577:6:31", + "nodeType": "YulIdentifier", + "src": "3577:6:31" + }, + { + "name": "_1", + "nativeSrc": "3585:2:31", + "nodeType": "YulIdentifier", + "src": "3585:2:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3573:3:31", + "nodeType": "YulIdentifier", + "src": "3573:3:31" + }, + "nativeSrc": "3573:15:31", + "nodeType": "YulFunctionCall", + "src": "3573:15:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3546:6:31", + "nodeType": "YulIdentifier", + "src": "3546:6:31" + }, + "nativeSrc": "3546:43:31", + "nodeType": "YulFunctionCall", + "src": "3546:43:31" + }, + "nativeSrc": "3546:43:31", + "nodeType": "YulExpressionStatement", + "src": "3546:43:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3609:9:31", + "nodeType": "YulIdentifier", + "src": "3609:9:31" + }, + { + "kind": "number", + "nativeSrc": "3620:2:31", + "nodeType": "YulLiteral", + "src": "3620:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3605:3:31", + "nodeType": "YulIdentifier", + "src": "3605:3:31" + }, + "nativeSrc": "3605:18:31", + "nodeType": "YulFunctionCall", + "src": "3605:18:31" + }, + { + "name": "value2", + "nativeSrc": "3625:6:31", + "nodeType": "YulIdentifier", + "src": "3625:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3598:6:31", + "nodeType": "YulIdentifier", + "src": "3598:6:31" + }, + "nativeSrc": "3598:34:31", + "nodeType": "YulFunctionCall", + "src": "3598:34:31" + }, + "nativeSrc": "3598:34:31", + "nodeType": "YulExpressionStatement", + "src": "3598:34:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "3263:375:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3373:9:31", + "nodeType": "YulTypedName", + "src": "3373:9:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3384:6:31", + "nodeType": "YulTypedName", + "src": "3384:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3392:6:31", + "nodeType": "YulTypedName", + "src": "3392:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3400:6:31", + "nodeType": "YulTypedName", + "src": "3400:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3411:4:31", + "nodeType": "YulTypedName", + "src": "3411:4:31", + "type": "" + } + ], + "src": "3263:375:31" + }, + { + "body": { + "nativeSrc": "3695:60:31", + "nodeType": "YulBlock", + "src": "3695:60:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3712:3:31", + "nodeType": "YulIdentifier", + "src": "3712:3:31" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3721:5:31", + "nodeType": "YulIdentifier", + "src": "3721:5:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3736:3:31", + "nodeType": "YulLiteral", + "src": "3736:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3741:1:31", + "nodeType": "YulLiteral", + "src": "3741:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3732:3:31", + "nodeType": "YulIdentifier", + "src": "3732:3:31" + }, + "nativeSrc": "3732:11:31", + "nodeType": "YulFunctionCall", + "src": "3732:11:31" + }, + { + "kind": "number", + "nativeSrc": "3745:1:31", + "nodeType": "YulLiteral", + "src": "3745:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3728:3:31", + "nodeType": "YulIdentifier", + "src": "3728:3:31" + }, + "nativeSrc": "3728:19:31", + "nodeType": "YulFunctionCall", + "src": "3728:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3717:3:31", + "nodeType": "YulIdentifier", + "src": "3717:3:31" + }, + "nativeSrc": "3717:31:31", + "nodeType": "YulFunctionCall", + "src": "3717:31:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3705:6:31", + "nodeType": "YulIdentifier", + "src": "3705:6:31" + }, + "nativeSrc": "3705:44:31", + "nodeType": "YulFunctionCall", + "src": "3705:44:31" + }, + "nativeSrc": "3705:44:31", + "nodeType": "YulExpressionStatement", + "src": "3705:44:31" + } + ] + }, + "name": "abi_encode_contract_IERC20", + "nativeSrc": "3643:112:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3679:5:31", + "nodeType": "YulTypedName", + "src": "3679:5:31", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3686:3:31", + "nodeType": "YulTypedName", + "src": "3686:3:31", + "type": "" + } + ], + "src": "3643:112:31" + }, + { + "body": { + "nativeSrc": "4008:651:31", + "nodeType": "YulBlock", + "src": "4008:651:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4025:9:31", + "nodeType": "YulIdentifier", + "src": "4025:9:31" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4040:6:31", + "nodeType": "YulIdentifier", + "src": "4040:6:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4056:3:31", + "nodeType": "YulLiteral", + "src": "4056:3:31", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4061:1:31", + "nodeType": "YulLiteral", + "src": "4061:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4052:3:31", + "nodeType": "YulIdentifier", + "src": "4052:3:31" + }, + "nativeSrc": "4052:11:31", + "nodeType": "YulFunctionCall", + "src": "4052:11:31" + }, + { + "kind": "number", + "nativeSrc": "4065:1:31", + "nodeType": "YulLiteral", + "src": "4065:1:31", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4048:3:31", + "nodeType": "YulIdentifier", + "src": "4048:3:31" + }, + "nativeSrc": "4048:19:31", + "nodeType": "YulFunctionCall", + "src": "4048:19:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4036:3:31", + "nodeType": "YulIdentifier", + "src": "4036:3:31" + }, + "nativeSrc": "4036:32:31", + "nodeType": "YulFunctionCall", + "src": "4036:32:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4018:6:31", + "nodeType": "YulIdentifier", + "src": "4018:6:31" + }, + "nativeSrc": "4018:51:31", + "nodeType": "YulFunctionCall", + "src": "4018:51:31" + }, + "nativeSrc": "4018:51:31", + "nodeType": "YulExpressionStatement", + "src": "4018:51:31" + }, + { + "nativeSrc": "4078:12:31", + "nodeType": "YulVariableDeclaration", + "src": "4078:12:31", + "value": { + "kind": "number", + "nativeSrc": "4088:2:31", + "nodeType": "YulLiteral", + "src": "4088:2:31", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4082:2:31", + "nodeType": "YulTypedName", + "src": "4082:2:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4110:9:31", + "nodeType": "YulIdentifier", + "src": "4110:9:31" + }, + { + "kind": "number", + "nativeSrc": "4121:2:31", + "nodeType": "YulLiteral", + "src": "4121:2:31", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4106:3:31", + "nodeType": "YulIdentifier", + "src": "4106:3:31" + }, + "nativeSrc": "4106:18:31", + "nodeType": "YulFunctionCall", + "src": "4106:18:31" + }, + { + "kind": "number", + "nativeSrc": "4126:3:31", + "nodeType": "YulLiteral", + "src": "4126:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4099:6:31", + "nodeType": "YulIdentifier", + "src": "4099:6:31" + }, + "nativeSrc": "4099:31:31", + "nodeType": "YulFunctionCall", + "src": "4099:31:31" + }, + "nativeSrc": "4099:31:31", + "nodeType": "YulExpressionStatement", + "src": "4099:31:31" + }, + { + "nativeSrc": "4139:27:31", + "nodeType": "YulVariableDeclaration", + "src": "4139:27:31", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "4159:6:31", + "nodeType": "YulIdentifier", + "src": "4159:6:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4153:5:31", + "nodeType": "YulIdentifier", + "src": "4153:5:31" + }, + "nativeSrc": "4153:13:31", + "nodeType": "YulFunctionCall", + "src": "4153:13:31" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4143:6:31", + "nodeType": "YulTypedName", + "src": "4143:6:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4186:9:31", + "nodeType": "YulIdentifier", + "src": "4186:9:31" + }, + { + "kind": "number", + "nativeSrc": "4197:3:31", + "nodeType": "YulLiteral", + "src": "4197:3:31", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4182:3:31", + "nodeType": "YulIdentifier", + "src": "4182:3:31" + }, + "nativeSrc": "4182:19:31", + "nodeType": "YulFunctionCall", + "src": "4182:19:31" + }, + { + "name": "length", + "nativeSrc": "4203:6:31", + "nodeType": "YulIdentifier", + "src": "4203:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4175:6:31", + "nodeType": "YulIdentifier", + "src": "4175:6:31" + }, + "nativeSrc": "4175:35:31", + "nodeType": "YulFunctionCall", + "src": "4175:35:31" + }, + "nativeSrc": "4175:35:31", + "nodeType": "YulExpressionStatement", + "src": "4175:35:31" + }, + { + "nativeSrc": "4219:10:31", + "nodeType": "YulVariableDeclaration", + "src": "4219:10:31", + "value": { + "kind": "number", + "nativeSrc": "4228:1:31", + "nodeType": "YulLiteral", + "src": "4228:1:31", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4223:1:31", + "nodeType": "YulTypedName", + "src": "4223:1:31", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4288:91:31", + "nodeType": "YulBlock", + "src": "4288:91:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4317:9:31", + "nodeType": "YulIdentifier", + "src": "4317:9:31" + }, + { + "name": "i", + "nativeSrc": "4328:1:31", + "nodeType": "YulIdentifier", + "src": "4328:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4313:3:31", + "nodeType": "YulIdentifier", + "src": "4313:3:31" + }, + "nativeSrc": "4313:17:31", + "nodeType": "YulFunctionCall", + "src": "4313:17:31" + }, + { + "kind": "number", + "nativeSrc": "4332:3:31", + "nodeType": "YulLiteral", + "src": "4332:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4309:3:31", + "nodeType": "YulIdentifier", + "src": "4309:3:31" + }, + "nativeSrc": "4309:27:31", + "nodeType": "YulFunctionCall", + "src": "4309:27:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "4352:6:31", + "nodeType": "YulIdentifier", + "src": "4352:6:31" + }, + { + "name": "i", + "nativeSrc": "4360:1:31", + "nodeType": "YulIdentifier", + "src": "4360:1:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4348:3:31", + "nodeType": "YulIdentifier", + "src": "4348:3:31" + }, + "nativeSrc": "4348:14:31", + "nodeType": "YulFunctionCall", + "src": "4348:14:31" + }, + { + "name": "_1", + "nativeSrc": "4364:2:31", + "nodeType": "YulIdentifier", + "src": "4364:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4344:3:31", + "nodeType": "YulIdentifier", + "src": "4344:3:31" + }, + "nativeSrc": "4344:23:31", + "nodeType": "YulFunctionCall", + "src": "4344:23:31" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4338:5:31", + "nodeType": "YulIdentifier", + "src": "4338:5:31" + }, + "nativeSrc": "4338:30:31", + "nodeType": "YulFunctionCall", + "src": "4338:30:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4302:6:31", + "nodeType": "YulIdentifier", + "src": "4302:6:31" + }, + "nativeSrc": "4302:67:31", + "nodeType": "YulFunctionCall", + "src": "4302:67:31" + }, + "nativeSrc": "4302:67:31", + "nodeType": "YulExpressionStatement", + "src": "4302:67:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4249:1:31", + "nodeType": "YulIdentifier", + "src": "4249:1:31" + }, + { + "name": "length", + "nativeSrc": "4252:6:31", + "nodeType": "YulIdentifier", + "src": "4252:6:31" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4246:2:31", + "nodeType": "YulIdentifier", + "src": "4246:2:31" + }, + "nativeSrc": "4246:13:31", + "nodeType": "YulFunctionCall", + "src": "4246:13:31" + }, + "nativeSrc": "4238:141:31", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4260:19:31", + "nodeType": "YulBlock", + "src": "4260:19:31", + "statements": [ + { + "nativeSrc": "4262:15:31", + "nodeType": "YulAssignment", + "src": "4262:15:31", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4271:1:31", + "nodeType": "YulIdentifier", + "src": "4271:1:31" + }, + { + "name": "_1", + "nativeSrc": "4274:2:31", + "nodeType": "YulIdentifier", + "src": "4274:2:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4267:3:31", + "nodeType": "YulIdentifier", + "src": "4267:3:31" + }, + "nativeSrc": "4267:10:31", + "nodeType": "YulFunctionCall", + "src": "4267:10:31" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4262:1:31", + "nodeType": "YulIdentifier", + "src": "4262:1:31" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "4242:3:31", + "nodeType": "YulBlock", + "src": "4242:3:31", + "statements": [] + }, + "src": "4238:141:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4403:9:31", + "nodeType": "YulIdentifier", + "src": "4403:9:31" + }, + { + "name": "length", + "nativeSrc": "4414:6:31", + "nodeType": "YulIdentifier", + "src": "4414:6:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4399:3:31", + "nodeType": "YulIdentifier", + "src": "4399:3:31" + }, + "nativeSrc": "4399:22:31", + "nodeType": "YulFunctionCall", + "src": "4399:22:31" + }, + { + "kind": "number", + "nativeSrc": "4423:3:31", + "nodeType": "YulLiteral", + "src": "4423:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4395:3:31", + "nodeType": "YulIdentifier", + "src": "4395:3:31" + }, + "nativeSrc": "4395:32:31", + "nodeType": "YulFunctionCall", + "src": "4395:32:31" + }, + { + "kind": "number", + "nativeSrc": "4429:1:31", + "nodeType": "YulLiteral", + "src": "4429:1:31", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4388:6:31", + "nodeType": "YulIdentifier", + "src": "4388:6:31" + }, + "nativeSrc": "4388:43:31", + "nodeType": "YulFunctionCall", + "src": "4388:43:31" + }, + "nativeSrc": "4388:43:31", + "nodeType": "YulExpressionStatement", + "src": "4388:43:31" + }, + { + "nativeSrc": "4440:63:31", + "nodeType": "YulAssignment", + "src": "4440:63:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4456:9:31", + "nodeType": "YulIdentifier", + "src": "4456:9:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "4475:6:31", + "nodeType": "YulIdentifier", + "src": "4475:6:31" + }, + { + "kind": "number", + "nativeSrc": "4483:2:31", + "nodeType": "YulLiteral", + "src": "4483:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4471:3:31", + "nodeType": "YulIdentifier", + "src": "4471:3:31" + }, + "nativeSrc": "4471:15:31", + "nodeType": "YulFunctionCall", + "src": "4471:15:31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4492:2:31", + "nodeType": "YulLiteral", + "src": "4492:2:31", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4488:3:31", + "nodeType": "YulIdentifier", + "src": "4488:3:31" + }, + "nativeSrc": "4488:7:31", + "nodeType": "YulFunctionCall", + "src": "4488:7:31" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4467:3:31", + "nodeType": "YulIdentifier", + "src": "4467:3:31" + }, + "nativeSrc": "4467:29:31", + "nodeType": "YulFunctionCall", + "src": "4467:29:31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4452:3:31", + "nodeType": "YulIdentifier", + "src": "4452:3:31" + }, + "nativeSrc": "4452:45:31", + "nodeType": "YulFunctionCall", + "src": "4452:45:31" + }, + { + "kind": "number", + "nativeSrc": "4499:3:31", + "nodeType": "YulLiteral", + "src": "4499:3:31", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4448:3:31", + "nodeType": "YulIdentifier", + "src": "4448:3:31" + }, + "nativeSrc": "4448:55:31", + "nodeType": "YulFunctionCall", + "src": "4448:55:31" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4440:4:31", + "nodeType": "YulIdentifier", + "src": "4440:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4523:9:31", + "nodeType": "YulIdentifier", + "src": "4523:9:31" + }, + { + "kind": "number", + "nativeSrc": "4534:2:31", + "nodeType": "YulLiteral", + "src": "4534:2:31", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4519:3:31", + "nodeType": "YulIdentifier", + "src": "4519:3:31" + }, + "nativeSrc": "4519:18:31", + "nodeType": "YulFunctionCall", + "src": "4519:18:31" + }, + { + "name": "value2", + "nativeSrc": "4539:6:31", + "nodeType": "YulIdentifier", + "src": "4539:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4512:6:31", + "nodeType": "YulIdentifier", + "src": "4512:6:31" + }, + "nativeSrc": "4512:34:31", + "nodeType": "YulFunctionCall", + "src": "4512:34:31" + }, + "nativeSrc": "4512:34:31", + "nodeType": "YulExpressionStatement", + "src": "4512:34:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4566:9:31", + "nodeType": "YulIdentifier", + "src": "4566:9:31" + }, + { + "kind": "number", + "nativeSrc": "4577:2:31", + "nodeType": "YulLiteral", + "src": "4577:2:31", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4562:3:31", + "nodeType": "YulIdentifier", + "src": "4562:3:31" + }, + "nativeSrc": "4562:18:31", + "nodeType": "YulFunctionCall", + "src": "4562:18:31" + }, + { + "name": "value3", + "nativeSrc": "4582:6:31", + "nodeType": "YulIdentifier", + "src": "4582:6:31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4555:6:31", + "nodeType": "YulIdentifier", + "src": "4555:6:31" + }, + "nativeSrc": "4555:34:31", + "nodeType": "YulFunctionCall", + "src": "4555:34:31" + }, + "nativeSrc": "4555:34:31", + "nodeType": "YulExpressionStatement", + "src": "4555:34:31" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nativeSrc": "4625:6:31", + "nodeType": "YulIdentifier", + "src": "4625:6:31" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4637:9:31", + "nodeType": "YulIdentifier", + "src": "4637:9:31" + }, + { + "kind": "number", + "nativeSrc": "4648:3:31", + "nodeType": "YulLiteral", + "src": "4648:3:31", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4633:3:31", + "nodeType": "YulIdentifier", + "src": "4633:3:31" + }, + "nativeSrc": "4633:19:31", + "nodeType": "YulFunctionCall", + "src": "4633:19:31" + } + ], + "functionName": { + "name": "abi_encode_contract_IERC20", + "nativeSrc": "4598:26:31", + "nodeType": "YulIdentifier", + "src": "4598:26:31" + }, + "nativeSrc": "4598:55:31", + "nodeType": "YulFunctionCall", + "src": "4598:55:31" + }, + "nativeSrc": "4598:55:31", + "nodeType": "YulExpressionStatement", + "src": "4598:55:31" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "3760:899:31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3945:9:31", + "nodeType": "YulTypedName", + "src": "3945:9:31", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "3956:6:31", + "nodeType": "YulTypedName", + "src": "3956:6:31", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "3964:6:31", + "nodeType": "YulTypedName", + "src": "3964:6:31", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3972:6:31", + "nodeType": "YulTypedName", + "src": "3972:6:31", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3980:6:31", + "nodeType": "YulTypedName", + "src": "3980:6:31", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3988:6:31", + "nodeType": "YulTypedName", + "src": "3988:6:31", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3999:4:31", + "nodeType": "YulTypedName", + "src": "3999:4:31", + "type": "" + } + ], + "src": "3760:899:31" + } + ] + }, + "contents": "{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_contract_IERC20(offset) -> value\n {\n value := calldataload(offset)\n validator_revert_address(value)\n }\n function abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$1798(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let offset := calldataload(add(headStart, 64))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value2 := memPtr\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := abi_decode_contract_IERC20(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_contract$_IERC20_$1798_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_contract_IERC20(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$1798__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n let _1 := 32\n mstore(add(headStart, 32), 160)\n let length := mload(value1)\n mstore(add(headStart, 160), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 192), mload(add(add(value1, i), _1)))\n }\n mstore(add(add(headStart, length), 192), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 192)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n abi_encode_contract_IERC20(value4, add(headStart, 128))\n }\n}", + "id": 31, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80631b29e1ba1461004557806353ea54c514610067575b600080fd5b81801561005157600080fd5b50610065610060366004610312565b610087565b005b81801561007357600080fd5b50610065610082366004610364565b61028c565b6040516213f74f60e21b81526004810182905260009081906001600160a01b03851690624fdd3c906024016040805180830381865afa1580156100ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f2919061045c565b90925090506001600160a01b0381161580159061010f5750600082115b156102295760405163095ea7b360e01b81526001600160a01b038581166004830152602482018490526000919083169063095ea7b3906044016020604051808303816000875af1158015610167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018b919061048c565b9050806101c957604051633337e73160e01b81526001600160a01b038087166004830152831660248201526044810184905260640160405180910390fd5b6040516396591edd60e01b8152600481018590526001600160a01b038616906396591edd90602401600060405180830381600087803b15801561020b57600080fd5b505af115801561021f573d6000803e3d6000fd5b5050505050610286565b6040516396591edd60e01b8152600481018490526001600160a01b038516906396591edd9084906024016000604051808303818588803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b50505050505b50505050565b604051632ea5d6d960e11b81526001600160a01b03871690635d4badb2906102c090889088908890889088906004016104b5565b600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038116811461030f57600080fd5b50565b6000806040838503121561032557600080fd5b8235610330816102fa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803561035f816102fa565b919050565b60008060008060008060c0878903121561037d57600080fd5b8635610388816102fa565b95506020870135610398816102fa565b945060408701356001600160401b03808211156103b457600080fd5b818901915089601f8301126103c857600080fd5b8135818111156103da576103da61033e565b604051601f8201601f19908116603f011681019083821181831017156104025761040261033e565b816040528281528c602084870101111561041b57600080fd5b826020860160208301376000602084830101528098505050505050606087013592506080870135915061045060a08801610354565b90509295509295509295565b6000806040838503121561046f57600080fd5b825191506020830151610481816102fa565b809150509250929050565b60006020828403121561049e57600080fd5b815180151581146104ae57600080fd5b9392505050565b60018060a01b03861681526000602060a0602084015286518060a085015260005b818110156104f25788810183015185820160c0015282016104d6565b50600060c0828601015260c0601f19601f8301168501019250505084604083015283606083015261052e60808301846001600160a01b03169052565b969550505050505056fea264697066735822122029e813cb92ebb6f648beda08a2647d33accda438f63791562cab77d87c6f603764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B29E1BA EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0x53EA54C5 EQ PUSH2 0x67 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0x312 JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x65 PUSH2 0x82 CALLDATASIZE PUSH1 0x4 PUSH2 0x364 JUMP JUMPDEST PUSH2 0x28C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF2 SWAP2 SWAP1 PUSH2 0x45C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x48C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3337E731 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x280 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2EA5D6D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x5D4BADB2 SWAP1 PUSH2 0x2C0 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4B5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x330 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x35F DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x388 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x398 DUP2 PUSH2 0x2FA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3DA JUMPI PUSH2 0x3DA PUSH2 0x33E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x402 JUMPI PUSH2 0x402 PUSH2 0x33E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x41B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP9 POP POP POP POP POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x450 PUSH1 0xA0 DUP9 ADD PUSH2 0x354 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x481 DUP2 PUSH2 0x2FA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xA0 PUSH1 0x20 DUP5 ADD MSTORE DUP7 MLOAD DUP1 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI DUP9 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP3 ADD PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xC0 DUP3 DUP7 ADD ADD MSTORE PUSH1 0xC0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x52E PUSH1 0x80 DUP4 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xE8 SGT 0xCB SWAP3 0xEB 0xB6 0xF6 BASEFEE 0xBE 0xDA ADDMOD LOG2 PUSH5 0x7D33ACCDA4 CODESIZE 0xF6 CALLDATACOPY SWAP2 JUMP 0x2C 0xAB PUSH24 0xD87C6F603764736F6C634300081800330000000000000000 ", + "sourceMap": "471:2489:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:1104;;;;;;;;;;-1:-1:-1;1854:1104:27;;;;;:::i;:::-;;:::i;:::-;;1291:342;;;;;;;;;;-1:-1:-1;1291:342:27;;;;;:::i;:::-;;:::i;1854:1104::-;2031:56;;-1:-1:-1;;;2031:56:27;;;;;2334:25:31;;;1993:13:27;;;;-1:-1:-1;;;;;2031:47:27;;;;;2307:18:31;;2031:56:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1992:95;;-1:-1:-1;1992:95:27;-1:-1:-1;;;;;;2164:35:27;;;;;;:48;;;2211:1;2203:5;:9;2164:48;2160:792;;;2424:41;;-1:-1:-1;;;2424:41:27;;-1:-1:-1;;;;;2894:32:31;;;2424:41:27;;;2876:51:31;2943:18;;;2936:34;;;2408:13:27;;2424:20;;;;;;2849:18:31;;2424:41:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2408:57;;2485:8;2480:118;;2520:63;;-1:-1:-1;;;2520:63:27;;-1:-1:-1;;;;;3521:15:31;;;2520:63:27;;;3503:34:31;3573:15;;3553:18;;;3546:43;3605:18;;;3598:34;;;3438:18;;2520:63:27;;;;;;;2480:118;2641:53;;-1:-1:-1;;;2641:53:27;;;;;2334:25:31;;;-1:-1:-1;;;;;2641:44:27;;;;;2307:18:31;;2641:53:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2214:491;2160:792;;;2872:69;;-1:-1:-1;;;2872:69:27;;;;;2334:25:31;;;-1:-1:-1;;;;;2872:44:27;;;;;2925:5;;2307:18:31;;2872:69:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:792;1925:1033;;1854:1104;;:::o;1291:342::-;1515:111;;-1:-1:-1;;;1515:111:27;;-1:-1:-1;;;;;1515:51:27;;;;;:111;;1567:11;;1580:3;;1585:19;;1606:5;;1613:12;;1515:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:342;;;;;;:::o;14:131:31:-;-1:-1:-1;;;;;89:31:31;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:315::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:31:o;470:127::-;531:10;526:3;522:20;519:1;512:31;562:4;559:1;552:15;586:4;583:1;576:15;602:142;678:20;;707:31;678:20;707:31;:::i;:::-;602:142;;;:::o;749:1434::-;878:6;886;894;902;910;918;971:3;959:9;950:7;946:23;942:33;939:53;;;988:1;985;978:12;939:53;1027:9;1014:23;1046:31;1071:5;1046:31;:::i;:::-;1096:5;-1:-1:-1;1153:2:31;1138:18;;1125:32;1166:33;1125:32;1166:33;:::i;:::-;1218:7;-1:-1:-1;1276:2:31;1261:18;;1248:32;-1:-1:-1;;;;;1329:14:31;;;1326:34;;;1356:1;1353;1346:12;1326:34;1394:6;1383:9;1379:22;1369:32;;1439:7;1432:4;1428:2;1424:13;1420:27;1410:55;;1461:1;1458;1451:12;1410:55;1497:2;1484:16;1519:2;1515;1512:10;1509:36;;;1525:18;;:::i;:::-;1600:2;1594:9;1568:2;1654:13;;-1:-1:-1;;1650:22:31;;;1674:2;1646:31;1642:40;1630:53;;;1698:18;;;1718:22;;;1695:46;1692:72;;;1744:18;;:::i;:::-;1784:10;1780:2;1773:22;1819:2;1811:6;1804:18;1859:7;1854:2;1849;1845;1841:11;1837:20;1834:33;1831:53;;;1880:1;1877;1870:12;1831:53;1936:2;1931;1927;1923:11;1918:2;1910:6;1906:15;1893:46;1981:1;1976:2;1971;1963:6;1959:15;1955:24;1948:35;2002:6;1992:16;;;;;;;2055:2;2044:9;2040:18;2027:32;2017:42;;2106:3;2095:9;2091:19;2078:33;2068:43;;2130:47;2172:3;2161:9;2157:19;2130:47;:::i;:::-;2120:57;;749:1434;;;;;;;;:::o;2370:327::-;2464:6;2472;2525:2;2513:9;2504:7;2500:23;2496:32;2493:52;;;2541:1;2538;2531:12;2493:52;2570:9;2564:16;2554:26;;2623:2;2612:9;2608:18;2602:25;2636:31;2661:5;2636:31;:::i;:::-;2686:5;2676:15;;;2370:327;;;;;:::o;2981:277::-;3048:6;3101:2;3089:9;3080:7;3076:23;3072:32;3069:52;;;3117:1;3114;3107:12;3069:52;3149:9;3143:16;3202:5;3195:13;3188:21;3181:5;3178:32;3168:60;;3224:1;3221;3214:12;3168:60;3247:5;2981:277;-1:-1:-1;;;2981:277:31:o;3760:899::-;4065:1;4061;4056:3;4052:11;4048:19;4040:6;4036:32;4025:9;4018:51;3999:4;4088:2;4126:3;4121:2;4110:9;4106:18;4099:31;4159:6;4153:13;4203:6;4197:3;4186:9;4182:19;4175:35;4228:1;4238:141;4252:6;4249:1;4246:13;4238:141;;;4348:14;;;4344:23;;4338:30;4313:17;;;4332:3;4309:27;4302:67;4267:10;;4238:141;;;4242:3;4429:1;4423:3;4414:6;4403:9;4399:22;4395:32;4388:43;4499:3;4492:2;4488:7;4483:2;4475:6;4471:15;4467:29;4456:9;4452:45;4448:55;4440:63;;;;4539:6;4534:2;4523:9;4519:18;4512:34;4582:6;4577:2;4566:9;4562:18;4555:34;4598:55;4648:3;4637:9;4633:19;4625:6;-1:-1:-1;;;;;3717:31:31;3705:44;;3643:112;4598:55;3760:899;;;;;;;;:::o" + }, + "methodIdentifiers": { + "buyBookingToken(address,uint256)": "1b29e1ba", + "mintBookingToken(address,address,string,uint256,uint256,IERC20)": "53ea54c5" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenApprovalFailed\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"TokenApprovalFailed(address,address,uint256)\":[{\"details\":\"Token approval for the BookingToken address failed.\",\"params\":{\"amount\":\"amount of tokens to approve\",\"spender\":\"spender address (the BookingToken contract address)\",\"token\":\"token address\"}}]},\"kind\":\"dev\",\"methods\":{\"buyBookingToken(address,uint256)\":{\"details\":\"Buys a booking token with the specified price and payment token in the reservation.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"tokenId\":\"token id\"}},\"mintBookingToken(address,address,string,uint256,uint256,IERC20)\":{\"details\":\"Mints a booking token.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"expirationTimestamp\":\"expiration timestamp of the token in seconds\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"reservedFor\":\"address of the CM Account that can buy the token (generally the distributor)\",\"uri\":\"URI of the token\"}}},\"title\":\"BookingTokenOperator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Booking token operator contract is used by the {CMAccount} contract to mint and buy booking tokens. We made this a library so that we can use it in the {CMAccount} contract without increasing the size of the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingTokenOperator.sol\":\"BookingTokenOperator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x9f4d055ee7a2a9d0d17e511c943f103c7bd209926a4c8923ef7f3f4d072f2eca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81dacf1bd7d2879bd2e2456cea8fbe32765cbcff515795ed498e5dbfff54a97b\",\"dweb:/ipfs/QmZZW9QfyAyWpnPSqZrpbYPfC5igYBwS9CtjGpWBBCpzCY\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/IBookingToken.sol": { + "IBookingToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "buyReservedToken(uint256)": "96591edd", + "getReservationPrice(uint256)": "004fdd3c", + "safeMintWithReservation(address,string,uint256,uint256,address)": "5d4badb2" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyReservedToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"safeMintWithReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/IBookingToken.sol\":\"IBookingToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x7309c6fc3ffd4824a9b7c9c008f3c716ad021d355f2faec143dbe8c8702c2b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3120614a393d6239f071d309bb277fb490baaa48cc656ea36eb1976dd8e2627\",\"dweb:/ipfs/QmWzj21md4ceWyU9C8LagBupQNfnvDVuChDFNgzKngsbgo\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/ICMAccountManager.sol": { + "ICMAccountManager": { + "abi": [ + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAccountImplementation()": "9d825bc5", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "isCMAccount(address)": "12b357b5" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/ICMAccountManager.sol\":\"ICMAccountManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xf4e0bf117c89bba621ebf4b60a801804c2b4af3a34bb79833a35f10235d08dc1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bd2c8d56f48c71d1c122f075389bda7ea89011cd29fe95950fc0be408da95858\",\"dweb:/ipfs/QmQfVdKdhqAkAQLwiBzcptdpWrSSzMNqR3G3QxAKA8B8v6\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/partner/PartnerConfiguration.sol": { + "PartnerConfiguration": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllServiceHashes()": "42072bbd", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getSupportedTokens()": "d3c7c2c7", + "getWantedServiceHashes()": "136f50ca", + "offChainPaymentSupported()": "241bbbfc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceCapabilitiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ServiceFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"ServiceRestrictedRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}}},\"title\":\"PartnerConfiguration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"}},\"notice\":\"Partner Configuration is used by the {CMAccount} contract to register supported and wanted services by the partner.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/partner/PartnerConfiguration.sol\":\"PartnerConfiguration\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x6998e0652edba34b8168dad687606f6d82dd743cc928ffd7b4d489049de56af1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97e183226c2cb03d487b61adb01581fdea2956f60ef087a695e3b029d3ace3f8\",\"dweb:/ipfs/QmdN6KxCwcZLAd4hCSUT5JorLHRxMiiEwgSVwiAiEvg8Tv\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + } + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/deployed_addresses.json b/ignition/deployments/chain-501/deployed_addresses.json index f88d128..d60fb07 100644 --- a/ignition/deployments/chain-501/deployed_addresses.json +++ b/ignition/deployments/chain-501/deployed_addresses.json @@ -6,5 +6,7 @@ "CaminoMessengerModule#ManagerERC1967Proxy": "0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F", "CaminoMessengerModule#ManagerProxy": "0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F", "CaminoMessengerModule#BookingTokenERC1967Proxy": "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC", - "CaminoMessengerModule#BookingTokenProxy": "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC" + "CaminoMessengerModule#BookingTokenProxy": "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC", + "CMAccountVerifyChequeFixModule#BookingTokenOperator": "0x10133935503b4f958f6dFF783b628ba25aC010E3", + "CMAccountVerifyChequeFixModule#CMAccount": "0x0604d78E74bAab18b56eA5c4AAD106E01665f277" } diff --git a/ignition/deployments/chain-501/journal.jsonl b/ignition/deployments/chain-501/journal.jsonl index aba5a39..b624221 100644 --- a/ignition/deployments/chain-501/journal.jsonl +++ b/ignition/deployments/chain-501/journal.jsonl @@ -43,4 +43,10 @@ {"futureId":"CaminoMessengerModule#ManagerProxy.setBookingTokenAddress","networkInteraction":{"data":"0xc17e30bf000000000000000000000000e55e387f5474a012d1b048155e25ea78c7dbfbbc","id":1,"to":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} {"futureId":"CaminoMessengerModule#ManagerProxy.setBookingTokenAddress","networkInteractionId":1,"nonce":7,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x0fde467dc8895fcc1136fd60e9b889a687937d001511e1d8bff6552b2ba707ec"},"type":"TRANSACTION_SEND"} {"futureId":"CaminoMessengerModule#ManagerProxy.setBookingTokenAddress","hash":"0x0fde467dc8895fcc1136fd60e9b889a687937d001511e1d8bff6552b2ba707ec","networkInteractionId":1,"receipt":{"blockHash":"0x2553e17979b03c9478739ef6ac0ff3eb3094825e3134785cd1f8204ca0e6e590","blockNumber":545492,"logs":[{"address":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","data":"0x","logIndex":0,"topics":["0x8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e55e387f5474a012d1b048155e25ea78c7dbfbbc"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"CaminoMessengerModule#ManagerProxy.setBookingTokenAddress","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} \ No newline at end of file +{"futureId":"CaminoMessengerModule#ManagerProxy.setBookingTokenAddress","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"CMAccountVerifyChequeFixModule#BookingTokenOperator","contractAddress":"0x10133935503b4f958f6dFF783b628ba25aC010E3","contractName":"BookingTokenOperator","dependencies":[],"futureId":"CMAccountVerifyChequeFixModule#BookingTokenOperator","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"CMAccountVerifyChequeFixModule#CMAccount","constructorArgs":[],"contractName":"CMAccount","dependencies":["CMAccountVerifyChequeFixModule#BookingTokenOperator"],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","futureId":"CMAccountVerifyChequeFixModule#CMAccount","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{"BookingTokenOperator":"0x10133935503b4f958f6dFF783b628ba25aC010E3"},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CMAccountVerifyChequeFixModule#CMAccount","networkInteraction":{"data":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614f7462000104600039600081816129150152818161293e0152612c9f0152614f746000f3fe6080604052600436106103455760003560e01c806301ffc9a71461035157806308564c19146103865780630ede80d6146103a8578063136f50ca146103d8578063150b7a02146103fa57806318274da41461043e5780631aca63761461045e5780631c5db99e1461048057806320606b70146104a057806321b9b929146104c2578063241bbbfc146104f0578063248a9ca31461050557806326687c9f146105255780632f2ff15d14610545578063319d13f314610565578063337462741461058557806333e1a223146105a757806336568abe146105c7578063383aba87146105e757806339e4c7051461060957806341bf7c691461062957806342072bbd14610649578063432cf6391461065e5780634781ae531461067e5780634f1ef2861461069e5780634f3f4639146106b157806351889d6b146106d357806352d1902d146106f357806358e5cae0146107085780635c988994146107285780635e07f8691461074857806363e86cc814610768578063647d8f6d1461078a578063658db0af146107aa5780636d69fcaf146107cd5780636fc22cd1146107ed5780637512e55b1461080d578063763191901461082d5780637eec56c71461084d578063852b3ccb14610870578063857cdbb81461089257806385f438c1146108bf5780638c20f574146108e15780638f69347d146109015780639010d07c1461092157806391d1485414610941578063930659eb146109615780639db5dbe414610991578063a217fddf146109b1578063a31aa039146109c6578063a7d022f8146109e6578063ad3cb1cc14610a06578063b512463514610a37578063c162d7da14610a57578063c39409e114610a6c578063c6640e6814610a81578063c7b5914f14610aa1578063ca15c87314610ac1578063ccde65dc14610ae1578063d09445c214610b01578063d3c7c2c714610b23578063d547741f14610b45578063da47d85614610b65578063e0b78add14610b92578063e7bfce9a14610bb2578063e96cf7ad14610bd2578063ea79d07a14610be7578063eb5ea27314610bfc578063ebc20d2014610c1c578063ed24911d14610c3c578063ee3b641f14610c51578063f3fef3a314610c71578063f51acaea14610c91578063f72c0d8b14610cb157600080fd5b3661034c57005b600080fd5b34801561035d57600080fd5b5061037161036c366004613f0b565b610cd3565b60405190151581526020015b60405180910390f35b34801561039257600080fd5b5061039b610cfe565b60405161037d9190613fdf565b3480156103b457600080fd5b506103ca600080516020614edf83398151915281565b60405190815260200161037d565b3480156103e457600080fd5b506103ed610e28565b60405161037d9190613ff2565b34801561040657600080fd5b5061042561041536600461410e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161037d565b34801561044a57600080fd5b506103ca610459366004614179565b610e48565b34801561046a57600080fd5b5061047e6104793660046141ad565b610e56565b005b34801561048c57600080fd5b5061047e61049b36600461428c565b610f03565b3480156104ac57600080fd5b506103ca600080516020614eff83398151915281565b3480156104ce57600080fd5b506104e26104dd3660046142c0565b610f64565b60405161037d92919061435b565b3480156104fc57600080fd5b5061037161112d565b34801561051157600080fd5b506103ca610520366004614374565b611145565b34801561053157600080fd5b5061047e610540366004614374565b611165565b34801561055157600080fd5b5061047e61056036600461438d565b611201565b34801561057157600080fd5b5061039b610580366004614179565b611223565b34801561059157600080fd5b506103ca600080516020614e9f83398151915281565b3480156105b357600080fd5b5061047e6105c23660046143bd565b611231565b3480156105d357600080fd5b5061047e6105e236600461438d565b6113ed565b3480156105f357600080fd5b506103ca600080516020614dff83398151915281565b34801561061557600080fd5b5061047e61062436600461428c565b611420565b34801561063557600080fd5b5061047e610644366004614425565b61146f565b34801561065557600080fd5b506103ed611499565b34801561066a57600080fd5b5061047e610679366004614477565b6114b0565b34801561068a57600080fd5b506103ca6106993660046144ec565b6114e3565b61047e6106ac36600461455a565b611565565b3480156106bd57600080fd5b506106c6611584565b60405161037d91906145a9565b3480156106df57600080fd5b5061047e6106ee3660046145bd565b6115a2565b3480156106ff57600080fd5b506103ca611655565b34801561071457600080fd5b5061047e6107233660046145e9565b611672565b34801561073457600080fd5b5061047e610743366004614374565b6116fe565b34801561075457600080fd5b5061039b610763366004614374565b611739565b34801561077457600080fd5b506103ca600080516020614e1f83398151915281565b34801561079657600080fd5b5061047e6107a53660046142c0565b611841565b3480156107b657600080fd5b506107bf611a43565b60405161037d929190614652565b3480156107d957600080fd5b5061047e6107e8366004614660565b611a65565b3480156107f957600080fd5b5061047e61080836600461467d565b611a86565b34801561081957600080fd5b5061047e61082836600461469f565b611aa8565b34801561083957600080fd5b5061047e610848366004614660565b611ad2565b34801561085957600080fd5b50610862611af3565b60405161037d929190614776565b34801561087c57600080fd5b506103ca600080516020614f1f83398151915281565b34801561089e57600080fd5b506108b26108ad366004614660565b611cb8565b60405161037d91906147e8565b3480156108cb57600080fd5b506103ca600080516020614ebf83398151915281565b3480156108ed57600080fd5b5061047e6108fc36600461469f565b611d9d565b34801561090d57600080fd5b5061037161091c366004614374565b611dc7565b34801561092d57600080fd5b506106c661093c36600461467d565b611df8565b34801561094d57600080fd5b5061037161095c36600461438d565b611e26565b34801561096d57600080fd5b5061098161097c3660046147fb565b611e5c565b60405161037d9493929190614829565b34801561099d57600080fd5b5061047e6109ac3660046141ad565b611eb3565b3480156109bd57600080fd5b506103ca600081565b3480156109d257600080fd5b5061047e6109e1366004614844565b611f06565b3480156109f257600080fd5b5061047e610a01366004614861565b611f27565b348015610a1257600080fd5b506108b2604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a4357600080fd5b50610371610a52366004614179565b611f51565b348015610a6357600080fd5b506106c6611f5f565b348015610a7857600080fd5b506103ca611f7a565b348015610a8d57600080fd5b5061047e610a9c366004614660565b611f8f565b348015610aad57600080fd5b506103ca610abc3660046144ec565b61202a565b348015610acd57600080fd5b506103ca610adc366004614374565b612066565b348015610aed57600080fd5b5061047e610afc36600461455a565b612092565b348015610b0d57600080fd5b506103ca600080516020614e7f83398151915281565b348015610b2f57600080fd5b50610b386120b4565b60405161037d91906148a7565b348015610b5157600080fd5b5061047e610b6036600461438d565b6120ce565b348015610b7157600080fd5b50610b85610b80366004614374565b6120ea565b60405161037d91906148e8565b348015610b9e57600080fd5b50610371610bad366004614660565b612213565b348015610bbe57600080fd5b5061047e610bcd366004614660565b61222d565b348015610bde57600080fd5b506103ca61224e565b348015610bf357600080fd5b50610b38612263565b348015610c0857600080fd5b506103ca610c17366004614374565b61227d565b348015610c2857600080fd5b5061047e610c373660046148fb565b6122a8565b348015610c4857600080fd5b506103ca6122d2565b348015610c5d57600080fd5b506107bf610c6c366004614660565b6122dd565b348015610c7d57600080fd5b5061047e610c8c3660046145bd565b612318565b348015610c9d57600080fd5b5061047e610cac366004614179565b6123a0565b348015610cbd57600080fd5b506103ca600080516020614e3f83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610cf85750610cf8826123c9565b92915050565b60606000610d0a610e28565b9050600081516001600160401b03811115610d2757610d2761404b565b604051908082528060200260200182016040528015610d5a57816020015b6060815260200190600190039081610d455790505b50905060005b8251811015610e2157610d71611f5f565b6001600160a01b0316635a81a626848381518110610d9157610d91614954565b60200260200101516040518263ffffffff1660e01b8152600401610db791815260200190565b600060405180830381865afa158015610dd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfc919081019061496a565b828281518110610e0e57610e0e614954565b6020908102919091010152600101610d60565b5092915050565b60606000610e346123fe565b9050610e4281600901612422565b91505090565b6000610cf8610c178361242f565b600080516020614ebf833981519152610e6e816124a5565b6001600160a01b038316610e9557604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050505050565b600080516020614e7f833981519152610f1b816124a5565b60005b8251811015610f5f576000610f4b848381518110610f3e57610f3e614954565b602002602001015161242f565b9050610f56816124af565b50600101610f1e565b505050565b6000806001600160a01b038a163014610f9b5789604051637b7d696f60e01b8152600401610f9291906145a9565b60405180910390fd5b610fa3611f5f565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b8152600401610fce91906145a9565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f91906149d7565b61102e5788604051633f2c64af60e01b8152600401610f9291906145a9565b83421061105157604051636453b2e560e01b815260048101859052602401610f92565b6110618a8a8a8a8a8a8a8a612526565b915061106c82612213565b61108b578160405163248d101d60e11b8152600401610f9291906145a9565b6000611095612552565b6001600160a01b03808516600090815260208381526040808320938e168352929052206001810154919250908810156110e85760018101546040516307c83fcf60e41b8152610f92918a91600401614652565b8054891161110d578054604051632256490160e11b8152610f92918b91600401614652565b600181015461111c9089614a0a565b925050509850989650505050505050565b6000806111386123fe565b6003015460ff1692915050565b600080611150612576565b60009384526020525050604090206001015490565b61116d61259a565b600080516020614f1f833981519152611185816124a5565b7310133935503b4f958f6dFF783b628ba25aC010E3631b29e1ba6111a7611584565b846040518363ffffffff1660e01b81526004016111c592919061435b565b60006040518083038186803b1580156111dd57600080fd5b505af41580156111f1573d6000803e3d6000fd5b50505050506111fe6125d0565b50565b61120a82611145565b611213816124a5565b61121d83836125e1565b50505050565b6060610cf86107638361242f565b600061123b612623565b805490915060ff600160401b82041615906001600160401b03166000811580156112625750825b90506000826001600160401b0316600114801561127e5750303b155b90508115801561128c575080155b156112aa5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156112d357845460ff60401b1916600160401b1785555b6112db612647565b6112e3612647565b6112eb612651565b6112f66000886125e1565b5061130f600080516020614e7f833981519152886125e1565b50611328600080516020614e9f833981519152886125e1565b50611341600080516020614e3f833981519152876125e1565b50600061134c6126eb565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e8000062015180611398828261270f565b50505083156113e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146114165760405163334bd91960e11b815260040160405180910390fd5b610f5f8282612732565b600080516020614e7f833981519152611438816124a5565b60005b8251811015610f5f57600061145b848381518110610f3e57610f3e614954565b90506114668161276b565b5060010161143b565b600080516020614e7f833981519152611487816124a5565b610f5f6114938461242f565b836127d9565b606060006114a56123fe565b9050610e4281612422565b600080516020614e7f8339815191526114c8816124a5565b6114dc6114d48661242f565b858486612834565b5050505050565b60408051600080516020614edf83398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b61156d61290a565b61157682612998565b6115808282612adb565b5050565b60008061158f6126eb565b600101546001600160a01b031692915050565b600080516020614e9f8339815191526115ba816124a5565b6115c382612b8f565b6115db600080516020614e1f833981519152846125e1565b506115f4600080516020614f1f833981519152846125e1565b5061160d600080516020614dff833981519152846125e1565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a2610f5f6001600160a01b03841683612bfd565b600061165f612c94565b50600080516020614e5f83398151915290565b600080516020614f1f83398151915261168a816124a5565b7310133935503b4f958f6dFF783b628ba25aC010E36353ea54c56116ac611584565b88888888886040518763ffffffff1660e01b81526004016116d296959493929190614a1d565b60006040518083038186803b1580156116ea57600080fd5b505af41580156113e1573d6000803e3d6000fd5b61170661259a565b600080516020614dff83398151915261171e816124a5565b61172782612b8f565b61173082612cdd565b506111fe6125d0565b606060006117456123fe565b90506117518382612e12565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b828210156118355783829060005260206000200180546117a890614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546117d490614a67565b80156118215780601f106117f657610100808354040283529160200191611821565b820191906000526020600020905b81548152906001019060200180831161180457829003601f168201915b505050505081526020019060010190611789565b50505050915050919050565b61184961259a565b60008061185c8a8a8a8a8a8a8a8a610f64565b9150915061186e828989898989612e3c565b600061271061187b611f5f565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190614aa1565b6118e69084614aba565b6118f09190614ad1565b905060006118fe8284614a0a565b90508a6001600160a01b03168c6001600160a01b031614611940576000611923612552565b9050838160010160008282546119399190614af3565b9091555050505b6119bc8261194c611f5f565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad9190614b06565b6001600160a01b031690612bfd565b6119cf6001600160a01b038c1682612bfd565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a350505050610ef96125d0565b6000806000611a50612ea7565b90508060020154816003015492509250509091565b600080516020614e7f833981519152611a7d816124a5565b61158082612ecb565b600080516020614e9f833981519152611a9e816124a5565b610f5f8383612f37565b600080516020614e7f833981519152611ac0816124a5565b610f5f611acc8461242f565b83612f84565b600080516020614e7f833981519152611aea816124a5565b61158082612ffa565b6060806000611b00611499565b9050600081516001600160401b03811115611b1d57611b1d61404b565b604051908082528060200260200182016040528015611b5057816020015b6060815260200190600190039081611b3b5790505b509050600082516001600160401b03811115611b6e57611b6e61404b565b604051908082528060200260200182016040528015611ba757816020015b611b94613e0c565b815260200190600190039081611b8c5790505b50905060005b8351811015611cad57611bbe611f5f565b6001600160a01b0316635a81a626858381518110611bde57611bde614954565b60200260200101516040518263ffffffff1660e01b8152600401611c0491815260200190565b600060405180830381865afa158015611c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c49919081019061496a565b838281518110611c5b57611c5b614954565b6020026020010181905250611c88848281518110611c7b57611c7b614954565b60200260200101516120ea565b828281518110611c9a57611c9a614954565b6020908102919091010152600101611bad565b509094909350915050565b60606000611cc46123fe565b9050611cd36006820184613066565b611cf2578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b038316600090815260088201602052604090208054611d1790614a67565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4390614a67565b8015611d905780601f10611d6557610100808354040283529160200191611d90565b820191906000526020600020905b815481529060010190602001808311611d7357829003601f168201915b5050505050915050919050565b600080516020614e7f833981519152611db5816124a5565b610f5f611dc18461242f565b8361307b565b600080611dd26123fe565b9050611dde8382612e12565b600092835260020160205250604090206001015460ff1690565b600080611e036131e3565b6000858152602082905260409020909150611e1e9084613207565b949350505050565b600080611e31612576565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000806000806000611e6c612552565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b600080516020614ebf833981519152611ecb816124a5565b6001600160a01b038316611ef257604051633a954ecd60e21b815260040160405180910390fd5b61121d6001600160a01b0385168484613213565b600080516020614e7f833981519152611f1e816124a5565b6115808261326b565b600080516020614e7f833981519152611f3f816124a5565b610f5f611f4b8461242f565b836132c2565b6000610cf861091c8361242f565b600080611f6a6126eb565b546001600160a01b031692915050565b600080611f856126eb565b6002015492915050565b600080516020614e9f833981519152611fa7816124a5565b611fbf600080516020614e1f83398151915283612732565b50611fd8600080516020614f1f83398151915283612732565b50611ff1600080516020614dff83398151915283612732565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006120346122d2565b612043898989898989896114e3565b60405161190160f01b602082015260228101929092526042820152606201611542565b6000806120716131e3565b600084815260208290526040902090915061208b9061332f565b9392505050565b600080516020614e7f8339815191526120aa816124a5565b610f5f8383613339565b606060006120c06123fe565b9050610e4260048201612422565b6120d782611145565b6120e0816124a5565b61121d8383612732565b6120f2613e0c565b60006120fc6123fe565b90506121088382612e12565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b8282101561220457838290600052602060002001805461217790614a67565b80601f01602080910402602001604051908101604052809291908181526020018280546121a390614a67565b80156121f05780601f106121c5576101008083540402835291602001916121f0565b820191906000526020600020905b8154815290600101906020018083116121d357829003601f168201915b505050505081526020019060010190612158565b50505091525090949350505050565b6000610cf8600080516020614e1f83398151915283611e26565b600080516020614e7f833981519152612245816124a5565b611580826133d5565b600080612259612552565b6001015492915050565b6060600061226f6123fe565b9050610e4281600601612422565b6000806122886123fe565b90506122948382612e12565b600092835260020160205250604090205490565b600080516020614e7f8339815191526122c0816124a5565b610f5f6122cc8461242f565b8361346e565b600080611f85612552565b60008060006122ea612ea7565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b61232061259a565b600080516020614ebf833981519152612338816124a5565b61234182612b8f565b6123546001600160a01b03841683612bfd565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161238f91815260200190565b60405180910390a2506115806125d0565b600080516020614e7f8339815191526123b8816124a5565b6115806123c48361242f565b6134dd565b60006001600160e01b03198216637965db0b60e01b1480610cf857506301ffc9a760e01b6001600160e01b0319831614610cf8565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061208b83613578565b6000612439611f5f565b6001600160a01b031663352af39a836040518263ffffffff1660e01b815260040161246491906147e8565b602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614aa1565b6111fe81336135d4565b60006124b96123fe565b905060006124ca60098301846135ff565b9050806124ed57604051631a1e056960e01b815260048101849052602401610f92565b6040518381527f7acacfd576383587962277516962c289d19f807be443f4e303ab45ace24931ac906020015b60405180910390a1505050565b6000806125388a8a8a8a8a8a8a61202a565b9050612544818461360b565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006125a4613635565b8054909150600119016125ca57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006125da613635565b6001905550565b6000806125ec6131e3565b905060006125fa8585613659565b90508015611e1e57600085815260208390526040902061261a90856136fa565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b61264f61370f565b565b61265961370f565b6000612663612552565b6040519091506126cb90600080516020614eff833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614829565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b61271761370f565b6000612721612ea7565b600281019390935550600390910155565b60008061273d6131e3565b9050600061274b8585613734565b90508015611e1e57600085815260208390526040902061261a90856137ac565b60006127756123fe565b9050600061278660098301846137c1565b9050806127a957604051637eae59f160e11b815260048101849052602401610f92565b6040518381527ff0dd3de472ddcd75ae2c17728a45801355fb6dd8615a7c53c15504b4279c09be90602001612519565b60006127e36123fe565b90506127ef8382612e12565b600083815260028201602052604090819020839055517f8db4dceeae8d620782d356dec6a0148e893ff28620319f10f53dd2232b197897906125199085908590614652565b600061283e6123fe565b9050600061284c82876135ff565b90508061286e576040516221e3bb60e31b815260048101879052602401610f92565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff1916911515919091179055518051939492936128cc938501929190910190613e2f565b50506040518781527f8f531e5ede07d5741fd086bb787ed399a64704eb757b87cc80cf6635b274e5b5915060200160405180910390a1505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061297a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661296e6137cd565b6001600160a01b031614155b1561264f5760405163703e46dd60e11b815260040160405180910390fd5b600080516020614e3f8339815191526129b0816124a5565b60006129ba611f5f565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b06565b90506000612a276137cd565b9050836001600160a01b0316816001600160a01b031603612a5f5780846040516382afabc160e01b8152600401610f92929190614b23565b816001600160a01b0316846001600160a01b031614612a9557818460405163699a021f60e11b8152600401610f92929190614b23565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b35575060408051601f3d908101601f19168201909252612b3291810190614aa1565b60015b612b545781604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f8339815191528114612b8557604051632a87526960e21b815260048101829052602401610f92565b610f5f83836137e9565b6000612b99611f7a565b90506000612ba561224e565b905081811015610f5f576000612bbb8284614a0a565b90506000612bc98247614a0a565b9050808511156114dc576040516344c8760560e11b8152600481018290526024810183905260448101869052606401610f92565b80471015612c20573060405163cd78605960e01b8152600401610f9291906145a9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c6d576040519150601f19603f3d011682016040523d82523d6000602084013e612c72565b606091505b5050905080610f5f57604051630a12f52160e11b815260040160405180910390fd5b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461264f5760405163703e46dd60e11b815260040160405180910390fd5b6000612ce7612ea7565b90508060020154821115612d1657806002015482604051631728bc5b60e31b8152600401610f92929190614652565b6003810154336000908152602083905260409020544291612d3691614af3565b811115612d5e5733600090815260018301602090815260408083208390559084905290208190555b6002820154336000908152600184016020526040902054612d80908590614af3565b1115612da75781600201548360405163d54b188760e01b8152600401610f92929190614652565b33600090815260018301602052604081208054859290612dc8908490614af3565b90915550612dd890503384612bfd565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200160405180910390a2505050565b612e1c818361383f565b61158057604051631e96f6ed60e21b815260048101839052602401610f92565b6000612e46612552565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000612ed56123fe565b90506000612ee660048301846136fa565b905080612f085782604051632872fbf960e11b8152600401610f9291906145a9565b7fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f8360405161251991906145a9565b6000612f41612ea7565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906125199085908590614652565b6000612f8e6123fe565b9050612f9a8382612e12565b600083815260028083016020908152604083209091018054600181018255908352912001612fc88382614ba2565b507f1cd139430ed537ab9e8086952076cce01edd5ba6e30907af0ffe3709fd3139e68383604051612519929190614c5b565b60006130046123fe565b9050600061301560048301846137ac565b9050806130375782604051631532e67160e21b8152600401610f9291906145a9565b7f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af28360405161251991906145a9565b600061208b836001600160a01b038416613847565b60006130856123fe565b90506130918382612e12565b600083815260028083016020526040822001905b81548110156114dc57836040516020016130bf9190614c74565b604051602081830303815290604052805190602001208282815481106130e7576130e7614954565b906000526020600020016040516020016131019190614c90565b60405160208183030381529060405280519060200120036131db578154829061312c90600190614a0a565b8154811061313c5761313c614954565b9060005260206000200182828154811061315857613158614954565b90600052602060002001908161316e9190614d06565b508180548061317f5761317f614dd2565b60019003818190600052602060002001600061319b9190613e85565b90557ffc8d82c9e7e7938446da05458183efa5916c443a2bab87f97f94a8d47742b01485856040516131ce929190614c5b565b60405180910390a16114dc565b6001016130a5565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600061208b838361385f565b610f5f83846001600160a01b031663a9059cbb858560405160240161323992919061435b565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613889565b60006132756123fe565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b60006132cc6123fe565b90506132d88382612e12565b6000838152600282016020908152604091829020600101805460ff19168515159081179091558251868152918201527f1b76230b39d2d0c1a2a77a90c170190d2280796ed56b280177256ce39df1a6649101612519565b6000610cf8825490565b60006133436123fe565b9050600061335460068301856136fa565b9050806133765783604051631a6107e360e31b8152600401610f9291906145a9565b6001600160a01b0384166000908152600883016020526040902061339a8482614ba2565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b60006133df6123fe565b905060006133f060068301846137ac565b905080613412578260405163ba650b5f60e01b8152600401610f9291906145a9565b6001600160a01b0383166000908152600883016020526040812061343591613e85565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b60006134786123fe565b90506134848382612e12565b600083815260028083016020908152604090922084516134ac93919092019190850190613e2f565b506040518381527fa616bfc5bb0e46c6cad727e1b55e3685067e1296d962a7f37017874a27aa009890602001612519565b60006134e76123fe565b905060006134f582846137c1565b90508061351857604051631e96f6ed60e21b815260048101849052602401610f92565b600083815260028084016020526040822082815560018101805460ff19169055919061354690830182613ebf565b50506040518381527f94da5eeca10d4d6ee8455f99240c10b0c74b0cf5bf754afb81c81e2704b9c42790602001612519565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135c857602002820191906000526020600020905b8154815260200190600101908083116135b4575b50505050509050919050565b6135de8282611e26565b61158057808260405163e2517d3f60e01b8152600401610f9292919061435b565b600061208b83836138e3565b60008060008061361b868661392d565b92509250925061362b828261397a565b5090949350505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080613664612576565b90506136708484611e26565b6136f0576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556136a63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610cf8565b6000915050610cf8565b600061208b836001600160a01b0384166138e3565b613717613a33565b61264f57604051631afcd79f60e31b815260040160405180910390fd5b60008061373f612576565b905061374b8484611e26565b156136f0576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610cf8565b600061208b836001600160a01b038416613a4d565b600061208b8383613a4d565b600080516020614e5f833981519152546001600160a01b031690565b6137f282613b36565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561383757610f5f8282613b92565b611580613c08565b600061208b83835b60009081526001919091016020526040902054151590565b600082600001828154811061387657613876614954565b9060005260206000200154905092915050565b600061389e6001600160a01b03841683613c27565b905080516000141580156138c35750808060200190518101906138c191906149d7565b155b15610f5f5782604051635274afe760e01b8152600401610f9291906145a9565b60006138ef8383613847565b61392557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cf8565b506000610cf8565b600080600083516041036139675760208401516040850151606086015160001a61395988828585613c35565b955095509550505050613973565b50508151600091506002905b9250925092565b600082600381111561398e5761398e614de8565b03613997575050565b60018260038111156139ab576139ab614de8565b036139c95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156139dd576139dd614de8565b036139fe5760405163fce698f760e01b815260048101829052602401610f92565b6003826003811115613a1257613a12614de8565b03611580576040516335e2f38360e21b815260048101829052602401610f92565b6000613a3d612623565b54600160401b900460ff16919050565b600081815260018301602052604081205480156136f0576000613a71600183614a0a565b8554909150600090613a8590600190614a0a565b9050808214613aea576000866000018281548110613aa557613aa5614954565b9060005260206000200154905080876000018481548110613ac857613ac8614954565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613afb57613afb614dd2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cf8565b806001600160a01b03163b600003613b635780604051634c9c8ce360e01b8152600401610f9291906145a9565b600080516020614e5f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613baf9190614c74565b600060405180830381855af49150503d8060008114613bea576040519150601f19603f3d011682016040523d82523d6000602084013e613bef565b606091505b5091509150613bff858383613cfa565b95945050505050565b341561264f5760405163b398979f60e01b815260040160405180910390fd5b606061208b83836000613d46565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841115613c665750600091506003905082613cf0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613cba573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce657506000925060019150829050613cf0565b9250600091508190505b9450945094915050565b606082613d0f57613d0a82613de3565b61208b565b8151158015613d2657506001600160a01b0384163b155b15610e215783604051639996b31560e01b8152600401610f9291906145a9565b606081471015613d6b573060405163cd78605960e01b8152600401610f9291906145a9565b600080856001600160a01b03168486604051613d879190614c74565b60006040518083038185875af1925050503d8060008114613dc4576040519150601f19603f3d011682016040523d82523d6000602084013e613dc9565b606091505b5091509150613dd9868383613cfa565b9695505050505050565b805115613df35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b828054828255906000526020600020908101928215613e75579160200282015b82811115613e755782518290613e659082614ba2565b5091602001919060010190613e4f565b50613e81929150613ed9565b5090565b508054613e9190614a67565b6000825580601f10613ea1575050565b601f0160209004906000526020600020908101906111fe9190613ef6565b50805460008255906000526020600020908101906111fe91905b80821115613e81576000613eed8282613e85565b50600101613ed9565b5b80821115613e815760008155600101613ef7565b600060208284031215613f1d57600080fd5b81356001600160e01b03198116811461208b57600080fd5b60005b83811015613f50578181015183820152602001613f38565b50506000910152565b60008151808452613f71816020860160208601613f35565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613fd257601f19868403018952613fc0838351613f59565b98840198925090830190600101613fa4565b5090979650505050505050565b60208152600061208b6020830184613f85565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783518352928401929184019160010161400e565b50909695505050505050565b6001600160a01b03811681146111fe57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156140895761408961404b565b604052919050565b60006001600160401b038211156140aa576140aa61404b565b50601f01601f191660200190565b600082601f8301126140c957600080fd5b81356140dc6140d782614091565b614061565b8181528460208386010111156140f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561412457600080fd5b843561412f81614036565b9350602085013561413f81614036565b92506040850135915060608501356001600160401b0381111561416157600080fd5b61416d878288016140b8565b91505092959194509250565b60006020828403121561418b57600080fd5b81356001600160401b038111156141a157600080fd5b611e1e848285016140b8565b6000806000606084860312156141c257600080fd5b83356141cd81614036565b925060208401356141dd81614036565b929592945050506040919091013590565b600082601f8301126141ff57600080fd5b813560206001600160401b038083111561421b5761421b61404b565b8260051b61422a838201614061565b938452858101830193838101908886111561424457600080fd5b84880192505b85831015614280578235848111156142625760008081fd5b6142708a87838c01016140b8565b835250918401919084019061424a565b98975050505050505050565b60006020828403121561429e57600080fd5b81356001600160401b038111156142b457600080fd5b611e1e848285016141ee565b600080600080600080600080610100898b0312156142dd57600080fd5b88356142e881614036565b975060208901356142f881614036565b9650604089013561430881614036565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561433f57600080fd5b61434b8b828c016140b8565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561438657600080fd5b5035919050565b600080604083850312156143a057600080fd5b8235915060208301356143b281614036565b809150509250929050565b600080600080600060a086880312156143d557600080fd5b85356143e081614036565b945060208601356143f081614036565b935060408601359250606086013561440781614036565b9150608086013561441781614036565b809150509295509295909350565b6000806040838503121561443857600080fd5b82356001600160401b0381111561444e57600080fd5b61445a858286016140b8565b95602094909401359450505050565b80151581146111fe57600080fd5b6000806000806080858703121561448d57600080fd5b84356001600160401b03808211156144a457600080fd5b6144b0888389016140b8565b955060208701359450604087013591506144c982614469565b909250606086013590808211156144df57600080fd5b5061416d878288016141ee565b600080600080600080600060e0888a03121561450757600080fd5b873561451281614036565b9650602088013561452281614036565b9550604088013561453281614036565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806040838503121561456d57600080fd5b823561457881614036565b915060208301356001600160401b0381111561459357600080fd5b61459f858286016140b8565b9150509250929050565b6001600160a01b0391909116815260200190565b600080604083850312156145d057600080fd5b82356145db81614036565b946020939093013593505050565b600080600080600060a0868803121561460157600080fd5b853561460c81614036565b945060208601356001600160401b0381111561462757600080fd5b614633888289016140b8565b9450506040860135925060608601359150608086013561441781614036565b918252602082015260400190565b60006020828403121561467257600080fd5b813561208b81614036565b6000806040838503121561469057600080fd5b50508035926020909101359150565b600080604083850312156146b257600080fd5b82356001600160401b03808211156146c957600080fd5b6146d5868387016140b8565b935060208501359150808211156146eb57600080fd5b5061459f858286016140b8565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b8181101561476957607f19898703018352614757868551613f59565b9550928401929184019160010161473b565b5093979650505050505050565b6040815260006147896040830185613f85565b6020838203818501528185518084528284019150828160051b85010183880160005b838110156147d957601f198784030185526147c78383516146f8565b948601949250908501906001016147ab565b50909998505050505050505050565b60208152600061208b6020830184613f59565b6000806040838503121561480e57600080fd5b823561481981614036565b915060208301356143b281614036565b93845260208401929092526040830152606082015260800190565b60006020828403121561485657600080fd5b813561208b81614469565b6000806040838503121561487457600080fd5b82356001600160401b0381111561488a57600080fd5b614896858286016140b8565b92505060208301356143b281614469565b6020808252825182820181905260009190848201906040850190845b8181101561402a5783516001600160a01b0316835292840192918401916001016148c3565b60208152600061208b60208301846146f8565b6000806040838503121561490e57600080fd5b82356001600160401b038082111561492557600080fd5b614931868387016140b8565b9350602085013591508082111561494757600080fd5b5061459f858286016141ee565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561497c57600080fd5b81516001600160401b0381111561499257600080fd5b8201601f810184136149a357600080fd5b80516149b16140d782614091565b8181528560208385010111156149c657600080fd5b613bff826020830160208601613f35565b6000602082840312156149e957600080fd5b815161208b81614469565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cf857610cf86149f4565b600060018060a01b038089168352808816602084015260c06040840152614a4760c0840188613f59565b6060840196909652608083019490945250911660a0909101529392505050565b600181811c90821680614a7b57607f821691505b602082108103614a9b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614ab357600080fd5b5051919050565b8082028115828204841417610cf857610cf86149f4565b600082614aee57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cf857610cf86149f4565b600060208284031215614b1857600080fd5b815161208b81614036565b6001600160a01b0392831681529116602082015260400190565b601f821115610f5f576000816000526020600020601f850160051c81016020861015614b665750805b601f850160051c820191505b81811015614b8557828155600101614b72565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614bbb57614bbb61404b565b614bcf81614bc98454614a67565b84614b3d565b602080601f831160018114614bfe5760008415614bec5750858301515b614bf68582614b8d565b865550614b85565b600085815260208120601f198616915b82811015614c2d57888601518255948401946001909101908401614c0e565b5085821015614c4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611e1e6040830184613f59565b60008251614c86818460208701613f35565b9190910192915050565b6000808354614c9e81614a67565b60018281168015614cb65760018114614ccb57614cfa565b60ff1984168752821515830287019450614cfa565b8760005260208060002060005b85811015614cf15781548a820152908401908201614cd8565b50505082870194505b50929695505050505050565b818103614d11575050565b614d1b8254614a67565b6001600160401b03811115614d3257614d3261404b565b614d4081614bc98454614a67565b6000601f821160018114614d6e5760008315614d5c5750848201545b614d668482614b8d565b8555506114dc565b600085815260209020601f19841690600086815260209020845b83811015614da85782860154825560019586019590910190602001614d88565b5085831015614c4b5793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa2646970667358221220d4fe695f798b2cdbd93ac75abfc29f73ff41617d251ff28aea4f45601429b4c364736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CMAccountVerifyChequeFixModule#CMAccount","networkInteractionId":1,"nonce":25,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x0d052a6f5629edd9f3e33d66fd4e9d4b93db0b785f0242b1632205dabfe49116"},"type":"TRANSACTION_SEND"} +{"futureId":"CMAccountVerifyChequeFixModule#CMAccount","hash":"0x0d052a6f5629edd9f3e33d66fd4e9d4b93db0b785f0242b1632205dabfe49116","networkInteractionId":1,"receipt":{"blockHash":"0x9edd76c833786e2b9121c5375b8641d5a249168d41add9d978935b4df2320785","blockNumber":554093,"contractAddress":"0x0604d78E74bAab18b56eA5c4AAD106E01665f277","logs":[{"address":"0x0604d78E74bAab18b56eA5c4AAD106E01665f277","data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff","logIndex":0,"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CMAccountVerifyChequeFixModule#CMAccount","result":{"address":"0x0604d78E74bAab18b56eA5c4AAD106E01665f277","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} \ No newline at end of file From 459251387170b19ffe806f7a39274955d62b5431 Mon Sep 17 00:00:00 2001 From: Ekrem Seren Date: Mon, 9 Sep 2024 21:06:26 +0300 Subject: [PATCH 3/4] add account:set-implementation task to manager scope --- tasks/manager.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tasks/manager.js b/tasks/manager.js index 0d6b54c..7f9e563 100644 --- a/tasks/manager.js +++ b/tasks/manager.js @@ -163,8 +163,17 @@ MANAGER_SCOPE.task("role:members", "List role members") console.log(members); }); -MANAGER_SCOPE.task("accounts:list", "List CM Accounts").setAction(async (taskArgs, hre) => { +MANAGER_SCOPE.task("account:list", "List CM Accounts").setAction(async (taskArgs, hre) => { await hre.run({ scope: "manager", task: "role:members" }, { role: "CMACCOUNT_ROLE" }); }); +MANAGER_SCOPE.task("account:set-implementation", "Set CMAccount implementation address") + .addParam("address", "Implementation address to set as the new CMAccount impl") + .setAction(async (taskArgs, hre) => { + const manager = await getManager(hre); + const tx = await manager.setAccountImplementation(taskArgs.address); + const txReceipt = await tx.wait(); + console.log("Tx:", txReceipt.hash); + }); + module.exports = {}; From 769a623839290ec288b47c0677d3dd165876715b Mon Sep 17 00:00:00 2001 From: Ekrem Seren Date: Mon, 9 Sep 2024 21:31:53 +0300 Subject: [PATCH 4/4] add cm account upgrade task --- tasks/account.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tasks/account.js b/tasks/account.js index 3517d34..728cd75 100644 --- a/tasks/account.js +++ b/tasks/account.js @@ -324,4 +324,28 @@ ACCOUNT_SCOPE.task("service:list", "List supported services from CMAccount") } }); +ACCOUNT_SCOPE.task("upgrade", "Upgrade CMAccount implementation") + .addParam("privateKey", "Private key to use") + .addParam("cmAccount", "CMAccount address") + .setAction(async (taskArgs, hre) => { + const cmAccount = await getCMAccount(taskArgs.cmAccount); + console.log("CMAccount:", taskArgs.cmAccount); + + // Get new implementation + const manager = await getManager(hre); + const implementation = await manager.getAccountImplementation(); + console.log("New Implementation on the Manager:", implementation); + + try { + const signer = new ethers.Wallet(taskArgs.privateKey, ethers.provider); + console.log("Upgrading CMAccount implementation..."); + console.log("Signer:", signer.address); + const tx = await cmAccount.connect(signer).upgradeToAndCall(implementation, "0x"); + const receipt = await tx.wait(); + console.log("Tx:", receipt.hash); + } catch (error) { + handleTransactionError(error, cmAccount); + } + }); + module.exports = {};